From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- taskcluster/.yamllint | 15 + taskcluster/ci/addon/kind.yml | 37 + taskcluster/ci/are-we-esmified-yet/kind.yml | 42 + taskcluster/ci/artifact-build/kind.yml | 54 + taskcluster/ci/attribution-l10n/kind.yml | 130 + taskcluster/ci/attribution/kind.yml | 125 + taskcluster/ci/balrog/kind.yml | 31 + taskcluster/ci/beetmover-apt/kind.yml | 26 + taskcluster/ci/beetmover-checksums/kind.yml | 26 + taskcluster/ci/beetmover-geckoview/kind.yml | 64 + taskcluster/ci/beetmover-repackage/kind.yml | 67 + taskcluster/ci/beetmover-source/kind.yml | 19 + taskcluster/ci/bootstrap/kind.yml | 80 + taskcluster/ci/bouncer-locations/kind.yml | 52 + taskcluster/ci/build-fat-aar/kind.yml | 167 + taskcluster/ci/build-mac-notarization/kind.yml | 29 + taskcluster/ci/build-mac-signing/kind.yml | 28 + taskcluster/ci/build-signing/kind.yml | 33 + taskcluster/ci/build/android-asan.yml | 75 + taskcluster/ci/build/android-stuff.yml | 53 + taskcluster/ci/build/android.yml | 641 + taskcluster/ci/build/kind.yml | 85 + taskcluster/ci/build/linux-base-toolchains.yml | 160 + taskcluster/ci/build/linux.yml | 1744 ++ taskcluster/ci/build/macosx-native.yml | 145 + taskcluster/ci/build/macosx.yml | 829 + taskcluster/ci/build/windows-mingw.yml | 174 + taskcluster/ci/build/windows.yml | 1831 ++ taskcluster/ci/code-review/kind.yml | 41 + taskcluster/ci/condprof/kind.yml | 135 + taskcluster/ci/config.yml | 743 + taskcluster/ci/cron-bouncer-check/kind.yml | 82 + taskcluster/ci/diffoscope/kind.yml | 122 + taskcluster/ci/docker-image/kind.yml | 215 + taskcluster/ci/fetch/benchmarks.yml | 19 + taskcluster/ci/fetch/browsertime.yml | 197 + taskcluster/ci/fetch/chromium-fetch.yml | 32 + taskcluster/ci/fetch/kind.yml | 20 + taskcluster/ci/fetch/moz.build | 8 + taskcluster/ci/fetch/resource-monitor.yml | 10 + .../ci/fetch/toolchain-clang-tidy-external.yml | 13 + taskcluster/ci/fetch/toolchains.yml | 635 + taskcluster/ci/fetch/updatebot.yml | 33 + taskcluster/ci/fuzzing/kind.yml | 65 + taskcluster/ci/fxrecord/kind.yml | 42 + .../ci/geckodriver-mac-notarization/kind.yml | 33 + taskcluster/ci/geckodriver-signing/kind.yml | 16 + taskcluster/ci/generate-profile/kind.yml | 251 + taskcluster/ci/github-sync/kind.yml | 53 + taskcluster/ci/hazard/kind.yml | 82 + taskcluster/ci/instrumented-build/kind.yml | 319 + taskcluster/ci/l10n-bump/kind.yml | 131 + taskcluster/ci/l10n-cross-channel/kind.yml | 41 + taskcluster/ci/l10n/kind.yml | 145 + .../ci/mar-signing-autograph-stage/kind.yml | 30 + taskcluster/ci/mar-signing-l10n/kind.yml | 35 + taskcluster/ci/mar-signing/kind.yml | 36 + taskcluster/ci/maybe-release/kind.yml | 48 + taskcluster/ci/merge-automation/kind.yml | 72 + taskcluster/ci/openh264-plugin/kind.yml | 225 + taskcluster/ci/openh264-signing/kind.yml | 13 + taskcluster/ci/packages/debian.yml | 136 + taskcluster/ci/packages/kind.yml | 25 + taskcluster/ci/packages/ubuntu.yml | 100 + taskcluster/ci/partials-signing/kind.yml | 20 + taskcluster/ci/partials/kind.yml | 35 + taskcluster/ci/perftest/android.yml | 543 + taskcluster/ci/perftest/kind.yml | 43 + taskcluster/ci/perftest/linux.yml | 349 + taskcluster/ci/perftest/macosx.yml | 251 + taskcluster/ci/perftest/windows.yml | 200 + taskcluster/ci/post-balrog-dummy/kind.yml | 21 + .../ci/post-beetmover-checksums-dummy/kind.yml | 35 + taskcluster/ci/post-beetmover-dummy/kind.yml | 22 + taskcluster/ci/post-langpack-dummy/kind.yml | 33 + taskcluster/ci/post-update-verify-dummy/kind.yml | 21 + taskcluster/ci/release-balrog-scheduling/kind.yml | 94 + .../ci/release-balrog-submit-toplevel/kind.yml | 80 + .../ci/release-beetmover-push-to-release/kind.yml | 33 + .../kind.yml | 19 + .../ci/release-beetmover-signed-langpacks/kind.yml | 36 + .../ci/release-beetmover-source-checksums/kind.yml | 19 + taskcluster/ci/release-bouncer-aliases/kind.yml | 95 + taskcluster/ci/release-bouncer-check/kind.yml | 76 + taskcluster/ci/release-bouncer-sub/kind.yml | 58 + taskcluster/ci/release-early-tagging/kind.yml | 46 + .../kind.yml | 21 + .../ci/release-eme-free-repack-beetmover/kind.yml | 27 + .../kind.yml | 26 + .../release-eme-free-repack-mac-signing/kind.yml | 25 + .../kind.yml | 18 + .../ci/release-eme-free-repack-repackage/kind.yml | 56 + taskcluster/ci/release-eme-free-repack/kind.yml | 81 + taskcluster/ci/release-final-verify/kind.yml | 47 + taskcluster/ci/release-flatpak-push/kind.yml | 41 + taskcluster/ci/release-flatpak-repackage/kind.yml | 66 + .../release-generate-checksums-beetmover/kind.yml | 17 + .../ci/release-generate-checksums-signing/kind.yml | 15 + taskcluster/ci/release-generate-checksums/kind.yml | 86 + taskcluster/ci/release-mark-as-shipped/kind.yml | 43 + taskcluster/ci/release-msix-push/kind.yml | 45 + taskcluster/ci/release-notify-av-announce/kind.yml | 42 + taskcluster/ci/release-notify-promote/kind.yml | 38 + taskcluster/ci/release-notify-push/kind.yml | 36 + taskcluster/ci/release-notify-ship/kind.yml | 43 + taskcluster/ci/release-notify-started/kind.yml | 32 + .../release-partner-attribution-beetmover/kind.yml | 23 + .../ci/release-partner-attribution/kind.yml | 40 + .../ci/release-partner-repack-beetmover/kind.yml | 31 + .../ci/release-partner-repack-bouncer-sub/kind.yml | 41 + .../release-partner-repack-chunking-dummy/kind.yml | 36 + .../kind.yml | 26 + .../ci/release-partner-repack-mac-signing/kind.yml | 25 + .../kind.yml | 23 + .../ci/release-partner-repack-repackage/kind.yml | 57 + taskcluster/ci/release-partner-repack/kind.yml | 87 + taskcluster/ci/release-push-langpacks/kind.yml | 50 + .../release-secondary-balrog-scheduling/kind.yml | 41 + .../kind.yml | 46 + .../ci/release-secondary-final-verify/kind.yml | 38 + .../ci/release-secondary-flatpak-push/kind.yml | 37 + .../ci/release-secondary-notify-ship/kind.yml | 36 + .../kind.yml | 124 + .../ci/release-secondary-update-verify/kind.yml | 77 + taskcluster/ci/release-snap-repackage/kind.yml | 60 + .../ci/release-source-checksums-signing/kind.yml | 16 + taskcluster/ci/release-source-signing/kind.yml | 17 + taskcluster/ci/release-source/kind.yml | 54 + .../ci/release-update-verify-config-next/kind.yml | 98 + .../ci/release-update-verify-config/kind.yml | 292 + taskcluster/ci/release-update-verify-next/kind.yml | 73 + taskcluster/ci/release-update-verify/kind.yml | 115 + taskcluster/ci/release-version-bump/kind.yml | 59 + taskcluster/ci/repackage-deb-l10n/kind.yml | 39 + taskcluster/ci/repackage-deb/kind.yml | 49 + taskcluster/ci/repackage-l10n/kind.yml | 78 + taskcluster/ci/repackage-msi/kind.yml | 45 + taskcluster/ci/repackage-msix/kind.yml | 105 + .../ci/repackage-shippable-l10n-msix/kind.yml | 106 + taskcluster/ci/repackage-signing-l10n/kind.yml | 25 + taskcluster/ci/repackage-signing-msi/kind.yml | 21 + taskcluster/ci/repackage-signing-msix/kind.yml | 13 + .../repackage-signing-shippable-l10n-msix/kind.yml | 13 + taskcluster/ci/repackage-signing/kind.yml | 23 + taskcluster/ci/repackage/kind.yml | 90 + taskcluster/ci/repo-update/kind.yml | 70 + taskcluster/ci/scriptworker-canary/kind.yml | 33 + taskcluster/ci/searchfox/kind.yml | 184 + taskcluster/ci/sentry/kind.yml | 34 + .../ci/shippable-l10n-mac-notarization/kind.yml | 26 + taskcluster/ci/shippable-l10n-mac-signing/kind.yml | 28 + taskcluster/ci/shippable-l10n-signing/kind.yml | 30 + taskcluster/ci/shippable-l10n/kind.yml | 199 + taskcluster/ci/source-test/clang.yml | 116 + taskcluster/ci/source-test/cram.yml | 21 + taskcluster/ci/source-test/doc.yml | 72 + taskcluster/ci/source-test/file-metadata.yml | 123 + taskcluster/ci/source-test/jsshell.yml | 87 + taskcluster/ci/source-test/kind.yml | 40 + taskcluster/ci/source-test/mozlint-android.yml | 106 + taskcluster/ci/source-test/mozlint.yml | 574 + taskcluster/ci/source-test/node.yml | 159 + taskcluster/ci/source-test/puppeteer.yml | 52 + taskcluster/ci/source-test/python.yml | 622 + taskcluster/ci/source-test/shadow-scheduler.yml | 178 + taskcluster/ci/source-test/taskgraph.yml | 37 + taskcluster/ci/source-test/vendor.yml | 44 + taskcluster/ci/source-test/webcompat.yml | 37 + taskcluster/ci/source-test/webidl.yml | 24 + taskcluster/ci/source-test/wpt-manifest.yml | 39 + taskcluster/ci/source-test/wpt-metadata.yml | 58 + taskcluster/ci/spidermonkey/kind.yml | 74 + taskcluster/ci/spidermonkey/linux.yml | 543 + taskcluster/ci/spidermonkey/windows.yml | 118 + taskcluster/ci/startup-test/kind.yml | 128 + taskcluster/ci/static-analysis-autotest/kind.yml | 101 + taskcluster/ci/system-symbols-reprocess/kind.yml | 46 + taskcluster/ci/system-symbols-upload/kind.yml | 31 + taskcluster/ci/system-symbols/kind.yml | 248 + taskcluster/ci/test/awsy.yml | 75 + taskcluster/ci/test/browsertime-desktop.yml | 721 + taskcluster/ci/test/browsertime-mobile.yml | 380 + taskcluster/ci/test/compiled.yml | 138 + taskcluster/ci/test/firefox-ui.yml | 30 + taskcluster/ci/test/kind.yml | 82 + taskcluster/ci/test/marionette.yml | 55 + taskcluster/ci/test/misc.yml | 272 + taskcluster/ci/test/mochitest.yml | 1090 ++ taskcluster/ci/test/reftest.yml | 260 + taskcluster/ci/test/talos.yml | 780 + taskcluster/ci/test/test-platforms.yml | 464 + taskcluster/ci/test/test-sets.yml | 479 + taskcluster/ci/test/variants.yml | 290 + taskcluster/ci/test/web-platform.yml | 494 + taskcluster/ci/test/xpcshell.yml | 186 + taskcluster/ci/toolchain/android.yml | 205 + taskcluster/ci/toolchain/cargo-vet.yml | 61 + taskcluster/ci/toolchain/cbindgen.yml | 65 + taskcluster/ci/toolchain/clang-tidy.yml | 127 + taskcluster/ci/toolchain/clang.yml | 903 + taskcluster/ci/toolchain/compiler-rt.yml | 462 + taskcluster/ci/toolchain/dist-toolchains.yml | 40 + taskcluster/ci/toolchain/dump-syms.yml | 62 + taskcluster/ci/toolchain/fix-stacks.yml | 72 + taskcluster/ci/toolchain/gcc.yml | 79 + taskcluster/ci/toolchain/geckodriver.yml | 137 + taskcluster/ci/toolchain/gn.yml | 49 + taskcluster/ci/toolchain/grcov.yml | 48 + taskcluster/ci/toolchain/kind.yml | 54 + taskcluster/ci/toolchain/libunwind.yml | 171 + taskcluster/ci/toolchain/llvm-symbolizer.yml | 241 + taskcluster/ci/toolchain/macos-sdk.yml | 34 + taskcluster/ci/toolchain/mingw.yml | 42 + taskcluster/ci/toolchain/minidump-stackwalk.yml | 96 + taskcluster/ci/toolchain/misc.yml | 440 + taskcluster/ci/toolchain/nasm.yml | 87 + taskcluster/ci/toolchain/node.yml | 92 + taskcluster/ci/toolchain/pkgconf.yml | 56 + taskcluster/ci/toolchain/python.yml | 66 + taskcluster/ci/toolchain/resourcemonitor.yml | 44 + taskcluster/ci/toolchain/rust-size.yml | 38 + taskcluster/ci/toolchain/rust.yml | 253 + taskcluster/ci/toolchain/sccache.yml | 88 + taskcluster/ci/toolchain/sysroot.yml | 160 + taskcluster/ci/updatebot/kind.yml | 92 + taskcluster/ci/updatebot/moz.build | 8 + .../tooltool-manifests/updatebot.manifest | 29 + .../ci/upload-generated-sources-dummy/kind.yml | 24 + taskcluster/ci/upload-generated-sources/kind.yml | 38 + taskcluster/ci/upload-symbols-dummy/kind.yml | 24 + taskcluster/ci/upload-symbols/kind.yml | 53 + taskcluster/ci/valgrind/kind.yml | 65 + taskcluster/ci/webrender/kind.yml | 605 + taskcluster/docker/REGISTRY | 1 + taskcluster/docker/android-build/Dockerfile | 45 + taskcluster/docker/android-build/README.md | 2 + taskcluster/docker/android-build/VERSION | 1 + taskcluster/docker/condprof/Dockerfile | 15 + taskcluster/docker/custom-car-linux/Dockerfile | 24 + taskcluster/docker/custom-v8/Dockerfile | 22 + taskcluster/docker/debian-base/Dockerfile | 66 + taskcluster/docker/debian-build/Dockerfile | 51 + taskcluster/docker/debian-packages/Dockerfile | 11 + taskcluster/docker/debian-raw/Dockerfile | 62 + taskcluster/docker/debian-raw/gpgvnoexpkeysig | 52 + taskcluster/docker/debian-raw/taskcluster-hack.sh | 7 + taskcluster/docker/debian-repackage/Dockerfile | 34 + taskcluster/docker/decision/Dockerfile | 15 + taskcluster/docker/decision/HASH | 1 + taskcluster/docker/decision/README.md | 5 + taskcluster/docker/decision/VERSION | 1 + taskcluster/docker/decision/comm-task-env | 199 + taskcluster/docker/decision/system-setup.sh | 14 + taskcluster/docker/diffoscope/Dockerfile | 33 + taskcluster/docker/diffoscope/get_and_diffoscope | 103 + taskcluster/docker/diffoscope/readelf | 13 + taskcluster/docker/diffoscope/report_error | 36 + taskcluster/docker/diffoscope/test_diffoscope | 47 + taskcluster/docker/fetch/Dockerfile | 36 + taskcluster/docker/firefox-flatpak/Dockerfile | 19 + taskcluster/docker/firefox-flatpak/close_range.c | 12 + .../docker/firefox-flatpak/default-preferences.js | 11 + .../extract_locales_from_l10n_json.py | 18 + .../docker/firefox-flatpak/launch-script.sh | 3 + .../org.mozilla.firefox.appdata.xml.in | 37 + .../firefox-flatpak/org.mozilla.firefox.desktop | 386 + taskcluster/docker/firefox-flatpak/policies.json | 6 + taskcluster/docker/firefox-flatpak/runme.sh | 190 + taskcluster/docker/firefox-snap/Dockerfile | 71 + taskcluster/docker/firefox-snap/Makefile | 12 + .../firefox-snap/download_and_install_snap.sh | 27 + .../firefox-snap/extract_locales_from_l10n_json.py | 15 + taskcluster/docker/firefox-snap/firefox.desktop | 219 + .../docker/firefox-snap/firefox.snapcraft.yaml.in | 92 + taskcluster/docker/firefox-snap/policies.json | 5 + taskcluster/docker/firefox-snap/runme.sh | 104 + taskcluster/docker/firefox-snap/tmpdir | 6 + .../docker/funsize-update-generator/Dockerfile | 48 + .../docker/funsize-update-generator/Makefile | 9 + taskcluster/docker/funsize-update-generator/README | 7 + .../docker/funsize-update-generator/dep1.pubkey | 14 + .../docker/funsize-update-generator/nightly.pubkey | 14 + .../docker/funsize-update-generator/release.pubkey | 14 + .../funsize-update-generator/requirements.in | 7 + .../funsize-update-generator/requirements.txt | 663 + .../docker/funsize-update-generator/runme.sh | 61 + .../funsize-update-generator/scripts/funsize.py | 471 + .../scripts/mbsdiff_hook.sh | 157 + taskcluster/docker/gdb-test/Dockerfile | 15 + taskcluster/docker/github-sync/Dockerfile | 14 + taskcluster/docker/github-sync/prepare.sh | 31 + taskcluster/docker/github-sync/requirements.txt | 3 + taskcluster/docker/image_builder/Dockerfile | 99 + taskcluster/docker/image_builder/VERSION | 1 + taskcluster/docker/image_builder/apt.conf | 5 + .../docker/image_builder/build-image/Cargo.lock | 1085 ++ .../docker/image_builder/build-image/Cargo.toml | 23 + .../docker/image_builder/build-image/src/config.rs | 112 + .../docker/image_builder/build-image/src/main.rs | 182 + .../image_builder/build-image/src/taskcluster.rs | 55 + taskcluster/docker/image_builder/policy.json | 11 + taskcluster/docker/index-task/.eslintrc.js | 11 + taskcluster/docker/index-task/Dockerfile | 11 + taskcluster/docker/index-task/README | 36 + taskcluster/docker/index-task/insert-indexes.js | 73 + taskcluster/docker/index-task/package.json | 12 + taskcluster/docker/index-task/yarn.lock | 326 + taskcluster/docker/lint/Dockerfile | 36 + taskcluster/docker/lint/system-setup.sh | 92 + taskcluster/docker/partner-repack/Dockerfile | 20 + taskcluster/docker/partner-repack/known_hosts | 3 + taskcluster/docker/periodic-updates/.eslintrc.js | 70 + taskcluster/docker/periodic-updates/Dockerfile | 11 + taskcluster/docker/periodic-updates/README.md | 96 + taskcluster/docker/periodic-updates/runme.sh | 93 + .../periodic-updates/scripts/genHPKPStaticPins.js | 674 + .../periodic-updates/scripts/getHSTSPreloadList.js | 557 + .../scripts/periodic_file_updates.sh | 618 + taskcluster/docker/periodic-updates/setup.sh | 25 + taskcluster/docker/push-to-try/Dockerfile | 22 + taskcluster/docker/push-to-try/hgrc | 2 + taskcluster/docker/push-to-try/known_hosts | 2 + taskcluster/docker/recipes/common.sh | 10 + .../docker/recipes/debian-test-system-setup.sh | 84 + taskcluster/docker/recipes/dot-config/pip/pip.conf | 2 + taskcluster/docker/recipes/hgrc | 33 + taskcluster/docker/recipes/install-node.sh | 15 + taskcluster/docker/recipes/setup_packages.sh | 13 + .../recipes/ubuntu1804-test-system-setup-base.sh | 163 + .../docker/recipes/ubuntu1804-test-system-setup.sh | 24 + taskcluster/docker/recipes/xvfb.sh | 75 + taskcluster/docker/sentry/Dockerfile | 11 + taskcluster/docker/sentry/prepare.sh | 18 + taskcluster/docker/sentry/submit_sentry_release.sh | 29 + .../docker/static-analysis-build/Dockerfile | 61 + .../docker/system-symbols-linux-scraper/Dockerfile | 28 + .../system-symbols-linux-scraper/SHA256SUMS.txt | 6 + .../docker/system-symbols-linux-scraper/run.sh | 80 + taskcluster/docker/system-symbols-mac/Dockerfile | 37 + .../docker/system-symbols-mac/requirements.txt | 2 + taskcluster/docker/system-symbols-mac/setup.sh | 27 + taskcluster/docker/system-symbols-win/Dockerfile | 26 + .../docker/system-symbols-win/requirements.txt | 19 + taskcluster/docker/toolchain-build/Dockerfile | 62 + taskcluster/docker/ubuntu1804-base/Dockerfile | 70 + taskcluster/docker/ubuntu1804-test-base/Dockerfile | 24 + taskcluster/docker/ubuntu1804-test/Dockerfile | 86 + taskcluster/docker/ubuntu1804-test/apport | 1 + .../autostart/deja-dup-monitor.desktop | 19 + .../autostart/gnome-software-service.desktop | 9 + taskcluster/docker/ubuntu1804-test/dbus.sh | 7 + .../dot-files/config/user-dirs.dirs | 15 + .../dot-files/config/user-dirs.locale | 1 + .../dot-files/config/xorg/99-serverflags.conf | 3 + .../ubuntu1804-test/dot-files/pulse/client.conf | 1 + taskcluster/docker/ubuntu1804-test/fonts.conf | 5 + taskcluster/docker/ubuntu1804-test/motd | 6 + .../ubuntu1804-test/taskcluster-interactive-shell | 22 + taskcluster/docker/update-verify/Dockerfile | 32 + taskcluster/docker/update-verify/system-setup.sh | 29 + taskcluster/docker/updatebot/Dockerfile | 24 + taskcluster/docker/updatebot/VERSION | 1 + .../docker/updatebot/arcanist_patch_size.patch | 13 + .../docker/updatebot/arcanist_windows_stream.patch | 19 + taskcluster/docker/updatebot/hgrc | 7 + taskcluster/docker/updatebot/moz.build | 8 + taskcluster/docker/updatebot/privileged-setup.sh | 82 + taskcluster/docker/updatebot/run.py | 223 + taskcluster/docker/updatebot/setup.sh | 14 + taskcluster/docker/updatebot/updatebot-version.sh | 2 + taskcluster/docker/updatebot/windows-php.ini | 130 + taskcluster/docker/updatebot/windows-setup.sh | 135 + taskcluster/docker/valgrind-build/Dockerfile | 66 + taskcluster/docker/webrender/Dockerfile | 16 + taskcluster/docs/attributes.rst | 461 + taskcluster/docs/balrog.rst | 45 + taskcluster/docs/caches.rst | 98 + taskcluster/docs/config.rst | 35 + taskcluster/docs/cron.rst | 102 + taskcluster/docs/howto/index.rst | 203 + taskcluster/docs/img/enableSourceServer.png | Bin 0 -> 28002 bytes taskcluster/docs/img/windbg-srcfix.png | Bin 0 -> 17238 bytes taskcluster/docs/index.rst | 79 + taskcluster/docs/kinds.rst | 796 + taskcluster/docs/kinds/test.rst | 161 + taskcluster/docs/optimization/index.rst | 20 + taskcluster/docs/optimization/schedules.rst | 97 + taskcluster/docs/parameters.rst | 262 + taskcluster/docs/partials.rst | 123 + taskcluster/docs/partner-attribution.rst | 121 + taskcluster/docs/partner-repacks.rst | 255 + taskcluster/docs/platforms.rst | 190 + taskcluster/docs/reference.rst | 12 + taskcluster/docs/release-promotion-action.rst | 158 + taskcluster/docs/release-promotion.rst | 54 + taskcluster/docs/signing.rst | 188 + taskcluster/docs/taskgraph.rst | 140 + taskcluster/docs/transforms/index.rst | 22 + taskcluster/docs/transforms/job.rst | 42 + taskcluster/docs/transforms/signing.rst | 15 + taskcluster/docs/transforms/task.rst | 45 + taskcluster/docs/transforms/test.rst | 15 + taskcluster/docs/try.rst | 153 + .../docs/using-the-mozilla-source-server.rst | 40 + taskcluster/docs/versioncontrol.rst | 74 + taskcluster/gecko_taskgraph/.ruff.toml | 4 + taskcluster/gecko_taskgraph/__init__.py | 64 + taskcluster/gecko_taskgraph/actions/__init__.py | 16 + .../gecko_taskgraph/actions/add_new_jobs.py | 59 + taskcluster/gecko_taskgraph/actions/add_talos.py | 59 + taskcluster/gecko_taskgraph/actions/backfill.py | 426 + taskcluster/gecko_taskgraph/actions/cancel.py | 36 + taskcluster/gecko_taskgraph/actions/cancel_all.py | 60 + .../gecko_taskgraph/actions/confirm_failure.py | 238 + .../gecko_taskgraph/actions/create_interactive.py | 192 + .../gecko_taskgraph/actions/gecko_profile.py | 138 + .../gecko_taskgraph/actions/merge_automation.py | 99 + taskcluster/gecko_taskgraph/actions/openh264.py | 33 + .../gecko_taskgraph/actions/purge_caches.py | 34 + .../actions/raptor_extra_options.py | 77 + .../actions/rebuild_cached_tasks.py | 37 + taskcluster/gecko_taskgraph/actions/registry.py | 371 + .../gecko_taskgraph/actions/release_promotion.py | 426 + taskcluster/gecko_taskgraph/actions/retrigger.py | 301 + .../gecko_taskgraph/actions/retrigger_custom.py | 185 + .../gecko_taskgraph/actions/run_missing_tests.py | 62 + .../gecko_taskgraph/actions/scriptworker_canary.py | 45 + .../gecko_taskgraph/actions/side_by_side.py | 189 + taskcluster/gecko_taskgraph/actions/util.py | 433 + taskcluster/gecko_taskgraph/config.py | 122 + taskcluster/gecko_taskgraph/decision.py | 565 + taskcluster/gecko_taskgraph/docker.py | 198 + taskcluster/gecko_taskgraph/files_changed.py | 95 + taskcluster/gecko_taskgraph/loader/__init__.py | 0 taskcluster/gecko_taskgraph/loader/multi_dep.py | 275 + taskcluster/gecko_taskgraph/loader/single_dep.py | 76 + taskcluster/gecko_taskgraph/loader/test.py | 142 + taskcluster/gecko_taskgraph/loader/transform.py | 59 + taskcluster/gecko_taskgraph/main.py | 765 + .../gecko_taskgraph/manifests/fennec_geckoview.yml | 210 + .../manifests/firefox_candidates.yml | 430 + .../manifests/firefox_candidates_checksums.yml | 94 + .../gecko_taskgraph/manifests/firefox_nightly.yml | 520 + .../manifests/firefox_nightly_checksums.yml | 59 + .../manifests/release_checksums.yml | 70 + .../gecko_taskgraph/manifests/source_checksums.yml | 52 + .../gecko_taskgraph/manifests/source_files.yml | 52 + taskcluster/gecko_taskgraph/morph.py | 263 + taskcluster/gecko_taskgraph/optimize/__init__.py | 287 + taskcluster/gecko_taskgraph/optimize/backstop.py | 47 + taskcluster/gecko_taskgraph/optimize/bugbug.py | 321 + taskcluster/gecko_taskgraph/optimize/schema.py | 60 + taskcluster/gecko_taskgraph/optimize/strategies.py | 136 + taskcluster/gecko_taskgraph/parameters.py | 100 + taskcluster/gecko_taskgraph/target_tasks.py | 1497 ++ taskcluster/gecko_taskgraph/test/__init__.py | 0 .../gecko_taskgraph/test/automationrelevance.json | 358 + taskcluster/gecko_taskgraph/test/conftest.py | 220 + taskcluster/gecko_taskgraph/test/docs/kinds.rst | 12 + .../gecko_taskgraph/test/docs/parameters.rst | 14 + taskcluster/gecko_taskgraph/test/python.ini | 23 + .../gecko_taskgraph/test/test_actions_util.py | 179 + taskcluster/gecko_taskgraph/test/test_decision.py | 176 + .../gecko_taskgraph/test/test_files_changed.py | 90 + taskcluster/gecko_taskgraph/test/test_main.py | 67 + taskcluster/gecko_taskgraph/test/test_morph.py | 108 + .../test/test_optimize_strategies.py | 551 + .../gecko_taskgraph/test/test_target_tasks.py | 371 + .../gecko_taskgraph/test/test_taskcluster_yml.py | 145 + .../gecko_taskgraph/test/test_transforms_job.py | 150 + .../gecko_taskgraph/test/test_transforms_test.py | 328 + .../gecko_taskgraph/test/test_try_option_syntax.py | 430 + .../gecko_taskgraph/test/test_util_attributes.py | 99 + .../gecko_taskgraph/test/test_util_backstop.py | 155 + .../gecko_taskgraph/test/test_util_bugbug.py | 57 + .../gecko_taskgraph/test/test_util_chunking.py | 403 + .../gecko_taskgraph/test/test_util_docker.py | 255 + .../gecko_taskgraph/test/test_util_partials.py | 128 + .../test/test_util_runnable_jobs.py | 76 + .../gecko_taskgraph/test/test_util_templates.py | 79 + .../gecko_taskgraph/test/test_util_verify.py | 149 + taskcluster/gecko_taskgraph/transforms/__init__.py | 0 taskcluster/gecko_taskgraph/transforms/artifact.py | 116 + .../gecko_taskgraph/transforms/artifacts.yml | 16 + .../gecko_taskgraph/transforms/attribution.py | 32 + .../gecko_taskgraph/transforms/balrog_submit.py | 138 + .../gecko_taskgraph/transforms/balrog_toplevel.py | 42 + .../gecko_taskgraph/transforms/beetmover.py | 165 + .../gecko_taskgraph/transforms/beetmover_apt.py | 114 + .../transforms/beetmover_checksums.py | 133 + .../transforms/beetmover_emefree_checksums.py | 139 + .../transforms/beetmover_geckoview.py | 166 + .../transforms/beetmover_langpack_checksums.py | 128 + .../transforms/beetmover_push_to_release.py | 93 + .../transforms/beetmover_repackage.py | 327 + .../transforms/beetmover_repackage_l10n.py | 44 + .../transforms/beetmover_repackage_partner.py | 326 + .../gecko_taskgraph/transforms/beetmover_snap.py | 42 + .../gecko_taskgraph/transforms/beetmover_source.py | 35 + .../transforms/beetmover_source_checksums.py | 137 + .../gecko_taskgraph/transforms/bootstrap.py | 132 + .../gecko_taskgraph/transforms/bouncer_aliases.py | 108 + .../gecko_taskgraph/transforms/bouncer_check.py | 111 + .../transforms/bouncer_locations.py | 35 + .../transforms/bouncer_submission.py | 335 + .../transforms/bouncer_submission_partners.py | 193 + taskcluster/gecko_taskgraph/transforms/build.py | 238 + .../gecko_taskgraph/transforms/build_attrs.py | 50 + .../gecko_taskgraph/transforms/build_fat_aar.py | 78 + .../gecko_taskgraph/transforms/build_lints.py | 59 + .../gecko_taskgraph/transforms/build_signing.py | 71 + .../gecko_taskgraph/transforms/cached_tasks.py | 101 + .../gecko_taskgraph/transforms/chunk_partners.py | 75 + .../gecko_taskgraph/transforms/code_review.py | 33 + taskcluster/gecko_taskgraph/transforms/condprof.py | 85 + .../copy_attributes_from_dependent_task.py | 23 + .../gecko_taskgraph/transforms/cross_channel.py | 44 + .../gecko_taskgraph/transforms/diffoscope.py | 172 + .../gecko_taskgraph/transforms/docker_image.py | 209 + taskcluster/gecko_taskgraph/transforms/fetch.py | 387 + .../gecko_taskgraph/transforms/final_verify.py | 35 + taskcluster/gecko_taskgraph/transforms/fxrecord.py | 22 + .../transforms/geckodriver_mac_notarization.py | 68 + .../transforms/geckodriver_signing.py | 124 + .../gecko_taskgraph/transforms/github_sync.py | 23 + .../gecko_taskgraph/transforms/job/__init__.py | 504 + .../gecko_taskgraph/transforms/job/common.py | 269 + .../transforms/job/distro_package.py | 238 + .../gecko_taskgraph/transforms/job/hazard.py | 66 + taskcluster/gecko_taskgraph/transforms/job/mach.py | 83 + .../gecko_taskgraph/transforms/job/mozharness.py | 366 + .../transforms/job/mozharness_test.py | 477 + .../gecko_taskgraph/transforms/job/python_test.py | 47 + .../gecko_taskgraph/transforms/job/run_task.py | 308 + .../gecko_taskgraph/transforms/job/spidermonkey.py | 109 + .../gecko_taskgraph/transforms/job/toolchain.py | 257 + taskcluster/gecko_taskgraph/transforms/l10n.py | 416 + .../gecko_taskgraph/transforms/mac_dummy.py | 40 + .../gecko_taskgraph/transforms/mac_notarization.py | 19 + .../gecko_taskgraph/transforms/mar_signing.py | 140 + .../gecko_taskgraph/transforms/maybe_release.py | 23 + .../gecko_taskgraph/transforms/merge_automation.py | 81 + .../gecko_taskgraph/transforms/name_sanity.py | 45 + taskcluster/gecko_taskgraph/transforms/openh264.py | 26 + .../gecko_taskgraph/transforms/openh264_signing.py | 109 + taskcluster/gecko_taskgraph/transforms/partials.py | 172 + .../transforms/partner_attribution.py | 129 + .../transforms/partner_attribution_beetmover.py | 202 + .../gecko_taskgraph/transforms/partner_repack.py | 136 + .../gecko_taskgraph/transforms/partner_signing.py | 66 + .../transforms/per_platform_dummy.py | 33 + taskcluster/gecko_taskgraph/transforms/perftest.py | 351 + .../gecko_taskgraph/transforms/python_update.py | 25 + taskcluster/gecko_taskgraph/transforms/release.py | 20 + .../transforms/release_beetmover_signed_addons.py | 243 + .../gecko_taskgraph/transforms/release_deps.py | 61 + .../transforms/release_flatpak_push.py | 79 + .../transforms/release_flatpak_repackage.py | 42 + .../transforms/release_generate_checksums.py | 53 + .../release_generate_checksums_beetmover.py | 118 + .../release_generate_checksums_signing.py | 86 + .../transforms/release_mark_as_shipped.py | 39 + .../transforms/release_msix_push.py | 88 + .../transforms/release_notifications.py | 73 + .../transforms/release_sign_and_push_langpacks.py | 180 + .../transforms/release_snap_repackage.py | 39 + .../gecko_taskgraph/transforms/release_started.py | 52 + .../transforms/release_version_bump.py | 42 + .../gecko_taskgraph/transforms/repackage.py | 684 + .../gecko_taskgraph/transforms/repackage_l10n.py | 26 + .../transforms/repackage_partner.py | 302 + .../gecko_taskgraph/transforms/repackage_routes.py | 34 + .../transforms/repackage_set_upstream_mac_kind.py | 39 + .../transforms/repackage_signing.py | 137 + .../transforms/repackage_signing_partner.py | 145 + .../gecko_taskgraph/transforms/repo_update.py | 25 + .../transforms/reprocess_symbols.py | 67 + .../transforms/reverse_chunk_deps.py | 45 + .../gecko_taskgraph/transforms/run_pgo_profile.py | 34 + .../gecko_taskgraph/transforms/scriptworker.py | 18 + .../transforms/scriptworker_canary.py | 46 + taskcluster/gecko_taskgraph/transforms/sentry.py | 30 + .../transforms/shippable_l10n_signing.py | 86 + taskcluster/gecko_taskgraph/transforms/signing.py | 266 + .../transforms/source_checksums_signing.py | 83 + .../gecko_taskgraph/transforms/source_test.py | 270 + .../gecko_taskgraph/transforms/spidermonkey.py | 21 + .../gecko_taskgraph/transforms/split_by_locale.py | 79 + .../gecko_taskgraph/transforms/startup_test.py | 40 + .../transforms/strip_dependent_task.py | 17 + taskcluster/gecko_taskgraph/transforms/task.py | 2266 +++ .../gecko_taskgraph/transforms/test/__init__.py | 538 + .../gecko_taskgraph/transforms/test/chunk.py | 262 + .../gecko_taskgraph/transforms/test/other.py | 1081 + .../gecko_taskgraph/transforms/test/raptor.py | 317 + .../gecko_taskgraph/transforms/test/variant.py | 128 + .../gecko_taskgraph/transforms/test/worker.py | 201 + taskcluster/gecko_taskgraph/transforms/try_job.py | 18 + .../gecko_taskgraph/transforms/update_verify.py | 58 + .../transforms/update_verify_config.py | 148 + .../transforms/upload_generated_sources.py | 40 + .../gecko_taskgraph/transforms/upload_symbols.py | 95 + .../transforms/upstream_artifact_task.py | 29 + taskcluster/gecko_taskgraph/try_option_syntax.py | 755 + taskcluster/gecko_taskgraph/util/__init__.py | 0 taskcluster/gecko_taskgraph/util/attributes.py | 143 + taskcluster/gecko_taskgraph/util/backstop.py | 84 + taskcluster/gecko_taskgraph/util/bugbug.py | 125 + taskcluster/gecko_taskgraph/util/cached_tasks.py | 82 + taskcluster/gecko_taskgraph/util/chunking.py | 315 + taskcluster/gecko_taskgraph/util/copy_task.py | 40 + .../gecko_taskgraph/util/declarative_artifacts.py | 92 + taskcluster/gecko_taskgraph/util/docker.py | 333 + taskcluster/gecko_taskgraph/util/hash.py | 68 + taskcluster/gecko_taskgraph/util/hg.py | 139 + taskcluster/gecko_taskgraph/util/partials.py | 297 + taskcluster/gecko_taskgraph/util/partners.py | 555 + taskcluster/gecko_taskgraph/util/perfile.py | 104 + taskcluster/gecko_taskgraph/util/platforms.py | 58 + taskcluster/gecko_taskgraph/util/scriptworker.py | 859 + .../gecko_taskgraph/util/signed_artifacts.py | 198 + taskcluster/gecko_taskgraph/util/taskcluster.py | 128 + taskcluster/gecko_taskgraph/util/taskgraph.py | 49 + taskcluster/gecko_taskgraph/util/templates.py | 59 + taskcluster/gecko_taskgraph/util/verify.py | 454 + taskcluster/gecko_taskgraph/util/workertypes.py | 105 + taskcluster/mach_commands.py | 416 + taskcluster/moz.build | 18 + taskcluster/scripts/builder/build-haz-linux.sh | 184 + taskcluster/scripts/builder/build-l10n.sh | 90 + taskcluster/scripts/builder/build-linux.sh | 125 + taskcluster/scripts/builder/build-sm-package.sh | 35 + taskcluster/scripts/builder/build-sm.sh | 64 + taskcluster/scripts/builder/repackage.sh | 95 + taskcluster/scripts/copy.sh | 9 + taskcluster/scripts/misc/afl-nyx.patch | 847 + .../misc/android-gradle-dependencies-lite.sh | 21 + .../scripts/misc/android-gradle-dependencies.sh | 21 + .../misc/android-gradle-dependencies/after.sh | 32 + .../misc/android-gradle-dependencies/before.sh | 30 + .../misc/android-gradle-dependencies/nexus.xml | 413 + taskcluster/scripts/misc/are-we-esmified-yet.py | 193 + taskcluster/scripts/misc/browsertime.sh | 19 + taskcluster/scripts/misc/build-afl.sh | 24 + taskcluster/scripts/misc/build-binutils-linux.sh | 14 + .../scripts/misc/build-breakpad-injector.sh | 30 + taskcluster/scripts/misc/build-cctools-port.sh | 100 + taskcluster/scripts/misc/build-clang-mingw.sh | 254 + .../scripts/misc/build-clang-tidy-external.sh | 11 + taskcluster/scripts/misc/build-clang.sh | 72 + taskcluster/scripts/misc/build-compiler-rt-wasi.sh | 32 + taskcluster/scripts/misc/build-compiler-rt.sh | 39 + taskcluster/scripts/misc/build-cpython.sh | 70 + taskcluster/scripts/misc/build-custom-car-linux.sh | 65 + taskcluster/scripts/misc/build-custom-car-win64.sh | 102 + taskcluster/scripts/misc/build-custom-v8.sh | 47 + taskcluster/scripts/misc/build-dist-toolchains.sh | 12 + taskcluster/scripts/misc/build-dmg-hfsplus.sh | 36 + taskcluster/scripts/misc/build-gcc-linux.sh | 28 + .../scripts/misc/build-gcc-sixgill-plugin-linux.sh | 80 + taskcluster/scripts/misc/build-geckodriver.sh | 60 + taskcluster/scripts/misc/build-gn-common.sh | 36 + taskcluster/scripts/misc/build-gn-linux.sh | 13 + taskcluster/scripts/misc/build-gn-macosx.sh | 23 + taskcluster/scripts/misc/build-gn-win64.sh | 16 + taskcluster/scripts/misc/build-hfsplus-linux.sh | 14 + taskcluster/scripts/misc/build-libunwind.sh | 23 + taskcluster/scripts/misc/build-llvm-common.sh | 206 + taskcluster/scripts/misc/build-llvm-symbolizer.sh | 5 + taskcluster/scripts/misc/build-mar-tools.sh | 28 + taskcluster/scripts/misc/build-mingw-fxc2-x86.sh | 25 + taskcluster/scripts/misc/build-mingw32-nsis.sh | 70 + taskcluster/scripts/misc/build-mkbom-linux.sh | 17 + taskcluster/scripts/misc/build-mozmake.sh | 66 + taskcluster/scripts/misc/build-msix-packaging.sh | 33 + taskcluster/scripts/misc/build-nasm.sh | 63 + taskcluster/scripts/misc/build-nsis.sh | 32 + taskcluster/scripts/misc/build-pkgconf.sh | 44 + taskcluster/scripts/misc/build-resourcemonitor.sh | 40 + .../scripts/misc/build-rust-based-toolchain.sh | 66 + taskcluster/scripts/misc/build-sysroot-wasi.sh | 46 + taskcluster/scripts/misc/build-sysroot.sh | 127 + taskcluster/scripts/misc/build-upx.sh | 26 + taskcluster/scripts/misc/build-winchecksec.sh | 54 + taskcluster/scripts/misc/build-wine.sh | 29 + taskcluster/scripts/misc/build-xar-linux.sh | 18 + taskcluster/scripts/misc/fetch-chromium.py | 235 + taskcluster/scripts/misc/fetch-content | 881 + taskcluster/scripts/misc/get_vs.py | 111 + taskcluster/scripts/misc/mingw-composition.patch | 50 + taskcluster/scripts/misc/mingw-dispatchqueue.patch | 157 + taskcluster/scripts/misc/mingw-dwrite_3.patch | 87 + taskcluster/scripts/misc/mingw-enum.patch | 25 + taskcluster/scripts/misc/mingw-ts_sd.patch | 33 + taskcluster/scripts/misc/mingw-unknown.patch | 46 + taskcluster/scripts/misc/mingw-widl.patch | 35 + taskcluster/scripts/misc/moz.build | 8 + taskcluster/scripts/misc/osx-cross-linker | 8 + taskcluster/scripts/misc/pack-cpython.sh | 36 + taskcluster/scripts/misc/pack.sh | 24 + .../scripts/misc/private_local_toolchain.sh | 14 + .../scripts/misc/repack-android-avd-linux.sh | 30 + .../scripts/misc/repack-android-emulator-linux.sh | 21 + .../scripts/misc/repack-android-ndk-linux.sh | 17 + .../scripts/misc/repack-android-sdk-linux.sh | 15 + .../misc/repack-android-system-images-linux.sh | 17 + taskcluster/scripts/misc/repack-clang.sh | 52 + taskcluster/scripts/misc/repack-jdk-linux.sh | 17 + taskcluster/scripts/misc/repack-node.sh | 14 + taskcluster/scripts/misc/repack_rust.py | 647 + .../scripts/misc/run-profileserver-macos.sh | 20 + taskcluster/scripts/misc/run-profileserver.sh | 42 + .../scripts/misc/source-test-clang-setup.sh | 27 + taskcluster/scripts/misc/source-test-common.sh | 16 + .../scripts/misc/source-test-infer-setup.sh | 18 + taskcluster/scripts/misc/summarize-tgdiff.py | 54 + taskcluster/scripts/misc/tooltool-download.sh | 21 + taskcluster/scripts/misc/unify.sh | 42 + taskcluster/scripts/misc/unpack-sdk.py | 87 + taskcluster/scripts/misc/verify-devtools-bundle.py | 85 + taskcluster/scripts/misc/vs-cleanup.sh | 13 + taskcluster/scripts/misc/vs-setup.sh | 42 + .../scripts/misc/wr-cargotest-macos-build.sh | 24 + .../scripts/misc/wr-macos-cross-build-setup.sh | 60 + taskcluster/scripts/misc/wrench-android-build.sh | 26 + taskcluster/scripts/misc/wrench-deps-vendoring.sh | 30 + taskcluster/scripts/misc/wrench-macos-build.sh | 58 + taskcluster/scripts/misc/wrench-windows-tests.sh | 28 + taskcluster/scripts/misc/zstdpy | 79 + taskcluster/scripts/run-task | 1005 + taskcluster/scripts/tester/run-wizard | 176 + taskcluster/scripts/tester/test-linux.sh | 287 + taskcluster/test/conftest.py | 125 + taskcluster/test/data/automationrelevance.json | 169 + taskcluster/test/data/bugbug-push-schedules.json | 4632 +++++ taskcluster/test/data/pushes.json | 1 + taskcluster/test/params/autoland-onpush.yml | 44 + taskcluster/test/params/mb-onpush.yml | 43 + .../test/params/mb-promote-devedition-partials.yml | 13210 +++++++++++++ taskcluster/test/params/mb-promote-devedition.yml | 42 + .../test/params/mb-promote-firefox-partials.yml | 12103 ++++++++++++ taskcluster/test/params/mb-promote-firefox.yml | 109 + taskcluster/test/params/mb-push-devedition.yml | 43 + .../test/params/mb-push-firefox-partials.yml | 19467 ++++++++++++++++++ taskcluster/test/params/mb-push-firefox.yml | 110 + taskcluster/test/params/mb-ship-devedition.yml | 42 + .../test/params/mb-ship-firefox-partials.yml | 19471 +++++++++++++++++++ taskcluster/test/params/mb-ship-firefox.yml | 109 + taskcluster/test/params/mb-ship-geckoview.yml | 3822 ++++ taskcluster/test/params/mc-desktop-nightly.yml | 6545 +++++++ taskcluster/test/params/mc-onpush.yml | 41 + taskcluster/test/params/mc-ship-geckoview.yml | 3822 ++++ taskcluster/test/params/me-promote-firefox.yml | 40 + taskcluster/test/params/me-push-firefox.yml | 41 + taskcluster/test/params/me-ship-firefox.yml | 40 + taskcluster/test/params/mr-onpush-geckoview.yml | 41 + taskcluster/test/params/mr-onpush.yml | 43 + taskcluster/test/params/mr-promote-firefox-rc.yml | 109 + taskcluster/test/params/mr-promote-firefox.yml | 109 + taskcluster/test/params/mr-push-firefox.yml | 110 + taskcluster/test/params/mr-ship-firefox-rc.yml | 109 + taskcluster/test/params/mr-ship-firefox.yml | 109 + taskcluster/test/params/mr-ship-geckoview.yml | 3822 ++++ taskcluster/test/params/try.yml | 59 + taskcluster/test/python.ini | 8 + taskcluster/test/test_autoland.py | 48 + taskcluster/test/test_autoland_backstop.py | 56 + taskcluster/test/test_generate_params.py | 57 + taskcluster/test/test_mach_try_auto.py | 113 + taskcluster/test/test_mozilla_central.py | 69 + 770 files changed, 182273 insertions(+) create mode 100644 taskcluster/.yamllint create mode 100644 taskcluster/ci/addon/kind.yml create mode 100644 taskcluster/ci/are-we-esmified-yet/kind.yml create mode 100644 taskcluster/ci/artifact-build/kind.yml create mode 100644 taskcluster/ci/attribution-l10n/kind.yml create mode 100644 taskcluster/ci/attribution/kind.yml create mode 100644 taskcluster/ci/balrog/kind.yml create mode 100644 taskcluster/ci/beetmover-apt/kind.yml create mode 100644 taskcluster/ci/beetmover-checksums/kind.yml create mode 100644 taskcluster/ci/beetmover-geckoview/kind.yml create mode 100644 taskcluster/ci/beetmover-repackage/kind.yml create mode 100644 taskcluster/ci/beetmover-source/kind.yml create mode 100644 taskcluster/ci/bootstrap/kind.yml create mode 100644 taskcluster/ci/bouncer-locations/kind.yml create mode 100644 taskcluster/ci/build-fat-aar/kind.yml create mode 100644 taskcluster/ci/build-mac-notarization/kind.yml create mode 100644 taskcluster/ci/build-mac-signing/kind.yml create mode 100644 taskcluster/ci/build-signing/kind.yml create mode 100644 taskcluster/ci/build/android-asan.yml create mode 100644 taskcluster/ci/build/android-stuff.yml create mode 100644 taskcluster/ci/build/android.yml create mode 100644 taskcluster/ci/build/kind.yml create mode 100644 taskcluster/ci/build/linux-base-toolchains.yml create mode 100644 taskcluster/ci/build/linux.yml create mode 100644 taskcluster/ci/build/macosx-native.yml create mode 100644 taskcluster/ci/build/macosx.yml create mode 100644 taskcluster/ci/build/windows-mingw.yml create mode 100644 taskcluster/ci/build/windows.yml create mode 100644 taskcluster/ci/code-review/kind.yml create mode 100644 taskcluster/ci/condprof/kind.yml create mode 100644 taskcluster/ci/config.yml create mode 100644 taskcluster/ci/cron-bouncer-check/kind.yml create mode 100644 taskcluster/ci/diffoscope/kind.yml create mode 100644 taskcluster/ci/docker-image/kind.yml create mode 100644 taskcluster/ci/fetch/benchmarks.yml create mode 100644 taskcluster/ci/fetch/browsertime.yml create mode 100644 taskcluster/ci/fetch/chromium-fetch.yml create mode 100644 taskcluster/ci/fetch/kind.yml create mode 100644 taskcluster/ci/fetch/moz.build create mode 100644 taskcluster/ci/fetch/resource-monitor.yml create mode 100644 taskcluster/ci/fetch/toolchain-clang-tidy-external.yml create mode 100644 taskcluster/ci/fetch/toolchains.yml create mode 100644 taskcluster/ci/fetch/updatebot.yml create mode 100644 taskcluster/ci/fuzzing/kind.yml create mode 100644 taskcluster/ci/fxrecord/kind.yml create mode 100644 taskcluster/ci/geckodriver-mac-notarization/kind.yml create mode 100644 taskcluster/ci/geckodriver-signing/kind.yml create mode 100644 taskcluster/ci/generate-profile/kind.yml create mode 100644 taskcluster/ci/github-sync/kind.yml create mode 100644 taskcluster/ci/hazard/kind.yml create mode 100644 taskcluster/ci/instrumented-build/kind.yml create mode 100644 taskcluster/ci/l10n-bump/kind.yml create mode 100644 taskcluster/ci/l10n-cross-channel/kind.yml create mode 100644 taskcluster/ci/l10n/kind.yml create mode 100644 taskcluster/ci/mar-signing-autograph-stage/kind.yml create mode 100644 taskcluster/ci/mar-signing-l10n/kind.yml create mode 100644 taskcluster/ci/mar-signing/kind.yml create mode 100644 taskcluster/ci/maybe-release/kind.yml create mode 100644 taskcluster/ci/merge-automation/kind.yml create mode 100644 taskcluster/ci/openh264-plugin/kind.yml create mode 100644 taskcluster/ci/openh264-signing/kind.yml create mode 100644 taskcluster/ci/packages/debian.yml create mode 100644 taskcluster/ci/packages/kind.yml create mode 100644 taskcluster/ci/packages/ubuntu.yml create mode 100644 taskcluster/ci/partials-signing/kind.yml create mode 100644 taskcluster/ci/partials/kind.yml create mode 100644 taskcluster/ci/perftest/android.yml create mode 100644 taskcluster/ci/perftest/kind.yml create mode 100644 taskcluster/ci/perftest/linux.yml create mode 100644 taskcluster/ci/perftest/macosx.yml create mode 100644 taskcluster/ci/perftest/windows.yml create mode 100644 taskcluster/ci/post-balrog-dummy/kind.yml create mode 100644 taskcluster/ci/post-beetmover-checksums-dummy/kind.yml create mode 100644 taskcluster/ci/post-beetmover-dummy/kind.yml create mode 100644 taskcluster/ci/post-langpack-dummy/kind.yml create mode 100644 taskcluster/ci/post-update-verify-dummy/kind.yml create mode 100644 taskcluster/ci/release-balrog-scheduling/kind.yml create mode 100644 taskcluster/ci/release-balrog-submit-toplevel/kind.yml create mode 100644 taskcluster/ci/release-beetmover-push-to-release/kind.yml create mode 100644 taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml create mode 100644 taskcluster/ci/release-beetmover-signed-langpacks/kind.yml create mode 100644 taskcluster/ci/release-beetmover-source-checksums/kind.yml create mode 100644 taskcluster/ci/release-bouncer-aliases/kind.yml create mode 100644 taskcluster/ci/release-bouncer-check/kind.yml create mode 100644 taskcluster/ci/release-bouncer-sub/kind.yml create mode 100644 taskcluster/ci/release-early-tagging/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-beetmover/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack-repackage/kind.yml create mode 100644 taskcluster/ci/release-eme-free-repack/kind.yml create mode 100644 taskcluster/ci/release-final-verify/kind.yml create mode 100644 taskcluster/ci/release-flatpak-push/kind.yml create mode 100644 taskcluster/ci/release-flatpak-repackage/kind.yml create mode 100644 taskcluster/ci/release-generate-checksums-beetmover/kind.yml create mode 100644 taskcluster/ci/release-generate-checksums-signing/kind.yml create mode 100644 taskcluster/ci/release-generate-checksums/kind.yml create mode 100644 taskcluster/ci/release-mark-as-shipped/kind.yml create mode 100644 taskcluster/ci/release-msix-push/kind.yml create mode 100644 taskcluster/ci/release-notify-av-announce/kind.yml create mode 100644 taskcluster/ci/release-notify-promote/kind.yml create mode 100644 taskcluster/ci/release-notify-push/kind.yml create mode 100644 taskcluster/ci/release-notify-ship/kind.yml create mode 100644 taskcluster/ci/release-notify-started/kind.yml create mode 100644 taskcluster/ci/release-partner-attribution-beetmover/kind.yml create mode 100644 taskcluster/ci/release-partner-attribution/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-beetmover/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-mac-notarization/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-mac-signing/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-repackage-signing/kind.yml create mode 100644 taskcluster/ci/release-partner-repack-repackage/kind.yml create mode 100644 taskcluster/ci/release-partner-repack/kind.yml create mode 100644 taskcluster/ci/release-push-langpacks/kind.yml create mode 100644 taskcluster/ci/release-secondary-balrog-scheduling/kind.yml create mode 100644 taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml create mode 100644 taskcluster/ci/release-secondary-final-verify/kind.yml create mode 100644 taskcluster/ci/release-secondary-flatpak-push/kind.yml create mode 100644 taskcluster/ci/release-secondary-notify-ship/kind.yml create mode 100644 taskcluster/ci/release-secondary-update-verify-config/kind.yml create mode 100644 taskcluster/ci/release-secondary-update-verify/kind.yml create mode 100644 taskcluster/ci/release-snap-repackage/kind.yml create mode 100644 taskcluster/ci/release-source-checksums-signing/kind.yml create mode 100644 taskcluster/ci/release-source-signing/kind.yml create mode 100644 taskcluster/ci/release-source/kind.yml create mode 100644 taskcluster/ci/release-update-verify-config-next/kind.yml create mode 100644 taskcluster/ci/release-update-verify-config/kind.yml create mode 100644 taskcluster/ci/release-update-verify-next/kind.yml create mode 100644 taskcluster/ci/release-update-verify/kind.yml create mode 100644 taskcluster/ci/release-version-bump/kind.yml create mode 100644 taskcluster/ci/repackage-deb-l10n/kind.yml create mode 100644 taskcluster/ci/repackage-deb/kind.yml create mode 100644 taskcluster/ci/repackage-l10n/kind.yml create mode 100644 taskcluster/ci/repackage-msi/kind.yml create mode 100644 taskcluster/ci/repackage-msix/kind.yml create mode 100644 taskcluster/ci/repackage-shippable-l10n-msix/kind.yml create mode 100644 taskcluster/ci/repackage-signing-l10n/kind.yml create mode 100644 taskcluster/ci/repackage-signing-msi/kind.yml create mode 100644 taskcluster/ci/repackage-signing-msix/kind.yml create mode 100644 taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml create mode 100644 taskcluster/ci/repackage-signing/kind.yml create mode 100644 taskcluster/ci/repackage/kind.yml create mode 100644 taskcluster/ci/repo-update/kind.yml create mode 100644 taskcluster/ci/scriptworker-canary/kind.yml create mode 100644 taskcluster/ci/searchfox/kind.yml create mode 100644 taskcluster/ci/sentry/kind.yml create mode 100644 taskcluster/ci/shippable-l10n-mac-notarization/kind.yml create mode 100644 taskcluster/ci/shippable-l10n-mac-signing/kind.yml create mode 100644 taskcluster/ci/shippable-l10n-signing/kind.yml create mode 100644 taskcluster/ci/shippable-l10n/kind.yml create mode 100644 taskcluster/ci/source-test/clang.yml create mode 100644 taskcluster/ci/source-test/cram.yml create mode 100644 taskcluster/ci/source-test/doc.yml create mode 100644 taskcluster/ci/source-test/file-metadata.yml create mode 100644 taskcluster/ci/source-test/jsshell.yml create mode 100644 taskcluster/ci/source-test/kind.yml create mode 100644 taskcluster/ci/source-test/mozlint-android.yml create mode 100644 taskcluster/ci/source-test/mozlint.yml create mode 100644 taskcluster/ci/source-test/node.yml create mode 100644 taskcluster/ci/source-test/puppeteer.yml create mode 100644 taskcluster/ci/source-test/python.yml create mode 100644 taskcluster/ci/source-test/shadow-scheduler.yml create mode 100644 taskcluster/ci/source-test/taskgraph.yml create mode 100644 taskcluster/ci/source-test/vendor.yml create mode 100644 taskcluster/ci/source-test/webcompat.yml create mode 100644 taskcluster/ci/source-test/webidl.yml create mode 100644 taskcluster/ci/source-test/wpt-manifest.yml create mode 100644 taskcluster/ci/source-test/wpt-metadata.yml create mode 100644 taskcluster/ci/spidermonkey/kind.yml create mode 100644 taskcluster/ci/spidermonkey/linux.yml create mode 100644 taskcluster/ci/spidermonkey/windows.yml create mode 100644 taskcluster/ci/startup-test/kind.yml create mode 100644 taskcluster/ci/static-analysis-autotest/kind.yml create mode 100644 taskcluster/ci/system-symbols-reprocess/kind.yml create mode 100644 taskcluster/ci/system-symbols-upload/kind.yml create mode 100644 taskcluster/ci/system-symbols/kind.yml create mode 100644 taskcluster/ci/test/awsy.yml create mode 100644 taskcluster/ci/test/browsertime-desktop.yml create mode 100644 taskcluster/ci/test/browsertime-mobile.yml create mode 100644 taskcluster/ci/test/compiled.yml create mode 100644 taskcluster/ci/test/firefox-ui.yml create mode 100644 taskcluster/ci/test/kind.yml create mode 100644 taskcluster/ci/test/marionette.yml create mode 100644 taskcluster/ci/test/misc.yml create mode 100644 taskcluster/ci/test/mochitest.yml create mode 100644 taskcluster/ci/test/reftest.yml create mode 100644 taskcluster/ci/test/talos.yml create mode 100644 taskcluster/ci/test/test-platforms.yml create mode 100644 taskcluster/ci/test/test-sets.yml create mode 100644 taskcluster/ci/test/variants.yml create mode 100644 taskcluster/ci/test/web-platform.yml create mode 100644 taskcluster/ci/test/xpcshell.yml create mode 100644 taskcluster/ci/toolchain/android.yml create mode 100644 taskcluster/ci/toolchain/cargo-vet.yml create mode 100644 taskcluster/ci/toolchain/cbindgen.yml create mode 100644 taskcluster/ci/toolchain/clang-tidy.yml create mode 100644 taskcluster/ci/toolchain/clang.yml create mode 100644 taskcluster/ci/toolchain/compiler-rt.yml create mode 100644 taskcluster/ci/toolchain/dist-toolchains.yml create mode 100644 taskcluster/ci/toolchain/dump-syms.yml create mode 100644 taskcluster/ci/toolchain/fix-stacks.yml create mode 100644 taskcluster/ci/toolchain/gcc.yml create mode 100644 taskcluster/ci/toolchain/geckodriver.yml create mode 100644 taskcluster/ci/toolchain/gn.yml create mode 100644 taskcluster/ci/toolchain/grcov.yml create mode 100644 taskcluster/ci/toolchain/kind.yml create mode 100644 taskcluster/ci/toolchain/libunwind.yml create mode 100644 taskcluster/ci/toolchain/llvm-symbolizer.yml create mode 100644 taskcluster/ci/toolchain/macos-sdk.yml create mode 100644 taskcluster/ci/toolchain/mingw.yml create mode 100644 taskcluster/ci/toolchain/minidump-stackwalk.yml create mode 100644 taskcluster/ci/toolchain/misc.yml create mode 100644 taskcluster/ci/toolchain/nasm.yml create mode 100644 taskcluster/ci/toolchain/node.yml create mode 100644 taskcluster/ci/toolchain/pkgconf.yml create mode 100644 taskcluster/ci/toolchain/python.yml create mode 100644 taskcluster/ci/toolchain/resourcemonitor.yml create mode 100644 taskcluster/ci/toolchain/rust-size.yml create mode 100644 taskcluster/ci/toolchain/rust.yml create mode 100644 taskcluster/ci/toolchain/sccache.yml create mode 100644 taskcluster/ci/toolchain/sysroot.yml create mode 100644 taskcluster/ci/updatebot/kind.yml create mode 100644 taskcluster/ci/updatebot/moz.build create mode 100644 taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest create mode 100644 taskcluster/ci/upload-generated-sources-dummy/kind.yml create mode 100644 taskcluster/ci/upload-generated-sources/kind.yml create mode 100644 taskcluster/ci/upload-symbols-dummy/kind.yml create mode 100644 taskcluster/ci/upload-symbols/kind.yml create mode 100644 taskcluster/ci/valgrind/kind.yml create mode 100644 taskcluster/ci/webrender/kind.yml create mode 100644 taskcluster/docker/REGISTRY create mode 100644 taskcluster/docker/android-build/Dockerfile create mode 100644 taskcluster/docker/android-build/README.md create mode 100644 taskcluster/docker/android-build/VERSION create mode 100644 taskcluster/docker/condprof/Dockerfile create mode 100644 taskcluster/docker/custom-car-linux/Dockerfile create mode 100644 taskcluster/docker/custom-v8/Dockerfile create mode 100644 taskcluster/docker/debian-base/Dockerfile create mode 100644 taskcluster/docker/debian-build/Dockerfile create mode 100644 taskcluster/docker/debian-packages/Dockerfile create mode 100644 taskcluster/docker/debian-raw/Dockerfile create mode 100755 taskcluster/docker/debian-raw/gpgvnoexpkeysig create mode 100755 taskcluster/docker/debian-raw/taskcluster-hack.sh create mode 100644 taskcluster/docker/debian-repackage/Dockerfile create mode 100644 taskcluster/docker/decision/Dockerfile create mode 100644 taskcluster/docker/decision/HASH create mode 100644 taskcluster/docker/decision/README.md create mode 100644 taskcluster/docker/decision/VERSION create mode 100755 taskcluster/docker/decision/comm-task-env create mode 100644 taskcluster/docker/decision/system-setup.sh create mode 100644 taskcluster/docker/diffoscope/Dockerfile create mode 100644 taskcluster/docker/diffoscope/get_and_diffoscope create mode 100644 taskcluster/docker/diffoscope/readelf create mode 100755 taskcluster/docker/diffoscope/report_error create mode 100644 taskcluster/docker/diffoscope/test_diffoscope create mode 100644 taskcluster/docker/fetch/Dockerfile create mode 100644 taskcluster/docker/firefox-flatpak/Dockerfile create mode 100644 taskcluster/docker/firefox-flatpak/close_range.c create mode 100644 taskcluster/docker/firefox-flatpak/default-preferences.js create mode 100644 taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py create mode 100644 taskcluster/docker/firefox-flatpak/launch-script.sh create mode 100644 taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in create mode 100644 taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop create mode 100644 taskcluster/docker/firefox-flatpak/policies.json create mode 100755 taskcluster/docker/firefox-flatpak/runme.sh create mode 100644 taskcluster/docker/firefox-snap/Dockerfile create mode 100644 taskcluster/docker/firefox-snap/Makefile create mode 100644 taskcluster/docker/firefox-snap/download_and_install_snap.sh create mode 100644 taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py create mode 100644 taskcluster/docker/firefox-snap/firefox.desktop create mode 100644 taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in create mode 100644 taskcluster/docker/firefox-snap/policies.json create mode 100755 taskcluster/docker/firefox-snap/runme.sh create mode 100755 taskcluster/docker/firefox-snap/tmpdir create mode 100644 taskcluster/docker/funsize-update-generator/Dockerfile create mode 100644 taskcluster/docker/funsize-update-generator/Makefile create mode 100644 taskcluster/docker/funsize-update-generator/README create mode 100644 taskcluster/docker/funsize-update-generator/dep1.pubkey create mode 100644 taskcluster/docker/funsize-update-generator/nightly.pubkey create mode 100644 taskcluster/docker/funsize-update-generator/release.pubkey create mode 100644 taskcluster/docker/funsize-update-generator/requirements.in create mode 100644 taskcluster/docker/funsize-update-generator/requirements.txt create mode 100644 taskcluster/docker/funsize-update-generator/runme.sh create mode 100644 taskcluster/docker/funsize-update-generator/scripts/funsize.py create mode 100755 taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh create mode 100644 taskcluster/docker/gdb-test/Dockerfile create mode 100644 taskcluster/docker/github-sync/Dockerfile create mode 100755 taskcluster/docker/github-sync/prepare.sh create mode 100644 taskcluster/docker/github-sync/requirements.txt create mode 100644 taskcluster/docker/image_builder/Dockerfile create mode 100644 taskcluster/docker/image_builder/VERSION create mode 100644 taskcluster/docker/image_builder/apt.conf create mode 100644 taskcluster/docker/image_builder/build-image/Cargo.lock create mode 100644 taskcluster/docker/image_builder/build-image/Cargo.toml create mode 100644 taskcluster/docker/image_builder/build-image/src/config.rs create mode 100644 taskcluster/docker/image_builder/build-image/src/main.rs create mode 100644 taskcluster/docker/image_builder/build-image/src/taskcluster.rs create mode 100644 taskcluster/docker/image_builder/policy.json create mode 100644 taskcluster/docker/index-task/.eslintrc.js create mode 100644 taskcluster/docker/index-task/Dockerfile create mode 100644 taskcluster/docker/index-task/README create mode 100644 taskcluster/docker/index-task/insert-indexes.js create mode 100644 taskcluster/docker/index-task/package.json create mode 100644 taskcluster/docker/index-task/yarn.lock create mode 100644 taskcluster/docker/lint/Dockerfile create mode 100644 taskcluster/docker/lint/system-setup.sh create mode 100644 taskcluster/docker/partner-repack/Dockerfile create mode 100644 taskcluster/docker/partner-repack/known_hosts create mode 100644 taskcluster/docker/periodic-updates/.eslintrc.js create mode 100644 taskcluster/docker/periodic-updates/Dockerfile create mode 100644 taskcluster/docker/periodic-updates/README.md create mode 100755 taskcluster/docker/periodic-updates/runme.sh create mode 100644 taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js create mode 100644 taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js create mode 100755 taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh create mode 100755 taskcluster/docker/periodic-updates/setup.sh create mode 100644 taskcluster/docker/push-to-try/Dockerfile create mode 100644 taskcluster/docker/push-to-try/hgrc create mode 100644 taskcluster/docker/push-to-try/known_hosts create mode 100644 taskcluster/docker/recipes/common.sh create mode 100644 taskcluster/docker/recipes/debian-test-system-setup.sh create mode 100644 taskcluster/docker/recipes/dot-config/pip/pip.conf create mode 100755 taskcluster/docker/recipes/hgrc create mode 100644 taskcluster/docker/recipes/install-node.sh create mode 100755 taskcluster/docker/recipes/setup_packages.sh create mode 100644 taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh create mode 100644 taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh create mode 100644 taskcluster/docker/recipes/xvfb.sh create mode 100644 taskcluster/docker/sentry/Dockerfile create mode 100755 taskcluster/docker/sentry/prepare.sh create mode 100644 taskcluster/docker/sentry/submit_sentry_release.sh create mode 100644 taskcluster/docker/static-analysis-build/Dockerfile create mode 100644 taskcluster/docker/system-symbols-linux-scraper/Dockerfile create mode 100644 taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt create mode 100755 taskcluster/docker/system-symbols-linux-scraper/run.sh create mode 100644 taskcluster/docker/system-symbols-mac/Dockerfile create mode 100644 taskcluster/docker/system-symbols-mac/requirements.txt create mode 100644 taskcluster/docker/system-symbols-mac/setup.sh create mode 100644 taskcluster/docker/system-symbols-win/Dockerfile create mode 100644 taskcluster/docker/system-symbols-win/requirements.txt create mode 100644 taskcluster/docker/toolchain-build/Dockerfile create mode 100644 taskcluster/docker/ubuntu1804-base/Dockerfile create mode 100644 taskcluster/docker/ubuntu1804-test-base/Dockerfile create mode 100644 taskcluster/docker/ubuntu1804-test/Dockerfile create mode 100644 taskcluster/docker/ubuntu1804-test/apport create mode 100644 taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop create mode 100644 taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop create mode 100644 taskcluster/docker/ubuntu1804-test/dbus.sh create mode 100644 taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs create mode 100644 taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale create mode 100644 taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf create mode 100644 taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf create mode 100644 taskcluster/docker/ubuntu1804-test/fonts.conf create mode 100644 taskcluster/docker/ubuntu1804-test/motd create mode 100644 taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell create mode 100644 taskcluster/docker/update-verify/Dockerfile create mode 100644 taskcluster/docker/update-verify/system-setup.sh create mode 100644 taskcluster/docker/updatebot/Dockerfile create mode 100644 taskcluster/docker/updatebot/VERSION create mode 100644 taskcluster/docker/updatebot/arcanist_patch_size.patch create mode 100644 taskcluster/docker/updatebot/arcanist_windows_stream.patch create mode 100644 taskcluster/docker/updatebot/hgrc create mode 100644 taskcluster/docker/updatebot/moz.build create mode 100755 taskcluster/docker/updatebot/privileged-setup.sh create mode 100755 taskcluster/docker/updatebot/run.py create mode 100755 taskcluster/docker/updatebot/setup.sh create mode 100644 taskcluster/docker/updatebot/updatebot-version.sh create mode 100644 taskcluster/docker/updatebot/windows-php.ini create mode 100644 taskcluster/docker/updatebot/windows-setup.sh create mode 100644 taskcluster/docker/valgrind-build/Dockerfile create mode 100644 taskcluster/docker/webrender/Dockerfile create mode 100644 taskcluster/docs/attributes.rst create mode 100644 taskcluster/docs/balrog.rst create mode 100644 taskcluster/docs/caches.rst create mode 100644 taskcluster/docs/config.rst create mode 100644 taskcluster/docs/cron.rst create mode 100644 taskcluster/docs/howto/index.rst create mode 100644 taskcluster/docs/img/enableSourceServer.png create mode 100644 taskcluster/docs/img/windbg-srcfix.png create mode 100644 taskcluster/docs/index.rst create mode 100644 taskcluster/docs/kinds.rst create mode 100644 taskcluster/docs/kinds/test.rst create mode 100644 taskcluster/docs/optimization/index.rst create mode 100644 taskcluster/docs/optimization/schedules.rst create mode 100644 taskcluster/docs/parameters.rst create mode 100644 taskcluster/docs/partials.rst create mode 100644 taskcluster/docs/partner-attribution.rst create mode 100644 taskcluster/docs/partner-repacks.rst create mode 100644 taskcluster/docs/platforms.rst create mode 100644 taskcluster/docs/reference.rst create mode 100644 taskcluster/docs/release-promotion-action.rst create mode 100644 taskcluster/docs/release-promotion.rst create mode 100644 taskcluster/docs/signing.rst create mode 100644 taskcluster/docs/taskgraph.rst create mode 100644 taskcluster/docs/transforms/index.rst create mode 100644 taskcluster/docs/transforms/job.rst create mode 100644 taskcluster/docs/transforms/signing.rst create mode 100644 taskcluster/docs/transforms/task.rst create mode 100644 taskcluster/docs/transforms/test.rst create mode 100644 taskcluster/docs/try.rst create mode 100644 taskcluster/docs/using-the-mozilla-source-server.rst create mode 100644 taskcluster/docs/versioncontrol.rst create mode 100644 taskcluster/gecko_taskgraph/.ruff.toml create mode 100644 taskcluster/gecko_taskgraph/__init__.py create mode 100644 taskcluster/gecko_taskgraph/actions/__init__.py create mode 100644 taskcluster/gecko_taskgraph/actions/add_new_jobs.py create mode 100644 taskcluster/gecko_taskgraph/actions/add_talos.py create mode 100644 taskcluster/gecko_taskgraph/actions/backfill.py create mode 100644 taskcluster/gecko_taskgraph/actions/cancel.py create mode 100644 taskcluster/gecko_taskgraph/actions/cancel_all.py create mode 100644 taskcluster/gecko_taskgraph/actions/confirm_failure.py create mode 100644 taskcluster/gecko_taskgraph/actions/create_interactive.py create mode 100644 taskcluster/gecko_taskgraph/actions/gecko_profile.py create mode 100644 taskcluster/gecko_taskgraph/actions/merge_automation.py create mode 100644 taskcluster/gecko_taskgraph/actions/openh264.py create mode 100644 taskcluster/gecko_taskgraph/actions/purge_caches.py create mode 100644 taskcluster/gecko_taskgraph/actions/raptor_extra_options.py create mode 100644 taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py create mode 100644 taskcluster/gecko_taskgraph/actions/registry.py create mode 100644 taskcluster/gecko_taskgraph/actions/release_promotion.py create mode 100644 taskcluster/gecko_taskgraph/actions/retrigger.py create mode 100644 taskcluster/gecko_taskgraph/actions/retrigger_custom.py create mode 100644 taskcluster/gecko_taskgraph/actions/run_missing_tests.py create mode 100644 taskcluster/gecko_taskgraph/actions/scriptworker_canary.py create mode 100644 taskcluster/gecko_taskgraph/actions/side_by_side.py create mode 100644 taskcluster/gecko_taskgraph/actions/util.py create mode 100644 taskcluster/gecko_taskgraph/config.py create mode 100644 taskcluster/gecko_taskgraph/decision.py create mode 100644 taskcluster/gecko_taskgraph/docker.py create mode 100644 taskcluster/gecko_taskgraph/files_changed.py create mode 100644 taskcluster/gecko_taskgraph/loader/__init__.py create mode 100644 taskcluster/gecko_taskgraph/loader/multi_dep.py create mode 100644 taskcluster/gecko_taskgraph/loader/single_dep.py create mode 100644 taskcluster/gecko_taskgraph/loader/test.py create mode 100644 taskcluster/gecko_taskgraph/loader/transform.py create mode 100644 taskcluster/gecko_taskgraph/main.py create mode 100644 taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/release_checksums.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/source_checksums.yml create mode 100644 taskcluster/gecko_taskgraph/manifests/source_files.yml create mode 100644 taskcluster/gecko_taskgraph/morph.py create mode 100644 taskcluster/gecko_taskgraph/optimize/__init__.py create mode 100644 taskcluster/gecko_taskgraph/optimize/backstop.py create mode 100644 taskcluster/gecko_taskgraph/optimize/bugbug.py create mode 100644 taskcluster/gecko_taskgraph/optimize/schema.py create mode 100644 taskcluster/gecko_taskgraph/optimize/strategies.py create mode 100644 taskcluster/gecko_taskgraph/parameters.py create mode 100644 taskcluster/gecko_taskgraph/target_tasks.py create mode 100644 taskcluster/gecko_taskgraph/test/__init__.py create mode 100644 taskcluster/gecko_taskgraph/test/automationrelevance.json create mode 100644 taskcluster/gecko_taskgraph/test/conftest.py create mode 100644 taskcluster/gecko_taskgraph/test/docs/kinds.rst create mode 100644 taskcluster/gecko_taskgraph/test/docs/parameters.rst create mode 100644 taskcluster/gecko_taskgraph/test/python.ini create mode 100644 taskcluster/gecko_taskgraph/test/test_actions_util.py create mode 100644 taskcluster/gecko_taskgraph/test/test_decision.py create mode 100644 taskcluster/gecko_taskgraph/test/test_files_changed.py create mode 100644 taskcluster/gecko_taskgraph/test/test_main.py create mode 100644 taskcluster/gecko_taskgraph/test/test_morph.py create mode 100644 taskcluster/gecko_taskgraph/test/test_optimize_strategies.py create mode 100644 taskcluster/gecko_taskgraph/test/test_target_tasks.py create mode 100644 taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py create mode 100644 taskcluster/gecko_taskgraph/test/test_transforms_job.py create mode 100644 taskcluster/gecko_taskgraph/test/test_transforms_test.py create mode 100644 taskcluster/gecko_taskgraph/test/test_try_option_syntax.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_attributes.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_backstop.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_bugbug.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_chunking.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_docker.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_partials.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_templates.py create mode 100644 taskcluster/gecko_taskgraph/test/test_util_verify.py create mode 100644 taskcluster/gecko_taskgraph/transforms/__init__.py create mode 100644 taskcluster/gecko_taskgraph/transforms/artifact.py create mode 100644 taskcluster/gecko_taskgraph/transforms/artifacts.yml create mode 100644 taskcluster/gecko_taskgraph/transforms/attribution.py create mode 100644 taskcluster/gecko_taskgraph/transforms/balrog_submit.py create mode 100644 taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_apt.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_snap.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_source.py create mode 100644 taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bootstrap.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bouncer_check.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bouncer_locations.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bouncer_submission.py create mode 100644 taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py create mode 100644 taskcluster/gecko_taskgraph/transforms/build.py create mode 100644 taskcluster/gecko_taskgraph/transforms/build_attrs.py create mode 100644 taskcluster/gecko_taskgraph/transforms/build_fat_aar.py create mode 100644 taskcluster/gecko_taskgraph/transforms/build_lints.py create mode 100644 taskcluster/gecko_taskgraph/transforms/build_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/cached_tasks.py create mode 100644 taskcluster/gecko_taskgraph/transforms/chunk_partners.py create mode 100644 taskcluster/gecko_taskgraph/transforms/code_review.py create mode 100644 taskcluster/gecko_taskgraph/transforms/condprof.py create mode 100644 taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py create mode 100644 taskcluster/gecko_taskgraph/transforms/cross_channel.py create mode 100644 taskcluster/gecko_taskgraph/transforms/diffoscope.py create mode 100644 taskcluster/gecko_taskgraph/transforms/docker_image.py create mode 100644 taskcluster/gecko_taskgraph/transforms/fetch.py create mode 100644 taskcluster/gecko_taskgraph/transforms/final_verify.py create mode 100644 taskcluster/gecko_taskgraph/transforms/fxrecord.py create mode 100644 taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py create mode 100644 taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/github_sync.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/__init__.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/common.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/distro_package.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/hazard.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/mach.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/mozharness.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/python_test.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/run_task.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py create mode 100644 taskcluster/gecko_taskgraph/transforms/job/toolchain.py create mode 100644 taskcluster/gecko_taskgraph/transforms/l10n.py create mode 100644 taskcluster/gecko_taskgraph/transforms/mac_dummy.py create mode 100644 taskcluster/gecko_taskgraph/transforms/mac_notarization.py create mode 100644 taskcluster/gecko_taskgraph/transforms/mar_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/maybe_release.py create mode 100644 taskcluster/gecko_taskgraph/transforms/merge_automation.py create mode 100644 taskcluster/gecko_taskgraph/transforms/name_sanity.py create mode 100644 taskcluster/gecko_taskgraph/transforms/openh264.py create mode 100644 taskcluster/gecko_taskgraph/transforms/openh264_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/partials.py create mode 100644 taskcluster/gecko_taskgraph/transforms/partner_attribution.py create mode 100644 taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py create mode 100644 taskcluster/gecko_taskgraph/transforms/partner_repack.py create mode 100644 taskcluster/gecko_taskgraph/transforms/partner_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py create mode 100644 taskcluster/gecko_taskgraph/transforms/perftest.py create mode 100644 taskcluster/gecko_taskgraph/transforms/python_update.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_deps.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_msix_push.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_notifications.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_started.py create mode 100644 taskcluster/gecko_taskgraph/transforms/release_version_bump.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_l10n.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_partner.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_routes.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py create mode 100644 taskcluster/gecko_taskgraph/transforms/repo_update.py create mode 100644 taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py create mode 100644 taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py create mode 100644 taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py create mode 100644 taskcluster/gecko_taskgraph/transforms/scriptworker.py create mode 100644 taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py create mode 100644 taskcluster/gecko_taskgraph/transforms/sentry.py create mode 100644 taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py create mode 100644 taskcluster/gecko_taskgraph/transforms/source_test.py create mode 100644 taskcluster/gecko_taskgraph/transforms/spidermonkey.py create mode 100644 taskcluster/gecko_taskgraph/transforms/split_by_locale.py create mode 100644 taskcluster/gecko_taskgraph/transforms/startup_test.py create mode 100644 taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py create mode 100644 taskcluster/gecko_taskgraph/transforms/task.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/__init__.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/chunk.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/other.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/raptor.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/variant.py create mode 100644 taskcluster/gecko_taskgraph/transforms/test/worker.py create mode 100644 taskcluster/gecko_taskgraph/transforms/try_job.py create mode 100644 taskcluster/gecko_taskgraph/transforms/update_verify.py create mode 100644 taskcluster/gecko_taskgraph/transforms/update_verify_config.py create mode 100644 taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py create mode 100644 taskcluster/gecko_taskgraph/transforms/upload_symbols.py create mode 100644 taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py create mode 100644 taskcluster/gecko_taskgraph/try_option_syntax.py create mode 100644 taskcluster/gecko_taskgraph/util/__init__.py create mode 100644 taskcluster/gecko_taskgraph/util/attributes.py create mode 100644 taskcluster/gecko_taskgraph/util/backstop.py create mode 100644 taskcluster/gecko_taskgraph/util/bugbug.py create mode 100644 taskcluster/gecko_taskgraph/util/cached_tasks.py create mode 100644 taskcluster/gecko_taskgraph/util/chunking.py create mode 100644 taskcluster/gecko_taskgraph/util/copy_task.py create mode 100644 taskcluster/gecko_taskgraph/util/declarative_artifacts.py create mode 100644 taskcluster/gecko_taskgraph/util/docker.py create mode 100644 taskcluster/gecko_taskgraph/util/hash.py create mode 100644 taskcluster/gecko_taskgraph/util/hg.py create mode 100644 taskcluster/gecko_taskgraph/util/partials.py create mode 100644 taskcluster/gecko_taskgraph/util/partners.py create mode 100644 taskcluster/gecko_taskgraph/util/perfile.py create mode 100644 taskcluster/gecko_taskgraph/util/platforms.py create mode 100644 taskcluster/gecko_taskgraph/util/scriptworker.py create mode 100644 taskcluster/gecko_taskgraph/util/signed_artifacts.py create mode 100644 taskcluster/gecko_taskgraph/util/taskcluster.py create mode 100644 taskcluster/gecko_taskgraph/util/taskgraph.py create mode 100644 taskcluster/gecko_taskgraph/util/templates.py create mode 100644 taskcluster/gecko_taskgraph/util/verify.py create mode 100644 taskcluster/gecko_taskgraph/util/workertypes.py create mode 100644 taskcluster/mach_commands.py create mode 100644 taskcluster/moz.build create mode 100755 taskcluster/scripts/builder/build-haz-linux.sh create mode 100755 taskcluster/scripts/builder/build-l10n.sh create mode 100755 taskcluster/scripts/builder/build-linux.sh create mode 100755 taskcluster/scripts/builder/build-sm-package.sh create mode 100755 taskcluster/scripts/builder/build-sm.sh create mode 100755 taskcluster/scripts/builder/repackage.sh create mode 100755 taskcluster/scripts/copy.sh create mode 100644 taskcluster/scripts/misc/afl-nyx.patch create mode 100755 taskcluster/scripts/misc/android-gradle-dependencies-lite.sh create mode 100755 taskcluster/scripts/misc/android-gradle-dependencies.sh create mode 100755 taskcluster/scripts/misc/android-gradle-dependencies/after.sh create mode 100755 taskcluster/scripts/misc/android-gradle-dependencies/before.sh create mode 100644 taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml create mode 100644 taskcluster/scripts/misc/are-we-esmified-yet.py create mode 100755 taskcluster/scripts/misc/browsertime.sh create mode 100755 taskcluster/scripts/misc/build-afl.sh create mode 100755 taskcluster/scripts/misc/build-binutils-linux.sh create mode 100755 taskcluster/scripts/misc/build-breakpad-injector.sh create mode 100755 taskcluster/scripts/misc/build-cctools-port.sh create mode 100755 taskcluster/scripts/misc/build-clang-mingw.sh create mode 100755 taskcluster/scripts/misc/build-clang-tidy-external.sh create mode 100755 taskcluster/scripts/misc/build-clang.sh create mode 100755 taskcluster/scripts/misc/build-compiler-rt-wasi.sh create mode 100755 taskcluster/scripts/misc/build-compiler-rt.sh create mode 100755 taskcluster/scripts/misc/build-cpython.sh create mode 100755 taskcluster/scripts/misc/build-custom-car-linux.sh create mode 100644 taskcluster/scripts/misc/build-custom-car-win64.sh create mode 100755 taskcluster/scripts/misc/build-custom-v8.sh create mode 100755 taskcluster/scripts/misc/build-dist-toolchains.sh create mode 100755 taskcluster/scripts/misc/build-dmg-hfsplus.sh create mode 100755 taskcluster/scripts/misc/build-gcc-linux.sh create mode 100755 taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh create mode 100755 taskcluster/scripts/misc/build-geckodriver.sh create mode 100755 taskcluster/scripts/misc/build-gn-common.sh create mode 100755 taskcluster/scripts/misc/build-gn-linux.sh create mode 100755 taskcluster/scripts/misc/build-gn-macosx.sh create mode 100755 taskcluster/scripts/misc/build-gn-win64.sh create mode 100755 taskcluster/scripts/misc/build-hfsplus-linux.sh create mode 100755 taskcluster/scripts/misc/build-libunwind.sh create mode 100755 taskcluster/scripts/misc/build-llvm-common.sh create mode 100755 taskcluster/scripts/misc/build-llvm-symbolizer.sh create mode 100755 taskcluster/scripts/misc/build-mar-tools.sh create mode 100755 taskcluster/scripts/misc/build-mingw-fxc2-x86.sh create mode 100755 taskcluster/scripts/misc/build-mingw32-nsis.sh create mode 100755 taskcluster/scripts/misc/build-mkbom-linux.sh create mode 100755 taskcluster/scripts/misc/build-mozmake.sh create mode 100755 taskcluster/scripts/misc/build-msix-packaging.sh create mode 100755 taskcluster/scripts/misc/build-nasm.sh create mode 100755 taskcluster/scripts/misc/build-nsis.sh create mode 100755 taskcluster/scripts/misc/build-pkgconf.sh create mode 100755 taskcluster/scripts/misc/build-resourcemonitor.sh create mode 100755 taskcluster/scripts/misc/build-rust-based-toolchain.sh create mode 100755 taskcluster/scripts/misc/build-sysroot-wasi.sh create mode 100755 taskcluster/scripts/misc/build-sysroot.sh create mode 100755 taskcluster/scripts/misc/build-upx.sh create mode 100755 taskcluster/scripts/misc/build-winchecksec.sh create mode 100755 taskcluster/scripts/misc/build-wine.sh create mode 100755 taskcluster/scripts/misc/build-xar-linux.sh create mode 100644 taskcluster/scripts/misc/fetch-chromium.py create mode 100755 taskcluster/scripts/misc/fetch-content create mode 100755 taskcluster/scripts/misc/get_vs.py create mode 100644 taskcluster/scripts/misc/mingw-composition.patch create mode 100644 taskcluster/scripts/misc/mingw-dispatchqueue.patch create mode 100644 taskcluster/scripts/misc/mingw-dwrite_3.patch create mode 100644 taskcluster/scripts/misc/mingw-enum.patch create mode 100644 taskcluster/scripts/misc/mingw-ts_sd.patch create mode 100644 taskcluster/scripts/misc/mingw-unknown.patch create mode 100644 taskcluster/scripts/misc/mingw-widl.patch create mode 100644 taskcluster/scripts/misc/moz.build create mode 100755 taskcluster/scripts/misc/osx-cross-linker create mode 100755 taskcluster/scripts/misc/pack-cpython.sh create mode 100755 taskcluster/scripts/misc/pack.sh create mode 100755 taskcluster/scripts/misc/private_local_toolchain.sh create mode 100755 taskcluster/scripts/misc/repack-android-avd-linux.sh create mode 100755 taskcluster/scripts/misc/repack-android-emulator-linux.sh create mode 100755 taskcluster/scripts/misc/repack-android-ndk-linux.sh create mode 100755 taskcluster/scripts/misc/repack-android-sdk-linux.sh create mode 100755 taskcluster/scripts/misc/repack-android-system-images-linux.sh create mode 100755 taskcluster/scripts/misc/repack-clang.sh create mode 100755 taskcluster/scripts/misc/repack-jdk-linux.sh create mode 100755 taskcluster/scripts/misc/repack-node.sh create mode 100755 taskcluster/scripts/misc/repack_rust.py create mode 100755 taskcluster/scripts/misc/run-profileserver-macos.sh create mode 100755 taskcluster/scripts/misc/run-profileserver.sh create mode 100755 taskcluster/scripts/misc/source-test-clang-setup.sh create mode 100755 taskcluster/scripts/misc/source-test-common.sh create mode 100755 taskcluster/scripts/misc/source-test-infer-setup.sh create mode 100644 taskcluster/scripts/misc/summarize-tgdiff.py create mode 100644 taskcluster/scripts/misc/tooltool-download.sh create mode 100755 taskcluster/scripts/misc/unify.sh create mode 100644 taskcluster/scripts/misc/unpack-sdk.py create mode 100644 taskcluster/scripts/misc/verify-devtools-bundle.py create mode 100644 taskcluster/scripts/misc/vs-cleanup.sh create mode 100644 taskcluster/scripts/misc/vs-setup.sh create mode 100755 taskcluster/scripts/misc/wr-cargotest-macos-build.sh create mode 100755 taskcluster/scripts/misc/wr-macos-cross-build-setup.sh create mode 100755 taskcluster/scripts/misc/wrench-android-build.sh create mode 100755 taskcluster/scripts/misc/wrench-deps-vendoring.sh create mode 100755 taskcluster/scripts/misc/wrench-macos-build.sh create mode 100644 taskcluster/scripts/misc/wrench-windows-tests.sh create mode 100755 taskcluster/scripts/misc/zstdpy create mode 100755 taskcluster/scripts/run-task create mode 100755 taskcluster/scripts/tester/run-wizard create mode 100755 taskcluster/scripts/tester/test-linux.sh create mode 100644 taskcluster/test/conftest.py create mode 100644 taskcluster/test/data/automationrelevance.json create mode 100644 taskcluster/test/data/bugbug-push-schedules.json create mode 100644 taskcluster/test/data/pushes.json create mode 100644 taskcluster/test/params/autoland-onpush.yml create mode 100644 taskcluster/test/params/mb-onpush.yml create mode 100644 taskcluster/test/params/mb-promote-devedition-partials.yml create mode 100644 taskcluster/test/params/mb-promote-devedition.yml create mode 100644 taskcluster/test/params/mb-promote-firefox-partials.yml create mode 100644 taskcluster/test/params/mb-promote-firefox.yml create mode 100644 taskcluster/test/params/mb-push-devedition.yml create mode 100644 taskcluster/test/params/mb-push-firefox-partials.yml create mode 100644 taskcluster/test/params/mb-push-firefox.yml create mode 100644 taskcluster/test/params/mb-ship-devedition.yml create mode 100644 taskcluster/test/params/mb-ship-firefox-partials.yml create mode 100644 taskcluster/test/params/mb-ship-firefox.yml create mode 100644 taskcluster/test/params/mb-ship-geckoview.yml create mode 100644 taskcluster/test/params/mc-desktop-nightly.yml create mode 100644 taskcluster/test/params/mc-onpush.yml create mode 100644 taskcluster/test/params/mc-ship-geckoview.yml create mode 100644 taskcluster/test/params/me-promote-firefox.yml create mode 100644 taskcluster/test/params/me-push-firefox.yml create mode 100644 taskcluster/test/params/me-ship-firefox.yml create mode 100644 taskcluster/test/params/mr-onpush-geckoview.yml create mode 100644 taskcluster/test/params/mr-onpush.yml create mode 100644 taskcluster/test/params/mr-promote-firefox-rc.yml create mode 100644 taskcluster/test/params/mr-promote-firefox.yml create mode 100644 taskcluster/test/params/mr-push-firefox.yml create mode 100644 taskcluster/test/params/mr-ship-firefox-rc.yml create mode 100644 taskcluster/test/params/mr-ship-firefox.yml create mode 100644 taskcluster/test/params/mr-ship-geckoview.yml create mode 100644 taskcluster/test/params/try.yml create mode 100644 taskcluster/test/python.ini create mode 100644 taskcluster/test/test_autoland.py create mode 100644 taskcluster/test/test_autoland_backstop.py create mode 100644 taskcluster/test/test_generate_params.py create mode 100644 taskcluster/test/test_mach_try_auto.py create mode 100644 taskcluster/test/test_mozilla_central.py (limited to 'taskcluster') diff --git a/taskcluster/.yamllint b/taskcluster/.yamllint new file mode 100644 index 0000000000..565358489b --- /dev/null +++ b/taskcluster/.yamllint @@ -0,0 +1,15 @@ +--- +ignore: | + *node_modules* + +extends: default + +rules: + document-end: + present: false + document-start: + present: true + indentation: + spaces: 4 + # Checks currently failing + line-length: disable diff --git a/taskcluster/ci/addon/kind.yml b/taskcluster/ci/addon/kind.yml new file mode 100644 index 0000000000..361071e6be --- /dev/null +++ b/taskcluster/ci/addon/kind.yml @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + tps-xpi: + description: Build the TPS add-on + index: + product: firefox + job-name: addons.tps + treeherder: + platform: linux64/opt + symbol: TPS(addon) + kind: build + tier: 1 + run-on-projects: [mozilla-central] + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: debian11-amd64-build} + max-run-time: 1800 + artifacts: + - type: file + name: public/tps.xpi + path: /builds/worker/checkouts/gecko/tps-out/tps.xpi + run: + using: mach + mach: tps-build --dest tps-out + sparse-profile: tps + when: + files-changed: + - 'services/sync/tps/extensions/tps/**' diff --git a/taskcluster/ci/are-we-esmified-yet/kind.yml b/taskcluster/ci/are-we-esmified-yet/kind.yml new file mode 100644 index 0000000000..f2c462f455 --- /dev/null +++ b/taskcluster/ci/are-we-esmified-yet/kind.yml @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - fetch + +transforms: + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + check: + description: Extracts statistics on remaining JSMs in the codebase + run-on-projects: [] + attributes: + cron: true + index: + product: firefox + job-name: are-we-esmified-yet + treeherder: + platform: lint/opt + kind: other + symbol: js(esm) + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 3600 + artifacts: + - type: file + name: public/are-we-esmified-yet.json + path: /builds/worker/artifacts/are-we-esmified-yet.json + run: + using: run-task + command: >- + mkdir -p /builds/worker/artifacts && + cd ${GECKO_PATH} && + python3 ./taskcluster/scripts/misc/are-we-esmified-yet.py > /builds/worker/artifacts/are-we-esmified-yet.json diff --git a/taskcluster/ci/artifact-build/kind.yml b/taskcluster/ci/artifact-build/kind.yml new file mode 100644 index 0000000000..77da9ea7de --- /dev/null +++ b/taskcluster/ci/artifact-build/kind.yml @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.artifact:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + use-system-python: false + +jobs: + linux64-artifact/opt: + description: "Linux64 Opt Artifact Build" + index: + product: firefox + job-name: linux64-artifact-opt + treeherder: + platform: linux64/opt + kind: build + symbol: AB + tier: 2 + run-on-projects: ['mozilla-central'] + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + env: + PERFHERDER_EXTRA_OPTIONS: artifact + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + MOZ_ARTIFACT_TASK: {task-reference: ''} + USE_ARTIFACT: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + keep-artifacts: false + dependencies: + linux64-opt: build-linux64/opt + fetches: + toolchain: + - linux64-node diff --git a/taskcluster/ci/attribution-l10n/kind.yml b/taskcluster/ci/attribution-l10n/kind.yml new file mode 100644 index 0000000000..34cddec74d --- /dev/null +++ b/taskcluster/ci/attribution-l10n/kind.yml @@ -0,0 +1,130 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.split_by_locale:transforms + - gecko_taskgraph.transforms.attribution:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + # Windows + - repackage-signing-l10n + +job-defaults: + description: Attribute release builds + shipping-phase: promote + # never run as part of CI + run-on-projects: [] + worker-type: b-linux-gcp + locales-file: browser/locales/l10n-changesets.json + properties-with-locale: + - label + - dependencies.repackage-signing-l10n + - treeherder.symbol + - fetches.repackage-signing-l10n + attributes: + build_type: opt + release_artifacts: + - public/build/target.installer.exe + treeherder: + symbol: Attr-L10n({locale}) + kind: other + tier: 1 + fetches: + repackage-signing-l10n: + - "{locale}/target.installer.exe" + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts + docker-image: + in-tree: "partner-repack" + chain-of-trust: true + # Each task only processes one installer...this should be quick. + max-run-time: 600 + run: + using: run-task + cwd: "{checkout}" + command: + - ./mach + - python + - python/mozrelease/mozrelease/attribute_builds.py + - --attribution + - dlsource={attribution_code[json][dlsource]} + - --output + - /builds/worker/artifacts + # All jobs require attribution of target.installer.exe. Some may require + # attribution of other files, which they can append themselves. + - --input + - /builds/worker/fetches/target.installer.exe + command-context: + from-file: browser/installer/attribution.yml + +jobs: + win32-devedition/opt: + label: attribution-win32-{locale}-devedition/opt + shipping-product: devedition + attributes: + build_platform: win32-devedition + treeherder: + platform: win32-devedition/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win32-devedition/opt + + win32-shippable/opt: + label: attribution-win32-{locale}-shippable/opt + shipping-product: firefox + locale-file-platform: win32 + attributes: + build_platform: win32-shippable + treeherder: + platform: win32-shippable/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win32-shippable/opt + + win64-devedition/opt: + label: attribution-win64-{locale}-devedition/opt + shipping-product: devedition + attributes: + build_platform: win64-devedition + treeherder: + platform: win64-devedition/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-devedition/opt + + win64-shippable/opt: + label: attribution-win64-{locale}-shippable/opt + shipping-product: firefox + locale-file-platform: win64 + attributes: + build_platform: win64-shippable + treeherder: + platform: win64-shippable/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-shippable/opt + + win64-aarch64-shippable/opt: + label: attribution-win64-aarch64-{locale}-shippable/opt + shipping-product: firefox + locale-file-platform: win64-aarch64 + attributes: + build_platform: win64-aarch64-shippable + treeherder: + platform: win64-aarch64-shippable/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-aarch64-shippable/opt + + win64-aarch64-devedition/opt: + label: attribution-win64-aarch64-{locale}-devedition/opt + shipping-product: devedition + attributes: + build_platform: win64-aarch64-devedition + treeherder: + platform: win64-aarch64-devedition/opt + dependencies: + repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-aarch64-devedition/opt diff --git a/taskcluster/ci/attribution/kind.yml b/taskcluster/ci/attribution/kind.yml new file mode 100644 index 0000000000..3d9c903910 --- /dev/null +++ b/taskcluster/ci/attribution/kind.yml @@ -0,0 +1,125 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.attribution:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + # Windows + - repackage-signing + +job-defaults: + description: Attribute release builds + shipping-phase: promote + # never run as part of CI + run-on-projects: [] + worker-type: b-linux-gcp + fetches: + repackage-signing: + - target.installer.exe + attributes: + release_artifacts: + - public/build/target.installer.exe + treeherder: + symbol: Attr + kind: other + tier: 1 + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts + docker-image: + in-tree: "partner-repack" + chain-of-trust: true + # Each task only processes one installer...this should be quick. + max-run-time: 600 + run: + using: run-task + cwd: "{checkout}" + command: + - ./mach + - python + - python/mozrelease/mozrelease/attribute_builds.py + - --attribution + - dlsource={attribution_code[json][dlsource]} + - --output + - /builds/worker/artifacts + # All jobs require attribution of target.installer.exe. Some may require + # attribution of other files, which they can append themselves. + - --input + - /builds/worker/fetches/target.installer.exe + command-context: + from-file: browser/installer/attribution.yml + +jobs: + win32-devedition/opt: + label: attribution-win32-devedition/opt + shipping-product: devedition + attributes: + build_platform: win32-devedition + build_type: opt + treeherder: + platform: win32-devedition/opt + dependencies: + repackage-signing: repackage-signing-win32-devedition/opt + + win32-shippable/opt: + label: attribution-win32-shippable/opt + shipping-product: firefox + attributes: + build_platform: win32-shippable + build_type: opt + treeherder: + platform: win32-shippable/opt + dependencies: + repackage-signing: repackage-signing-win32-shippable/opt + + win64-devedition/opt: + label: attribution-win64-devedition/opt + shipping-product: devedition + attributes: + build_platform: win64-devedition + build_type: opt + treeherder: + platform: win64-devedition/opt + dependencies: + repackage-signing: repackage-signing-win64-devedition/opt + + win64-shippable/opt: + label: attribution-win64-shippable/opt + shipping-product: firefox + attributes: + build_platform: win64-shippable + build_type: opt + treeherder: + platform: win64-shippable/opt + dependencies: + repackage-signing: repackage-signing-win64-shippable/opt + + win64-aarch64-shippable/opt: + label: attribution-win64-aarch64-shippable/opt + shipping-product: firefox + attributes: + build_platform: win64-aarch64-shippable + build_type: opt + treeherder: + platform: win64-aarch64-shippable/opt + dependencies: + repackage-signing: repackage-signing-win64-aarch64-shippable/opt + + win64-aarch64-devedition/opt: + label: attribution-win64-aarch64-devedition/opt + shipping-product: devedition + attributes: + build_platform: win64-aarch64-devedition + build_type: opt + treeherder: + platform: win64-aarch64-devedition/opt + dependencies: + repackage-signing: repackage-signing-win64-aarch64-devedition/opt diff --git a/taskcluster/ci/balrog/kind.yml b/taskcluster/ci/balrog/kind.yml new file mode 100644 index 0000000000..eda695f225 --- /dev/null +++ b/taskcluster/ci/balrog/kind.yml @@ -0,0 +1,31 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.balrog_submit:transforms + - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-repackage + - startup-test + +only-for-attributes: + - nightly + - shippable + +not-for-build-platforms: + - android-arm-shippable/opt + - android-x86_64-shippable/opt + - android-x86-shippable/opt + - android-aarch64-shippable/opt + +job-template: + update-no-wnp: + by-release-type: + nightly.*: false + default: true diff --git a/taskcluster/ci/beetmover-apt/kind.yml b/taskcluster/ci/beetmover-apt/kind.yml new file mode 100644 index 0000000000..44762f49c2 --- /dev/null +++ b/taskcluster/ci/beetmover-apt/kind.yml @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.beetmover_apt:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-repackage + +primary-dependency: + - beetmover-repackage + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - linux-devedition/opt + - linux64-devedition/opt + +job-template: + run-on-releases: + - nightly diff --git a/taskcluster/ci/beetmover-checksums/kind.yml b/taskcluster/ci/beetmover-checksums/kind.yml new file mode 100644 index 0000000000..22cfecad02 --- /dev/null +++ b/taskcluster/ci/beetmover-checksums/kind.yml @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_checksums:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-repackage + +only-for-attributes: + - nightly + - shippable + +job-template: + shipping-phase: promote + attributes: + artifact_prefix: public + artifact_map: + by-release-type: + beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml + default: taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml diff --git a/taskcluster/ci/beetmover-geckoview/kind.yml b/taskcluster/ci/beetmover-geckoview/kind.yml new file mode 100644 index 0000000000..eab727f4ce --- /dev/null +++ b/taskcluster/ci/beetmover-geckoview/kind.yml @@ -0,0 +1,64 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_geckoview:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + +only-for-attributes: + - nightly + - shippable + +not-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - linux64-nightlyasrelease/opt + - macosx64-shippable/opt + - macosx64-nightlyasrelease/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - win64-nightlyasrelease/opt + - linux-devedition/opt + - linux64-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + - linux64-asan-reporter-shippable/opt + - win64-asan-reporter-shippable/opt + +job-template: + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml + run-on-projects: ['mozilla-release'] + run-on-hg-branches: + by-project: + mozilla-release: + - '^GECKOVIEW_\d+_RELBRANCH$' + default: + - 'all' + shipping-phase: + by-project: + # Beetmoving geckoview makes it available to the official maven repo. + # That happens: + # 1. as part of the ship-geckoview graph on mozilla-central + # 2. as part of Firefox promote graphs on both mozilla-beta and mozilla-release + # 3. at every patch uplifted on the GECKOVIEW_XX_RELBRANCH on mozilla-release + # Reminder: There is no Android/geckoview build on ESR. + # + # The logic of point 2 is handled in target_tasks directly because it's mixing and + # matching 2 different shipping-products + mozilla-release: build + default: promote + bucket-scope: + by-release-level: + production: 'project:releng:beetmover:bucket:maven-production' + staging: 'project:releng:beetmover:bucket:maven-staging' diff --git a/taskcluster/ci/beetmover-repackage/kind.yml b/taskcluster/ci/beetmover-repackage/kind.yml new file mode 100644 index 0000000000..8d8d632408 --- /dev/null +++ b/taskcluster/ci/beetmover-repackage/kind.yml @@ -0,0 +1,67 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: single-locale + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_repackage_l10n:transforms + - gecko_taskgraph.transforms.beetmover_repackage:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - build-signing + - build-mac-signing + - build-mac-notarization + - repackage + - repackage-signing + - shippable-l10n + - shippable-l10n-signing + - shippable-l10n-mac-signing + - shippable-l10n-mac-notarization + - repackage-l10n + - repackage-signing-l10n + - partials + - partials-signing + - repackage-signing-msi + - repackage-signing-shippable-l10n-msix + - mar-signing + - mar-signing-l10n + # Windows + - attribution + # Windows + - attribution-l10n + - repackage-deb + - repackage-deb-l10n + +primary-dependency: + - repackage + - repackage-l10n + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - linux-devedition/opt + - linux64-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + - linux64-asan-reporter-shippable/opt + - win64-asan-reporter-shippable/opt + +job-template: + shipping-phase: promote + attributes: + artifact_map: + by-release-type: + beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml + default: taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml diff --git a/taskcluster/ci/beetmover-source/kind.yml b/taskcluster/ci/beetmover-source/kind.yml new file mode 100644 index 0000000000..54e5751ff8 --- /dev/null +++ b/taskcluster/ci/beetmover-source/kind.yml @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover:transforms + - gecko_taskgraph.transforms.beetmover_source:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-source-signing + +job-template: + shipping-phase: promote + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/source_files.yml diff --git a/taskcluster/ci/bootstrap/kind.yml b/taskcluster/ci/bootstrap/kind.yml new file mode 100644 index 0000000000..ce9518cc63 --- /dev/null +++ b/taskcluster/ci/bootstrap/kind.yml @@ -0,0 +1,80 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.bootstrap:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + debian10: + image: debian:buster + pre-commands: + - apt-get update + - apt-get install -y --no-install-recommends curl mercurial python3-pip + debian11: + image: debian:bullseye + pre-commands: + - apt-get update + - apt-get install -y --no-install-recommends curl mercurial python3-pip + debian12: + image: debian:bookworm + pre-commands: + - apt-get update + - apt-get install -y --no-install-recommends curl mercurial python3-pip + ubuntu2204: + image: ubuntu:jammy + pre-commands: + - apt-get update + - apt-get install -y --no-install-recommends curl mercurial python3-pip + ubuntu2210: + image: ubuntu:kinetic + pre-commands: + - apt-get update + - apt-get install -y --no-install-recommends curl mercurial python3-pip + fedora36: + image: fedora:36 + pre-commands: + - dnf install -y mercurial python3-pip + fedora37: + image: fedora:37 + pre-commands: + - dnf install -y mercurial python3-pip + # Work around https://bz.mercurial-scm.org/show_bug.cgi?id=6761 + - mkdir -p /etc/mercurial/hgrc.d + - (echo "[devel]"; echo discovery.randomize=false) > /etc/mercurial/hgrc.d/workaround.rc + rockylinux8: + image: rockylinux:8 + pre-commands: + - dnf install -y mercurial python38-pip + opensuse-leap: + image: opensuse/leap + pre-commands: + - zypper install -y mercurial python39-pip python39-curses gzip + - ln -s /usr/bin/pip3.9 /usr/bin/pip3 + opensuse-tumbleweed: + image: opensuse/tumbleweed + pre-commands: + - zypper install -y mercurial python3-pip + gentoo: + image: gentoo/stage3 + pre-commands: + - emerge --sync + - emerge mercurial dev-python/pip + archlinux: + image: archlinux + pre-commands: + - pacman -Sy --noconfirm mercurial python-pip + voidlinux: + image: voidlinux/voidlinux + pre-commands: + - xbps-install -Suyv xbps + - xbps-install -Suyv curl mercurial python3-pip + # Work around https://bz.mercurial-scm.org/show_bug.cgi?id=6761 + - mkdir -p /etc/mercurial/hgrc.d + - (echo "[devel]"; echo discovery.randomize=false) > /etc/mercurial/hgrc.d/workaround.rc diff --git a/taskcluster/ci/bouncer-locations/kind.yml b/taskcluster/ci/bouncer-locations/kind.yml new file mode 100644 index 0000000000..4234939369 --- /dev/null +++ b/taskcluster/ci/bouncer-locations/kind.yml @@ -0,0 +1,52 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - post-beetmover-dummy + +transforms: + - gecko_taskgraph.transforms.bouncer_locations:transforms + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: nightly bouncer locations job + attributes: + shippable: true + worker-type: bouncer + worker: + implementation: bouncer-locations + scopes: + by-project: + mozilla-central: + - project:releng:bouncer:action:locations + - project:releng:bouncer:server:production + default: + - project:releng:bouncer:action:locations + - project:releng:bouncer:server:staging + shipping-phase: ship + treeherder: + symbol: BncLoc + kind: other + tier: 1 + +jobs: + firefox: + run-on-releases: ['nightly'] + run-on-projects: ['mozilla-central'] + shipping-product: firefox + bouncer-products: + - firefox-nightly-latest + - firefox-nightly-latest-ssl + - firefox-nightly-latest-l10n + - firefox-nightly-latest-l10n-ssl + - firefox-nightly-msi-latest-ssl + - firefox-nightly-msi-latest-l10n-ssl + - firefox-nightly-pkg-latest-ssl + - firefox-nightly-pkg-latest-l10n-ssl + treeherder: + platform: firefox-release/opt diff --git a/taskcluster/ci/build-fat-aar/kind.yml b/taskcluster/ci/build-fat-aar/kind.yml new file mode 100644 index 0000000000..ede0b4df1d --- /dev/null +++ b/taskcluster/ci/build-fat-aar/kind.yml @@ -0,0 +1,167 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - build + - toolchain + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.build_fat_aar:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.artifact:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml + index: + product: mobile + worker-type: b-linux-gcp + use-system-python: false + worker: + docker-image: {in-tree: android-build} + max-run-time: 7200 + env: + # Online in order to download the per-architecture AARs. + GRADLE_USER_HOME: "/builds/worker/checkouts/build/gecko/mobile/android/gradle/dotgradle-online" + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_ANDROID_FAT_AAR_ARCHITECTURES: "armeabi-v7a,arm64-v8a,x86,x86_64" + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + artifacts: + - name: public/build/maven + path: /builds/worker/workspace/obj-build/gradle/maven/ + type: directory + - name: public/build + path: /builds/worker/artifacts/ + type: directory + - name: public/build/geckoview-androidTest.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk + type: file + - name: public/build/geckoview-test_runner.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview-test_runner.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab + type: file + - name: public/build/geckoview_example.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview_example.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab + type: file + run: + using: mozharness + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: null + tooltool-downloads: internal + # Note: These settings are only honored by nightly (i.e. shipping) builds + update-channel: + by-release-type: + nightly: nightly + nightly-oak: nightly-oak + beta: + by-shipping-product: + devedition: aurora + default: beta + release.*: release + esr.*: esr + default: + by-project: + try: nightly-try + default: null + fetches: + toolchain: + - android-ndk-linux + - android-sdk-linux + - linux64-binutils + - linux64-clang + - linux64-jdk + - linux64-rust-android + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +jobs: + android-geckoview-fat-aar-shippable/opt: + description: "Android GeckoView multi-architecture fat AAR Shippable" + attributes: + shippable: true + enable-full-crashsymbols: true + disable-push-apk: true + maven_packages: + - geckoview + shipping-phase: build + shipping-product: fennec + index: + job-name: android-geckoview-fat-aar-opt + type: shippable-with-multi-l10n + treeherder: + platform: android-5-0-geckoview-fat-aar-shippable/opt + symbol: Bgv + dependencies: + android-x86-shippable: build-android-x86-shippable/opt + android-x86_64-shippable: build-android-x86_64-shippable/opt + android-arm-shippable: build-android-arm-shippable/opt + android-aarch64-shippable: build-android-aarch64-shippable/opt + worker: + env: + PERFHERDER_EXTRA_OPTIONS: android-geckoview-fat-aar-nightly + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: arm + fetches: + toolchain: + - android-gradle-dependencies + optimization: + skip-unless-backstop: null + + android-geckoview-fat-aar-shippable-lite/opt: + description: "Android GeckoView Lite multi-architecture fat AAR Shippable" + attributes: + shippable: true + enable-full-crashsymbols: true + disable-push-apk: true + maven_packages: + - geckoview + - geckoview-exoplayer2 + shipping-phase: build + shipping-product: fennec + index: + job-name: android-geckoview-fat-aar-opt-lite + type: shippable-with-multi-l10n + treeherder: + platform: android-4-1-geckoview-fat-aar-shippable/opt + symbol: Bgvl + dependencies: + android-x86-shippable-lite: build-android-x86-shippable-lite/opt + android-x86_64-shippable-lite: build-android-x86_64-shippable-lite/opt + android-arm-shippable-lite: build-android-arm-shippable-lite/opt + android-aarch64-shippable-lite: build-android-aarch64-shippable-lite/opt + worker: + env: + PERFHERDER_EXTRA_OPTIONS: android-geckoview-fat-aar-nightly-lite + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: arm-lite + fetches: + toolchain: + - android-gradle-dependencies-lite + optimization: + skip-unless-backstop: null diff --git a/taskcluster/ci/build-mac-notarization/kind.yml b/taskcluster/ci/build-mac-notarization/kind.yml new file mode 100644 index 0000000000..fd20f843e4 --- /dev/null +++ b/taskcluster/ci/build-mac-notarization/kind.yml @@ -0,0 +1,29 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.mac_notarization:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-mac-signing + +only-for-attributes: + - shippable + +job-template: + treeherder: + symbol: BMN + upstream-artifacts: + - taskType: signing + paths: + - public/build/target.tar.gz + - public/build/target.pkg + formats: ["apple_notarization"] + taskId: + task-reference: diff --git a/taskcluster/ci/build-mac-signing/kind.yml b/taskcluster/ci/build-mac-signing/kind.yml new file mode 100644 index 0000000000..2708396073 --- /dev/null +++ b/taskcluster/ci/build-mac-signing/kind.yml @@ -0,0 +1,28 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.build_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + +only-for-attributes: + - enable-build-signing + +only-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + - macosx64/opt + - macosx64/debug + +job-template: + treeherder: + symbol: BMS + enable-signing-routes: false diff --git a/taskcluster/ci/build-signing/kind.yml b/taskcluster/ci/build-signing/kind.yml new file mode 100644 index 0000000000..c7248258c6 --- /dev/null +++ b/taskcluster/ci/build-signing/kind.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: platform + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.upstream_artifact_task:transforms + - gecko_taskgraph.transforms.build_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - build-fat-aar + +primary-dependency: + - build + - build-fat-aar + +only-for-attributes: + - nightly + - shippable + - enable-build-signing + +not-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + - macosx64/opt + - macosx64/debug diff --git a/taskcluster/ci/build/android-asan.yml b/taskcluster/ci/build/android-asan.yml new file mode 100644 index 0000000000..4cc846dece --- /dev/null +++ b/taskcluster/ci/build/android-asan.yml @@ -0,0 +1,75 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml + maven_packages: + - geckoview + index: + product: mobile + worker: + docker-image: {in-tree: android-build} + max-run-time: 7200 + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + artifacts: + - name: public/build/maven + path: /builds/worker/workspace/obj-build/gradle/maven/ + type: directory + - name: public/build/geckoview-androidTest.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk + type: file + - name: public/build/geckoview-test_runner.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview_example.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk + type: file + - name: public/build + path: /builds/worker/artifacts/ + type: directory + run: + using: mozharness + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: null + tooltool-downloads: internal + fetches: + toolchain: + - android-ndk-linux + - android-sdk-linux + - linux64-jdk + - linux64-rust-android + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +android-x86_64-asan-fuzzing/opt: + description: "Android 5.0 x86-64 Fuzzing Opt ASAN" + index: + job-name: android-x86_64-fuzzing-asan + treeherder: + platform: android-5-0-x86_64/asan + symbol: Bof + worker-type: b-linux-large-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: fuzzing-asan-tc + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + optimization: + skip-unless-expanded: null diff --git a/taskcluster/ci/build/android-stuff.yml b/taskcluster/ci/build/android-stuff.yml new file mode 100644 index 0000000000..52bed7b18f --- /dev/null +++ b/taskcluster/ci/build/android-stuff.yml @@ -0,0 +1,53 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + tags: + android-stuff: "true" + run: + mozconfig-variant: null + +android-geckoview-docs/opt: + description: "Android GeckoView docs" + index: + product: mobile + job-name: android-geckoview-docs + treeherder: + platform: android-4-1-armv7/opt + kind: build + tier: 2 + symbol: A(gv-docs) + run-on-projects: [mozilla-central-only] + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: android-build} + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + PERFHERDER_EXTRA_OPTIONS: android-geckoview-docs + GECKOVIEW_DOCS_UPLOAD_SECRET: "project/releng/gecko/build/level-{level}/geckoview-docs-upload" + artifacts: + - name: public/android/geckoview-docs/geckoview-javadoc.jar + path: /builds/worker/workspace/obj-build/mobile/android/geckoview/docs/javadoc/withGeckoBinaries-debug/geckoview-javadoc.jar + type: file + max-run-time: 7200 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_android_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: android-geckoview-docs + tooltool-downloads: internal + fetches: + toolchain: + - android-gradle-dependencies + - android-sdk-linux + - linux64-jdk + - linux64-node + optimization: + skip-unless-changed: + - "mobile/android/**/*.java" + - "mobile/android/gradle.configure" + - "**/*.gradle" diff --git a/taskcluster/ci/build/android.yml b/taskcluster/ci/build/android.yml new file mode 100644 index 0000000000..74d2be208a --- /dev/null +++ b/taskcluster/ci/build/android.yml @@ -0,0 +1,641 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml + maven_packages: + - geckoview + index: + product: mobile + worker: + docker-image: {in-tree: android-build} + max-run-time: 7200 + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + artifacts: + - name: public/build/maven + path: /builds/worker/workspace/obj-build/gradle/maven/ + type: directory + - name: public/build/geckoview-androidTest.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk + type: file + - name: public/build/geckoview-test_runner.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview-test_runner.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab + type: file + - name: public/build/geckoview_example.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview_example.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab + type: file + - name: public/build + path: /builds/worker/artifacts/ + type: directory + run: + using: mozharness + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: null + tooltool-downloads: internal + fetches: + toolchain: + - android-ndk-linux + - android-sdk-linux + - linux64-binutils + - linux64-jdk + - linux64-rust-android + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +android-arm/debug: + description: "Android 5.0 Arm Debug" + index: + job-name: android-arm-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-armv7/debug + symbol: B + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: arm-debug + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-x86/opt: + description: "Android 5.0 x86 Opt" + index: + job-name: android-x86-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-x86/opt + symbol: B + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-x86-lite/opt: + description: "Android 4.1 x86 Opt" + index: + job-name: android-x86-lite-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-4-1-x86/opt + symbol: Bl + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + PERFHERDER_EXTRA_OPTIONS: lite + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86-lite + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies-lite + +android-x86-shippable/opt: + description: "Android 5.0 x86 Shippable" + use-pgo: true + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-x86-opt + type: android-shippable + treeherder: + platform: android-5-0-x86-shippable/opt + symbol: B + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: x86 + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies + +android-x86-shippable-lite/opt: + description: "Android 4.1 x86 Shippable Lite" + use-pgo: android-x86-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-x86-lite-opt + type: android-shippable + treeherder: + platform: android-4-1-x86-shippable-lite/opt + symbol: Bl + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: x86-lite + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies-lite + +android-arm/opt: + description: "Android 5.0 Arm Opt" + index: + job-name: android-arm-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-armv7/opt + symbol: B + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: arm + use-sccache: true + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies + - linux64-sccache + +android-arm-lite/opt: + description: "Android 4.1 Arm Opt Lite" + index: + job-name: android-arm-lite-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-4-1-armv7/opt + symbol: Bl + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: arm-lite + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies-lite + +android-arm-shippable/opt: + description: "Android 5.0 Arm Shippable" + use-pgo: android-x86-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-arm-opt + type: android-shippable-with-multi-l10n + treeherder: + platform: android-5-0-armv7-shippable/opt + symbol: Bpgo(B) + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: arm + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies + +android-arm-shippable-lite/opt: + description: "Android 4.1 Arm Shippable Lite" + use-pgo: android-x86-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-arm-lite-opt + type: android-shippable-with-multi-l10n + treeherder: + platform: android-4-1-armv7-shippable-lite/opt + symbol: Bpgo(Bl) + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: arm-lite + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies-lite + +android-aarch64/opt: + description: "Android 5.0 AArch64 Opt" + index: + job-name: android-aarch64-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-aarch64/opt + symbol: B + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: aarch64 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-aarch64-lite/opt: + description: "Android 5.0 AArch64 Opt Lite" + index: + job-name: android-aarch64-lite-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-aarch64/opt + symbol: Bl + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + PERFHERDER_EXTRA_OPTIONS: lite + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: aarch64-lite + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies-lite + +android-aarch64/debug: + description: "Android 5.0 AArch64 Debug" + index: + job-name: android-aarch64-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-aarch64/debug + symbol: B + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: aarch64-debug + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-aarch64-shippable/opt: + description: "Android 5.0 AArch64 Shippable" + use-pgo: android-x86_64-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-aarch64-opt + type: android-shippable + treeherder: + platform: android-5-0-aarch64-shippable/opt + symbol: Bpgo(B) + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: aarch64 + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies + +android-aarch64-shippable-lite/opt: + description: "Android 5.0 AArch64 Shippable Lite" + use-pgo: android-x86_64-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-aarch64-lite-opt + type: android-shippable + treeherder: + platform: android-5-0-aarch64-shippable-lite/opt + symbol: Bpgo(Bl) + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: lite + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: aarch64-lite + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies-lite + +android-x86_64/opt: + description: "Android 5.0 x86-64 Opt" + index: + job-name: android-x86_64-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-x86_64/opt + symbol: B + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86_64 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-x86_64-lite/opt: + description: "Android 5.0 x86-64 Opt Lite" + index: + job-name: android-x86_64-lite-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-x86_64/opt + symbol: Bl + run-on-projects: ['integration'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: lite + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86_64-lite + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies-lite + +android-x86_64-fuzzing/debug: + description: "Android x86_64 Fuzzing Debug" + index: + job-name: android-x86_64-fuzzing-debug + treeherder: + platform: android-5-0-x86_64/debug + symbol: Bf + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + PERFHERDER_EXTRA_OPTIONS: fuzzing + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: fuzzing-debug + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + optimization: + skip-unless-expanded: null + +android-x86_64-shippable/opt: + description: "Android 5.0 x86-64 Shippable" + use-pgo: true + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-x86_64-opt + type: android-shippable + treeherder: + platform: android-5-0-x86_64-shippable/opt + symbol: B + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: x86_64 + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies + +android-x86_64-shippable-lite/opt: + description: "Android 5.0 x86-64 Shippable Lite" + use-pgo: android-x86_64-shippable/opt + attributes: + enable-full-crashsymbols: true + shippable: true + shipping-phase: build + shipping-product: fennec + index: + job-name: android-x86_64-lite-opt + type: android-shippable + treeherder: + platform: android-5-0-x86_64-shippable-lite/opt + symbol: Bl + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: lite + run: + actions: [get-secrets, build, multi-l10n] + config: + - builds/releng_base_android_64_builds.py + - taskcluster_nightly.py + custom-build-variant-cfg: x86_64-lite + fetches: + toolchain: + - linux64-clang + - android-gradle-dependencies-lite + +android-x86_64/debug: + description: "Android 5.0 x86-64 Debug" + index: + job-name: android-x86_64-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-x86_64/debug + symbol: B + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86_64-debug + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies + +android-x86_64/debug-isolated-process: + description: "Android 5.0 x86-64 Debug with Isolated Process" + index: + job-name: android-x86_64-debug-isolated-process + attributes: + enable-full-crashsymbols: true + treeherder: + platform: android-5-0-x86_64/debug-isolated-process + symbol: Bip + worker-type: b-linux-gcp + worker: + env: + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: isolated-process + run: + actions: [get-secrets, build] + config: ["builds/releng_base_android_64_builds.py"] + custom-build-variant-cfg: x86_64-debug-isolated-process + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + - android-gradle-dependencies diff --git a/taskcluster/ci/build/kind.yml b/taskcluster/ci/build/kind.yml new file mode 100644 index 0000000000..c87d17428d --- /dev/null +++ b/taskcluster/ci/build/kind.yml @@ -0,0 +1,85 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - fetch + - generate-profile + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.artifact:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs-from: + - android.yml + - android-asan.yml + - android-stuff.yml + - linux.yml + - linux-base-toolchains.yml + - macosx.yml + - macosx-native.yml + - windows.yml + - windows-mingw.yml + +job-defaults: + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + use-system-python: false + run: + mozconfig-variant: + by-release-type: + beta: beta + release.*: release + # We keep using the release configs as the beta and release configs are + # identical except for + # https://searchfox.org/mozilla-central/rev/ce9ff94ffed34dc17ec0bfa406156d489eaa8ee1/browser/config/mozconfigs/linux32/release#1 # noqa + esr.*: release + default: nightly + # Note: These settings are only honored by nightly (i.e. shipping) builds + update-channel: + by-release-type: + nightly: nightly + nightly-oak: nightly-oak + beta: + by-shipping-product: + devedition: aurora + default: beta + release.*: release + esr.*: esr + default: + by-project: + try: nightly-try + default: null + # ACCEPTED_MAR_CHANNEL_IDS should usually be the same as the value MAR_CHANNEL_ID. + # If more than one ID is needed, then you should use a comma separated list + # of values. + # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t " + mar-channel-id: + by-release-type: + nightly.*: firefox-mozilla-central + beta: + by-shipping-product: + devedition: firefox-mozilla-aurora + default: firefox-mozilla-beta + release.*: firefox-mozilla-release + esr.*: firefox-mozilla-esr + default: firefox-mozilla-central + accepted-mar-channel-ids: + by-release-type: + nightly.*: firefox-mozilla-central + beta: + by-shipping-product: + devedition: firefox-mozilla-aurora + default: firefox-mozilla-beta,firefox-mozilla-release + release.*: firefox-mozilla-release + esr.*: firefox-mozilla-esr + default: firefox-mozilla-central diff --git a/taskcluster/ci/build/linux-base-toolchains.yml b/taskcluster/ci/build/linux-base-toolchains.yml new file mode 100644 index 0000000000..c52bcec67b --- /dev/null +++ b/taskcluster/ci/build/linux-base-toolchains.yml @@ -0,0 +1,160 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# We have these build jobs in a separate file because their definitions are +# different enough from the main Linux build jobs that their presence in +# linux.yml would make using job-defaults there significantly less useful. +--- +job-defaults: + worker-type: b-linux-gcp + +linux64-base-toolchains/opt: + description: "Linux64 base toolchains Opt" + index: + product: firefox + job-name: linux64-base-toolchains-opt + treeherder: + platform: linux64/opt + symbol: Bb + run-on-projects: ['mozilla-central'] + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: base-toolchains + FORCE_GCC: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-binutils-2.31.1 + - linux64-clang-base + - linux64-gcc-base + - linux64-rust-base + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm-2.14.02 + - linux64-node-12 + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +linux64-base-toolchains/debug: + description: "Linux64 base toolchains Debug" + index: + product: firefox + job-name: linux64-base-toolchains-debug + treeherder: + platform: linux64/debug + symbol: Bb + optimization: + skip-unless-expanded: null + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: base-toolchains + FORCE_GCC: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: debug + mozconfig-variant: debug + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-binutils-2.31.1 + - linux64-clang-base + - linux64-gcc-base + - linux64-rust-base + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm-2.14.02 + - linux64-node-12 + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +linux64-base-toolchains-clang/opt: + description: "Linux64 base toolchains clang Opt" + index: + product: firefox + job-name: linux64-base-toolchains-clang-opt + treeherder: + platform: linux64/opt + symbol: Bbc + run-on-projects: ['mozilla-central'] + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: base-toolchains-clang + DISABLE_CLANG_PLUGIN: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + fetches: + toolchain: + - linux64-clang-base + - linux64-rust-base + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm-2.14.02 + - linux64-node-12 + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +linux64-base-toolchains-clang/debug: + description: "Linux64 base toolchains clang Debug" + index: + product: firefox + job-name: linux64-base-toolchains-clang-debug + treeherder: + platform: linux64/debug + symbol: Bbc + optimization: + skip-unless-expanded: null + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: base-toolchains-clang + DISABLE_CLANG_PLUGIN: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: debug + mozconfig-variant: debug + tooltool-downloads: public + fetches: + toolchain: + - linux64-clang-base + - linux64-rust-base + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm-2.14.02 + - linux64-node-12 + - linux64-pkgconf + - sysroot-x86_64-linux-gnu diff --git a/taskcluster/ci/build/linux.yml b/taskcluster/ci/build/linux.yml new file mode 100644 index 0000000000..e34d5660a5 --- /dev/null +++ b/taskcluster/ci/build/linux.yml @@ -0,0 +1,1744 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + +linux64/opt: + description: "Linux64 Opt" + index: + product: firefox + job-name: linux64-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: linux64/opt + symbol: B + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + # bug 1690154 - enable full symbols on all branches, but only + # upload them on the official set. In conjunction with + # `enable-full-crashsymbols`. + MOZ_ENABLE_FULL_SYMBOLS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-x11/opt: + description: "Linux64 Opt (X11-only)" + index: + product: firefox + job-name: linux64-x11-opt + treeherder: + platform: linux64/opt + symbol: Bx + tier: 2 + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: x11 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu-x11 + - sysroot-wasm32-wasi + +linux64-plain/opt: + description: "Linux64 Opt Plain" + index: + product: firefox + job-name: linux64-plain-opt + treeherder: + platform: linux64/opt + symbol: Bp + tier: 1 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + using: mozharness + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: mozharness/scripts/fx_desktop_build.py + tooltool-downloads: public + extra-config: + disable_package_metrics: true + mozconfig-variant: plain-opt + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-non-unified/plain: + description: "Linux64 Plain Hybrid" + index: + product: firefox + job-name: linux64-non-unified-plain + treeherder: + platform: linux64/plain + symbol: Bp-nu + tier: 1 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: non-unified + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: mozharness/scripts/fx_desktop_build.py + secrets: true + tooltool-downloads: public + extra-config: + disable_package_metrics: true + mozconfig-variant: non-unified + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-gcc/opt: + description: "Linux64 GCC Opt" + index: + product: firefox + job-name: linux64-gcc-opt + treeherder: + platform: linux64/opt + symbol: Bgcc + tier: 2 + run-on-projects: ['mozilla-central'] + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: gcc + FORCE_GCC: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-gcc-11 + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-plain-clang-trunk/opt: + description: "Linux64 Opt Plain with clang trunk" + index: + product: firefox + job-name: linux64-plain-opt-ct + treeherder: + platform: linux64/opt + symbol: Bp-clang-trunk + tier: 2 + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: plain-clang-trunk + run: + using: mozharness + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: mozharness/scripts/fx_desktop_build.py + tooltool-downloads: public + extra-config: + disable_package_metrics: true + mozconfig-variant: plain-opt-trunk + run-on-projects: [] + fetches: + toolchain: + - linux64-clang-trunk + - linux64-rust + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-toolchain-sysroot + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-fuzzing/debug: + description: "Linux64 Fuzzing Debug" + index: + product: firefox + job-name: linux64-fuzzing-debug + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64/debug + symbol: Bf + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-debug + mozconfig-variant: debug-fuzzing + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-rust + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-fuzzing-noopt/debug: + description: "Linux64 Fuzzing No-optimize Debug" + index: + product: firefox + job-name: linux64-fuzzing-noopt-debug + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64-noopt/debug + symbol: Bf + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing-noopt-debug + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-debug + mozconfig-variant: debug-fuzzing-noopt + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-rust + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64/debug: + description: "Linux64 Debug" + index: + product: firefox + job-name: linux64-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: linux64/debug + symbol: B + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + # bug 1690154 - enable full symbols on all branches, but only + # upload them on the official set. In conjunction with + # `enable-full-crashsymbols`. + MOZ_ENABLE_FULL_SYMBOLS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: debug + mozconfig-variant: debug + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-rust + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-plain/debug: + description: "Linux64 Debug Plain" + index: + product: firefox + job-name: linux64-plain-debug + treeherder: + platform: linux64/debug + symbol: Bp + tier: 1 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + using: mozharness + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + disable_package_metrics: true + mozconfig-variant: plain-debug + script: mozharness/scripts/fx_desktop_build.py + tooltool-downloads: public + run-on-projects: [trunk] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-devedition/opt: + description: "Linux64 devedition (shippable)" + use-pgo: linux64-shippable/opt + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: devedition + index: + product: devedition + job-name: linux64-opt + type: shippable + treeherder: + platform: linux64-devedition/opt + symbol: B + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + # bug 1690154 - enable full symbols on all branches, but only + # upload them on the official set. In conjunction with + # `enable-full-crashsymbols`. + MOZ_ENABLE_FULL_SYMBOLS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: 'linux64-devedition' + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux/opt: + description: "Linux32 Opt" + index: + product: firefox + job-name: linux-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: linux32/opt + symbol: B + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + run-on-projects: + - 'mozilla-beta' + - 'mozilla-release' + - 'mozilla-esr102' + - 'mozilla-esr115' + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux-fuzzing/debug: + description: "Linux32 Fuzzing Debug" + index: + product: firefox + job-name: linux-fuzzing-debug + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux32/debug + symbol: Bf + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-debug + mozconfig-variant: debug-fuzzing + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux32-llvm-symbolizer + - linux64-sccache + - linux64-rust + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux/debug: + description: "Linux32 Debug" + index: + product: firefox + job-name: linux-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: linux32/debug + symbol: B + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: debug + mozconfig-variant: debug + tooltool-downloads: public + run-on-projects: ['release'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux-rusttests/opt: + description: "Linux32 Rust Tests Opt" + index: + product: firefox + job-name: linux-rusttests-opt + treeherder: + platform: linux32/opt + symbol: BR + tier: 1 + worker: + max-run-time: 2700 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: rusttests + mozconfig-variant: rusttests + tooltool-downloads: public + keep-artifacts: false + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + optimization: + test-inclusive: [rusttests] + +linux-rusttests/debug: + description: "Linux32 Rust Tests Debug" + index: + product: firefox + job-name: linux-rusttests-debug + treeherder: + platform: linux32/debug + symbol: BR + tier: 1 + worker: + max-run-time: 2700 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: rusttests-debug + mozconfig-variant: rusttests-debug + tooltool-downloads: public + keep-artifacts: false + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + optimization: + test-inclusive: [rusttests] + +linux-devedition/opt: + description: "Linux32 devedition (shippable)" + use-pgo: linux-shippable/opt + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: devedition + index: + product: devedition + job-name: linux-opt + type: shippable + treeherder: + platform: linux32-devedition/opt + symbol: B + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: linux-devedition + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux-shippable/opt: + description: "Linux32 Shippable" + use-pgo: true + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux-opt + type: shippable + treeherder: + platform: linux32-shippable/opt + symbol: Bpgo(B) + worker-type: b-linux-gcp + worker: + max-run-time: 9000 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + run-on-projects: ['release'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux-reproduced/opt: + description: "Linux32 Reproduced" + use-pgo: linux-shippable/opt + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux-reproduced-opt + treeherder: + platform: linux32-shippable/opt + symbol: Bpgo(repr) + worker-type: b-linux-gcp + worker: + max-run-time: 9000 + env: + PERFHERDER_EXTRA_OPTIONS: repr + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + # Original comment: Limited to trunk until bug 1596350 is fixed. + # Addendum: Do not run on autoland, Bug 1599197 + run-on-projects: ['mozilla-central', 'comm-central'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux-asan-fuzzing/opt: + description: "Linux32 Fuzzing Opt ASAN" + index: + product: firefox + job-name: linux-fuzzing-asan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux32/asan + symbol: Bof + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-asan-tc + mozconfig-variant: nightly-fuzzing-asan + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux32-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-reproduced/opt: + description: "Linux64 Reproduced" + use-pgo: linux64-shippable/opt + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux64-reproduced-opt + treeherder: + platform: linux64-shippable/opt + symbol: Bpgo(repr) + worker-type: b-linux-gcp + worker: + max-run-time: 9000 + env: + PERFHERDER_EXTRA_OPTIONS: repr + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + # Original comment: Limited to trunk until bug 1596350 is fixed. + # Addendum: Do not run on autoland, Bug 1599197 + run-on-projects: ['mozilla-central', 'comm-central'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-asan/opt: + description: "Linux64 Opt ASAN" + index: + product: firefox + job-name: linux64-asan-opt + treeherder: + platform: linux64/asan + symbol: Bo + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "opt asan" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: asan-tc + mozconfig-variant: nightly-asan + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-tsan/opt: + description: "Linux64 Opt TSAN" + index: + product: firefox + job-name: linux64-tsan-opt + treeherder: + platform: linux64/tsan + symbol: Bo + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "opt tsan" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: tsan-tc + mozconfig-variant: tsan + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-tsan-fuzzing/opt: + description: "Linux64 Fuzzing Opt TSAN" + index: + product: firefox + job-name: linux64-fuzzing-tsan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64/tsan + symbol: Bof + worker: + env: + PERFHERDER_EXTRA_OPTIONS: tsan-fuzzing + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-tsan-tc + mozconfig-variant: tsan-fuzzing + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-asan-fuzzing/noopt: + description: "Linux64 Fuzzing No-optimize ASAN" + index: + product: firefox + job-name: linux64-fuzzing-asan-noopt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64-noopt/asan + symbol: Bf + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-noopt + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-asan-tc + mozconfig-variant: nightly-fuzzing-asan-noopt + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-asan-fuzzing-nyx/opt: + description: "Linux64 Fuzzing Opt ASAN NYX" + index: + product: firefox + job-name: linux64-fuzzing-asan-nyx-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64/asan + symbol: Bonf + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-nyx + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + AFL_CC: /builds/worker/fetches/clang/bin/clang + AFL_CXX: /builds/worker/fetches/clang/bin/clang++ + max-run-time: 7200 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-asan-tc + mozconfig-variant: nightly-fuzzing-asan-nyx + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-afl-instrumentation + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-asan-fuzzing/opt: + description: "Linux64 Fuzzing Opt ASAN" + index: + product: firefox + job-name: linux64-fuzzing-asan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64/asan + symbol: Bof + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: fuzzing-asan-tc + mozconfig-variant: nightly-fuzzing-asan + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-asan-fuzzing-ccov/opt: + description: "Linux64 Fuzzing Opt ASAN w/ Coverage" + index: + product: firefox + job-name: linux64-ccov-fuzzing-asan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: linux64/asan + symbol: Bocf + run-on-projects: ['mozilla-central'] + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-ccov + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: asan-fuzzing-ccov + tooltool-downloads: public + use-sccache: false + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-fuzzing-ccov/opt: + description: "Linux64 Fuzzing Opt w/ Coverage" + index: + product: firefox + job-name: linux64-ccov-fuzzing-opt + treeherder: + platform: linux64/opt + symbol: Bocf + run-on-projects: ['mozilla-central'] + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing-ccov + RUSTC_BOOTSTRAP: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: fuzzing-ccov + tooltool-downloads: public + use-sccache: false + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-rust + - linux64-rust-size + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-asan-reporter-shippable/opt: + description: "Linux64 Opt ASAN Reporter (Shippable)" + attributes: + shippable: true + shipping-product: + by-release-type: + nightly: firefox + default: null + index: + product: firefox + job-name: linux64-asan-reporter-opt + type: shippable + treeherder: + platform: linux64-asan-reporter/opt + symbol: BoR + run-on-projects: ['mozilla-central'] + worker-type: b-linux-gcp + worker: + env: + PERFHERDER_EXTRA_OPTIONS: asan-reporter + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + max-run-time: 3600 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: asan-reporter-tc + mozconfig-variant: nightly-asan-reporter + tooltool-downloads: public + mar-channel-id: + firefox-mozilla-central-asan + accepted-mar-channel-ids: + firefox-mozilla-central-asan + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-asan/debug: + description: "Linux64 Debug ASAN" + index: + product: firefox + job-name: linux64-asan-debug + treeherder: + platform: linux64/asan + symbol: Bd + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "debug asan" + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: asan-tc-and-debug + mozconfig-variant: debug-asan + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-dev + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-llvm-symbolizer + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +linux64-shippable/opt: + description: "Linux64 Shippable" + use-pgo: true + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux64-opt + type: shippable + treeherder: + platform: linux64-shippable/opt + symbol: Bpgo(B) + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + max-run-time: 9000 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + # bug 1690154 - enable full symbols on all branches, but only + # upload them on the official set. In conjunction with + # `enable-full-crashsymbols`. + MOZ_ENABLE_FULL_SYMBOLS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-nightlyasrelease/opt: + description: "Linux64 Nightly-As-Release" + use-pgo: linux64-shippable/opt + attributes: + enable-full-crashsymbols: true + index: + product: firefox + job-name: linux64-nightlyasrelease-opt + treeherder: + platform: linux64-nightlyasrelease/opt + symbol: Bpgo(Bnar) + run-on-projects: [trunk-only] + worker-type: b-linux-gcp + worker: + max-run-time: 9000 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + # bug 1690154 - enable full symbols on all branches, but only + # upload them on the official set. In conjunction with + # `enable-full-crashsymbols`. + MOZ_ENABLE_FULL_SYMBOLS: "1" + PERFHERDER_EXTRA_OPTIONS: nightly-as-release + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + script: "mozharness/scripts/fx_desktop_build.py" + mozconfig-variant: nightly-as-release + secrets: true + tooltool-downloads: public + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-noopt/debug: + description: "Linux64 No-optimize Debug" + index: + product: firefox + job-name: linux64-noopt-debug + treeherder: + platform: linux64-noopt/debug + symbol: B + tier: 2 + attributes: + enable-full-crashsymbols: true + worker: + max-run-time: 5400 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: noopt-debug + mozconfig-variant: noopt-debug + tooltool-downloads: public + keep-artifacts: false + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-rusttests/opt: + description: "Linux64 Rust Tests Opt" + index: + product: firefox + job-name: linux64-rusttests-opt + treeherder: + platform: linux64/opt + symbol: BR + tier: 1 + worker: + max-run-time: 2700 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: rusttests + mozconfig-variant: rusttests + tooltool-downloads: public + keep-artifacts: false + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + optimization: + test-inclusive: [rusttests] + +linux64-rusttests/debug: + description: "Linux64 Rust Tests Debug" + index: + product: firefox + job-name: linux64-rusttests-debug + treeherder: + platform: linux64/debug + symbol: BR + tier: 1 + worker: + max-run-time: 2700 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: rusttests-debug + mozconfig-variant: rusttests-debug + tooltool-downloads: public + keep-artifacts: false + run-on-projects: ['trunk'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + optimization: + test-inclusive: [rusttests] + +linux64-ccov/opt: + description: "Linux64-CCov Opt" + index: + product: firefox + job-name: linux64-ccov-opt + treeherder: + platform: linux64-ccov/opt + symbol: B + tier: 2 + run-on-projects: ['mozilla-central'] + worker: + artifacts: + - name: public/code-coverage-grcov.zip + path: /builds/worker/workspace/obj-build/code-coverage-grcov.zip + type: file + max-run-time: 7200 + env: + RUSTC_BOOTSTRAP: '1' + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: code-coverage-opt + mozconfig-variant: code-coverage-opt + tooltool-downloads: public + use-sccache: false + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-grcov + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-ccov/debug: + description: "Linux64-CCov Debug" + index: + product: firefox + job-name: linux64-ccov-debug + treeherder: + platform: linux64-ccov/debug + symbol: B + tier: 2 + run-on-projects: [] + worker: + max-run-time: 7200 + env: + RUSTC_BOOTSTRAP: '1' + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: code-coverage-debug + mozconfig-variant: code-coverage-debug + tooltool-downloads: public + use-sccache: false + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-grcov + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-add-on-devel/opt: + description: "Linux64 add-on-devel" + index: + product: firefox + job-name: linux64-add-on-devel + treeherder: + platform: linux64-add-on-devel/opt + symbol: B + tier: 2 + worker: + max-run-time: 3600 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: add-on-devel + mozconfig-variant: add-on-devel + tooltool-downloads: public + run-on-projects: ['mozilla-beta', 'mozilla-release'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +linux64-aarch64/opt: + description: "Linux64 aarch64 Opt" + use-pgo: linux64-shippable/opt + index: + product: firefox + job-name: linux64-aarch64-opt + attributes: + enable-full-crashsymbols: true + treeherder: + platform: linux64-aarch64/opt + symbol: B + tier: 2 + worker: + max-run-time: 7200 + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + mozconfig_platform: linux64-aarch64 + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: opt + tooltool-downloads: public + run-on-projects: ['integration'] + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-node + - linux64-pkgconf + - sysroot-aarch64-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null diff --git a/taskcluster/ci/build/macosx-native.yml b/taskcluster/ci/build/macosx-native.yml new file mode 100644 index 0000000000..ad77b6e5aa --- /dev/null +++ b/taskcluster/ci/build/macosx-native.yml @@ -0,0 +1,145 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + index: + product: firefox + worker-type: b-osx-1015 + worker: + max-run-time: 7200 + run: + using: mozharness + script: "mozharness/scripts/fx_desktop_build.py" + +macosx64-plain/opt: + description: "MacOS X x64 Opt Plain" + index: + job-name: macosx64-plain-opt + treeherder: + symbol: Bp + platform: osx/opt + tier: 1 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_macosx.py + extra-config: + disable_package_metrics: true + stage_platform: macosx64 + mozconfig_platform: macosx64 + mozconfig-variant: plain-opt + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - macosx64-clang + - macosx64-cbindgen + - macosx64-nasm + - macosx64-node + - macosx64-rust + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-plain/debug: + description: "MacOS X x64 Debug Plain" + index: + job-name: macosx64-plain-debug + treeherder: + symbol: Bp + platform: osx/debug + tier: 1 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_macosx.py + extra-config: + disable_package_metrics: true + stage_platform: macosx64 + mozconfig_platform: macosx64 + mozconfig-variant: plain-debug + run-on-projects: ['trunk'] + fetches: + toolchain: + - macosx64-clang + - macosx64-cbindgen + - macosx64-nasm + - macosx64-node + - macosx64-rust + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-rusttests/opt: + description: "MacOS X x64 Rust Tests Opt" + index: + job-name: macosx64-rusttests-opt + treeherder: + platform: macosx64/opt + symbol: BR + tier: 1 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_macosx.py + - builds/releng_sub_mac_configs/rusttests.py + extra-config: + mozconfig_platform: macosx64 + mozconfig-variant: rusttests + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - macosx64-clang + - macosx64-rust + - macosx64-cbindgen + - macosx64-nasm + - macosx64-node + - macosx64-sdk + optimization: + test-inclusive: [rusttests] + +macosx64-rusttests/debug: + description: "MacOS X x64 Rust Tests Debug" + index: + job-name: macosx64-rusttests-debug + treeherder: + platform: macosx64/debug + symbol: BR + tier: 1 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_macosx.py + - builds/releng_sub_mac_configs/rusttests.py + extra-config: + mozconfig_platform: macosx64 + mozconfig-variant: rusttests-debug + run-on-projects: ['trunk'] + fetches: + toolchain: + - macosx64-clang + - macosx64-rust + - macosx64-cbindgen + - macosx64-nasm + - macosx64-node + - macosx64-sdk + optimization: + test-inclusive: [rusttests] diff --git a/taskcluster/ci/build/macosx.yml b/taskcluster/ci/build/macosx.yml new file mode 100644 index 0000000000..b8c2325893 --- /dev/null +++ b/taskcluster/ci/build/macosx.yml @@ -0,0 +1,829 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + index: + product: firefox + worker-type: b-linux-gcp + run: + using: mozharness + actions: [get-secrets, build] + secrets: true + script: "mozharness/scripts/fx_desktop_build.py" + fetches: + toolchain: + - linux64-dump_syms + - linux64-hfsplus + - linux64-libdmg + - linux64-rust-macos + - linux64-rust-size + - linux64-cbindgen + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + +macosx64/debug: + description: "MacOS X x64 Cross-compile" + index: + job-name: macosx64-debug + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: osx-cross/debug + symbol: B + tier: 1 + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-debug + mozconfig-variant: debug + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-non-unified/plain: + description: "MacOS X x64 Hybrid Cross-compile" + index: + job-name: macosx64-non-unified + treeherder: + platform: osx-cross/plain + symbol: Bp-nu + tier: 1 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: non-unified + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + mozconfig-variant: non-unified + extra-config: + disable_package_metrics: true + use-sccache: true + run-on-projects: ['integration'] + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64/opt: + description: "MacOS X x64 Cross-compile" + index: + job-name: macosx64-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: osx-cross/opt + symbol: B + tier: 1 + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-asan-fuzzing/opt: + description: "MacOS X x64 Cross-compile Fuzzing ASAN" + index: + job-name: macosx64-fuzzing-asan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: osx-cross/asan + symbol: Bof + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: asan-fuzzing + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-fuzzing-asan + mozconfig-variant: nightly-fuzzing-asan + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-llvm-symbolizer + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-fuzzing/debug: + description: "MacOS X x64 Cross-compile Fuzzing Debug" + index: + job-name: macosx64-fuzzing-debug + attributes: + enable-full-crashsymbols: true + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: osx-cross/debug + symbol: Bf + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: fuzzing + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-fuzzing-debug + mozconfig-variant: debug-fuzzing + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-aarch64-asan-fuzzing/opt: + description: "MacOS X Aarch64 Cross-compile Fuzzing ASAN" + index: + job-name: macosx64-aarch64-fuzzing-asan-opt + attributes: + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: osx-cross/asan + symbol: Bofaarch64 + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: aarch64-asan-fuzzing + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-fuzzing-asan + mozconfig-variant: nightly-fuzzing-asan + extra-config: + mozconfig_platform: macosx64-aarch64 + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-aarch64-llvm-symbolizer + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-aarch64-fuzzing/debug: + description: "MacOS X Aarch64 Cross-compile Fuzzing Debug" + index: + job-name: macosx64-aarch64-fuzzing-debug + attributes: + enable-full-crashsymbols: true + # The gtest libxul contains libFuzzer targets + skip-verify-test-packaging: true + treeherder: + platform: osx-cross/debug + symbol: Bfaarch64 + worker: + max-run-time: 5400 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: aarch64-fuzzing + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-fuzzing-debug + mozconfig-variant: debug-fuzzing + extra-config: + mozconfig_platform: macosx64-aarch64 + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-aarch64-llvm-symbolizer + - macosx64-sdk + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +macosx64-x64-devedition/opt: + description: "MacOS X Dev Edition x64 (shippable)" + worker-type: b-linux-gcp + use-pgo: macosx64-shippable/opt + attributes: + enable-full-crashsymbols: true + skip-verify-test-packaging: true + upload-generated-sources: true + shipping-phase: build + shipping-product: devedition + index: + product: devedition + job-name: macosx64-x64-opt + type: shippable + treeherder: + platform: osx-cross-devedition/opt + symbol: Bx + tier: 1 + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: macosx64-devedition + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-aarch64-devedition/opt: + description: "MacOS X Dev Edition Aarch64 (shippable)" + worker-type: b-linux-gcp + use-pgo: macosx64-shippable/opt + attributes: + enable-full-crashsymbols: true + skip-verify-test-packaging: true + upload-generated-sources: true + shipping-phase: build + shipping-product: devedition + index: + product: devedition + job-name: macosx64-aarch64-opt + type: shippable + treeherder: + platform: osx-aarch64-devedition/opt + symbol: B + tier: 1 + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: aarch64 + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: macosx64-aarch64-devedition + mozconfig_platform: macosx64-aarch64 + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-devedition/opt: + description: "MacOS X Dev Edition Universal" + worker-type: b-linux-gcp + attributes: + shippable: true + enable-build-signing: true + skip-upload-crashsymbols: true + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: devedition + index: + product: devedition + job-name: macosx64-opt + type: shippable + treeherder: + platform: osx-cross-devedition/opt + symbol: B + tier: 1 + run-on-projects: ['mozilla-beta'] + worker: + max-run-time: 1800 + run: + job-script: taskcluster/scripts/misc/unify.sh + config: + - builds/releng_base_firefox.py + dependencies: + macosx64-x64-devedition-opt: build-macosx64-x64-devedition/opt + macosx64-aarch64-devedition-opt: build-macosx64-aarch64-devedition/opt + fetches: + macosx64-x64-devedition-opt: + - artifact: target.dmg + extract: false + dest: x64 + - artifact: buildhub.json + extract: false + dest: ../artifacts + - artifact: host/bin/mar + extract: false + dest: ../artifacts/host/bin + - artifact: host/bin/mbsdiff + extract: false + dest: ../artifacts/host/bin + - artifact: target.txt + extract: false + dest: ../artifacts + - artifact: target_info.txt + extract: false + dest: ../artifacts + - artifact: target.json + extract: false + dest: ../artifacts + - artifact: target.mozinfo.json + extract: false + dest: ../artifacts + - artifact: target.test_packages.json + extract: false + dest: ../artifacts + - artifact: target.perftests.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.xpt_artifacts.zip + extract: false + dest: ../artifacts + - artifact: target.common.tests.tar.gz + dest: x64/common + - artifact: target.cppunittest.tests.tar.gz + dest: x64/cppunittest + - artifact: target.gtest.tests.tar.gz + dest: x64/gtest + - artifact: target.jittest.tests.tar.gz + dest: x64/jittest + - artifact: target.jsreftest.tests.tar.gz + dest: x64/jsreftest + - artifact: target.mochitest.tests.tar.gz + dest: x64/mochitest + - artifact: target.reftest.tests.tar.gz + dest: x64/reftest + - artifact: target.talos.tests.tar.gz + dest: x64/talos + - artifact: target.raptor.tests.tar.gz + dest: x64/raptor + - artifact: target.condprof.tests.tar.gz + dest: x64/confprof + - artifact: target.awsy.tests.tar.gz + dest: x64/awsy + - artifact: target.xpcshell.tests.tar.gz + dest: x64/xpcshell + - artifact: target.web-platform.tests.tar.gz + dest: x64/web-platform + - artifact: target.updater-dep.tests.tar.gz + dest: x64/updater-dep + - artifact: target.crashreporter-symbols.zip + dest: x64/crashreporter-symbols + - artifact: target.jsshell.zip + dest: x64/jsshell + - artifact: target.generated-files.tar.gz + extract: false + dest: ../artifacts + - artifact: target.langpack.xpi + extract: false + dest: ../artifacts + - artifact: mozharness.zip + extract: false + dest: ../artifacts + macosx64-aarch64-devedition-opt: + - artifact: target.dmg + extract: false + dest: aarch64 + - artifact: target.common.tests.tar.gz + dest: aarch64/common + - artifact: target.cppunittest.tests.tar.gz + dest: aarch64/cppunittest + - artifact: target.gtest.tests.tar.gz + dest: aarch64/gtest + - artifact: target.jittest.tests.tar.gz + dest: aarch64/jittest + - artifact: target.jsreftest.tests.tar.gz + dest: aarch64/jsreftest + - artifact: target.mochitest.tests.tar.gz + dest: aarch64/mochitest + - artifact: target.reftest.tests.tar.gz + dest: aarch64/reftest + - artifact: target.talos.tests.tar.gz + dest: aarch64/talos + - artifact: target.raptor.tests.tar.gz + dest: aarch64/raptor + - artifact: target.condprof.tests.tar.gz + dest: aarch64/confprof + - artifact: target.awsy.tests.tar.gz + dest: aarch64/awsy + - artifact: target.xpcshell.tests.tar.gz + dest: aarch64/xpcshell + - artifact: target.web-platform.tests.tar.gz + dest: aarch64/web-platform + - artifact: target.updater-dep.tests.tar.gz + dest: aarch64/updater-dep + - artifact: target.crashreporter-symbols.zip + dest: aarch64/crashreporter-symbols + - artifact: target.jsshell.zip + dest: aarch64/jsshell + toolchain: + - linux64-cctools-port + +macosx64-noopt/debug: + description: "MacOS X x64 No-optimize Debug" + index: + job-name: macosx64-noopt-debug + treeherder: + platform: osx-cross-noopt/debug + symbol: B + tier: 2 + worker: + max-run-time: 3600 + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-noopt-debug + mozconfig-variant: cross-noopt-debug + keep-artifacts: false + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-aarch64-noopt/debug: + description: "MacOS X aarch64 No-optimize Debug" + index: + job-name: macosx64-aarch64-noopt-debug + treeherder: + platform: osx-cross-noopt/debug + symbol: Baarch64 + tier: 2 + worker: + max-run-time: 3600 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64 + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: cross-noopt-debug + mozconfig-variant: cross-noopt-debug + keep-artifacts: false + extra-config: + mozconfig_platform: macosx64-aarch64 + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-add-on-devel/opt: + description: "MacOS X x64 add-on-devel" + index: + job-name: macosx64-add-on-devel + treeherder: + platform: osx-cross-add-on-devel/opt + symbol: B + tier: 2 + worker: + max-run-time: 3600 + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: add-on-devel + mozconfig-variant: add-on-devel + run-on-projects: ['mozilla-beta', 'mozilla-release'] + use-sccache: true + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-nightlyasrelease/opt: + description: "MacOS X Nightly-As-Release" + worker-type: b-linux-gcp + use-pgo: macosx64-shippable/opt + attributes: + enable-full-crashsymbols: true + skip-verify-test-packaging: true + upload-generated-sources: true + index: + job-name: macosx64-nightlyasrelease-opt + treeherder: + platform: osx-nightlyasrelease/opt + symbol: Bpgo(Bnar) + tier: 1 + run-on-projects: [trunk-only] + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: nightly-as-release + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + - taskcluster_nightly.py + mozconfig-variant: nightly-as-release + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-x64-shippable/opt: + description: "MacOS X x64 Cross-compile" + worker-type: b-linux-gcp + use-pgo: macosx64-shippable/opt + attributes: + enable-full-crashsymbols: true + skip-verify-test-packaging: true + upload-generated-sources: true + shipping-phase: build + shipping-product: firefox + index: + job-name: macosx64-x64-opt + type: shippable + treeherder: + platform: osx-shippable/opt + symbol: Bpgo(Bx) + tier: 1 + run-on-projects: ['release'] + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + - taskcluster_nightly.py + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-aarch64-shippable/opt: + description: "MacOS X aarch64 Cross-compile" + worker-type: b-linux-gcp + use-pgo: macosx64-shippable/opt + attributes: + enable-full-crashsymbols: true + skip-verify-test-packaging: true + upload-generated-sources: true + shipping-phase: build + shipping-product: firefox + index: + job-name: macosx64-aarch64-opt + type: shippable + treeherder: + platform: osx-aarch64-shippable/opt + symbol: Bpgo(B) + tier: 1 + run-on-projects: ['release'] + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + PERFHERDER_EXTRA_OPTIONS: aarch64 + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + - taskcluster_nightly.py + extra-config: + mozconfig_platform: macosx64-aarch64 + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - macosx64-sdk + - sysroot-wasm32-wasi + +macosx64-shippable/opt: + description: "MacOS X Universal" + worker-type: b-linux-gcp + attributes: + shippable: true + enable-build-signing: true + skip-upload-crashsymbols: true + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: firefox + index: + job-name: macosx64-opt + type: shippable + treeherder: + platform: osx-shippable/opt + symbol: Bpgo(B) + tier: 1 + run-on-projects: ['release'] + worker: + max-run-time: 1800 + run: + job-script: taskcluster/scripts/misc/unify.sh + config: + - builds/releng_base_firefox.py + dependencies: + macosx64-x64-shippable-opt: build-macosx64-x64-shippable/opt + macosx64-aarch64-shippable-opt: build-macosx64-aarch64-shippable/opt + fetches: + macosx64-x64-shippable-opt: + - artifact: target.dmg + extract: false + dest: x64 + - artifact: buildhub.json + extract: false + dest: ../artifacts + - artifact: host/bin/mar + extract: false + dest: ../artifacts/host/bin + - artifact: host/bin/mbsdiff + extract: false + dest: ../artifacts/host/bin + - artifact: target.txt + extract: false + dest: ../artifacts + - artifact: target_info.txt + extract: false + dest: ../artifacts + - artifact: target.json + extract: false + dest: ../artifacts + - artifact: target.mozinfo.json + extract: false + dest: ../artifacts + - artifact: target.test_packages.json + extract: false + dest: ../artifacts + - artifact: target.perftests.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.xpt_artifacts.zip + extract: false + dest: ../artifacts + - artifact: target.common.tests.tar.gz + dest: x64/common + - artifact: target.cppunittest.tests.tar.gz + dest: x64/cppunittest + - artifact: target.gtest.tests.tar.gz + dest: x64/gtest + - artifact: target.jittest.tests.tar.gz + dest: x64/jittest + - artifact: target.jsreftest.tests.tar.gz + dest: x64/jsreftest + - artifact: target.mochitest.tests.tar.gz + dest: x64/mochitest + - artifact: target.reftest.tests.tar.gz + dest: x64/reftest + - artifact: target.talos.tests.tar.gz + dest: x64/talos + - artifact: target.raptor.tests.tar.gz + dest: x64/raptor + - artifact: target.condprof.tests.tar.gz + dest: x64/confprof + - artifact: target.awsy.tests.tar.gz + dest: x64/awsy + - artifact: target.xpcshell.tests.tar.gz + dest: x64/xpcshell + - artifact: target.web-platform.tests.tar.gz + dest: x64/web-platform + - artifact: target.updater-dep.tests.tar.gz + dest: x64/updater-dep + - artifact: target.crashreporter-symbols.zip + dest: x64/crashreporter-symbols + - artifact: target.jsshell.zip + dest: x64/jsshell + - artifact: target.generated-files.tar.gz + extract: false + dest: ../artifacts + - artifact: target.langpack.xpi + extract: false + dest: ../artifacts + - artifact: mozharness.zip + extract: false + dest: ../artifacts + macosx64-aarch64-shippable-opt: + - artifact: target.dmg + extract: false + dest: aarch64 + - artifact: target.common.tests.tar.gz + dest: aarch64/common + - artifact: target.cppunittest.tests.tar.gz + dest: aarch64/cppunittest + - artifact: target.gtest.tests.tar.gz + dest: aarch64/gtest + - artifact: target.jittest.tests.tar.gz + dest: aarch64/jittest + - artifact: target.jsreftest.tests.tar.gz + dest: aarch64/jsreftest + - artifact: target.mochitest.tests.tar.gz + dest: aarch64/mochitest + - artifact: target.reftest.tests.tar.gz + dest: aarch64/reftest + - artifact: target.talos.tests.tar.gz + dest: aarch64/talos + - artifact: target.raptor.tests.tar.gz + dest: aarch64/raptor + - artifact: target.condprof.tests.tar.gz + dest: aarch64/confprof + - artifact: target.awsy.tests.tar.gz + dest: aarch64/awsy + - artifact: target.xpcshell.tests.tar.gz + dest: aarch64/xpcshell + - artifact: target.web-platform.tests.tar.gz + dest: aarch64/web-platform + - artifact: target.updater-dep.tests.tar.gz + dest: aarch64/updater-dep + - artifact: target.crashreporter-symbols.zip + dest: aarch64/crashreporter-symbols + - artifact: target.jsshell.zip + dest: aarch64/jsshell + toolchain: + - linux64-cctools-port + +macosx64-ccov/opt: + description: "MacOS X x64 Cross-compile Code Coverage" + index: + job-name: macosx64-ccov-opt + treeherder: + platform: osx-cross-ccov/opt + symbol: B + tier: 1 + worker: + max-run-time: 7200 + env: + RUSTC_BOOTSTRAP: '1' + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + custom-build-variant-cfg: code-coverage-opt + mozconfig-variant: code-coverage + run-on-projects: ['mozilla-central'] + use-sccache: false + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-sccache + - macosx64-sdk + - sysroot-wasm32-wasi diff --git a/taskcluster/ci/build/windows-mingw.yml b/taskcluster/ci/build/windows-mingw.yml new file mode 100644 index 0000000000..4927499e1f --- /dev/null +++ b/taskcluster/ci/build/windows-mingw.yml @@ -0,0 +1,174 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + run: + using: mozharness + actions: [build] + script: mozharness/scripts/fx_desktop_build.py + optimization: + skip-unless-expanded: null + +win32-mingwclang/opt: + description: "Win32 MinGW-Clang Opt" + index: + product: firefox + job-name: win32-mingwclang-opt + treeherder: + platform: windows-mingw32/all + symbol: WMC32(Bo) + tier: 2 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "opt 32 clang" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_windows_32_mingw_builds.py + - builds/releng_sub_windows_configs/32_mingwclang.py + mozconfig-variant: mingwclang + run-on-projects: + - 'mozilla-central' + - 'mozilla-esr102' + - 'mozilla-esr115' + use-sccache: true + fetches: + toolchain: + - mingw32-rust + - linux64-upx + - linux64-wine + - linux64-sccache + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-clang-mingw-x86 + - linux64-mingw32-nsis + - linux64-mingw-fxc2-x86 + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +win32-mingwclang/debug: + description: "Win32 MinGW-Clang Debug" + index: + product: firefox + job-name: win32-mingwclang-debug + treeherder: + platform: windows-mingw32/all + symbol: WMC32(Bd) + tier: 2 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "debug 32 clang" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_windows_32_mingw_builds.py + - builds/releng_sub_windows_configs/32_mingwclang.py + mozconfig-variant: mingwclang-debug + run-on-projects: + - 'mozilla-central' + - 'mozilla-esr102' + - 'mozilla-esr115' + use-sccache: true + fetches: + toolchain: + - mingw32-rust + - linux64-upx + - linux64-wine + - linux64-sccache + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-clang-mingw-x86 + - linux64-mingw32-nsis + - linux64-mingw-fxc2-x86 + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +win64-mingwclang/opt: + description: "Win64 MinGW-Clang Opt" + index: + product: firefox + job-name: win64-mingwclang-opt + treeherder: + platform: windows-mingw32/all + symbol: WMC64(Bo) + tier: 2 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "opt 64 clang" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_windows_64_mingw_builds.py + - builds/releng_sub_windows_configs/64_mingwclang.py + mozconfig-variant: mingwclang + run-on-projects: + - 'mozilla-central' + - 'mozilla-esr102' + - 'mozilla-esr115' + use-sccache: true + fetches: + toolchain: + - mingw32-rust + - linux64-upx + - linux64-wine + - linux64-sccache + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-clang-mingw-x64 + - linux64-mingw32-nsis + - linux64-mingw-fxc2-x86 + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +win64-mingwclang/debug: + description: "Win64 MinGW-Clang Debug" + index: + product: firefox + job-name: win64-mingwclang-debug + treeherder: + platform: windows-mingw32/all + symbol: WMC64(Bd) + tier: 2 + worker: + env: + PERFHERDER_EXTRA_OPTIONS: "debug 64 clang" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_windows_64_mingw_builds.py + - builds/releng_sub_windows_configs/64_mingwclang.py + mozconfig-variant: mingwclang-debug + run-on-projects: + - 'mozilla-central' + - 'mozilla-esr102' + - 'mozilla-esr115' + use-sccache: true + fetches: + toolchain: + - mingw32-rust + - linux64-upx + - linux64-wine + - linux64-sccache + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-clang-mingw-x64 + - linux64-mingw32-nsis + - linux64-mingw-fxc2-x86 + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi diff --git a/taskcluster/ci/build/windows.yml b/taskcluster/ci/build/windows.yml new file mode 100644 index 0000000000..cdcaf9ccb3 --- /dev/null +++ b/taskcluster/ci/build/windows.yml @@ -0,0 +1,1831 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + run: + using: mozharness + +win32/debug: + description: "Win32 Debug" + index: + product: firefox + job-name: win32-debug + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: windows2012-32/debug + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win32/debug.py + mozconfig-variant: debug + extra-config: + mozconfig_platform: win32 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win32/opt: + description: "Win32 Opt" + index: + product: firefox + job-name: win32-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: windows2012-32/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win32 + mozconfig_platform: win32 + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win32-fuzzing/debug: + description: "Win32 Fuzzing Debug" + index: + product: firefox + job-name: win32-fuzzing-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: windows2012-32/debug + symbol: Bf + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win32/debug.py + extra-config: + stage_platform: win32 + mozconfig_platform: win32 + mozconfig-variant: debug-fuzzing + run-on-projects: ['trunk'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64/debug: + description: "Win64 Debug" + index: + product: firefox + job-name: win64-debug + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: windows2012-64/debug + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/debug.py + mozconfig-variant: debug + extra-config: + mozconfig_platform: win64 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-non-unified/plain: + description: "Win64 Hybrid Plain" + index: + product: firefox + job-name: win64-non-unified-plain + treeherder: + platform: windows2012-64/debug + symbol: Bp-nu + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: non-unified + run: + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + mozconfig-variant: non-unified + extra-config: + mozconfig_platform: win64 + use-sccache: true + run-on-projects: ['integration'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-fuzzing/debug: + description: "Win64 Fuzzing Debug" + index: + product: firefox + job-name: win64-fuzzing-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: windows2012-64/debug + symbol: Bf + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/debug.py + extra-config: + mozconfig_platform: win64 + mozconfig-variant: debug-fuzzing + run-on-projects: ['trunk'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-plain/debug: + description: "Win64 Debug Plain" + index: + product: firefox + job-name: win64-plain-debug + treeherder: + platform: windows2012-64/debug + symbol: Bp + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + actions: [build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + extra-config: + disable_package_metrics: true + stage_platform: win64 + mozconfig-variant: plain-debug + run-on-projects: ['trunk'] + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-node + - win64-nasm + - win64-cbindgen + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + - nsis + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +win64/opt: + description: "Win64 Opt" + index: + product: firefox + job-name: win64-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + treeherder: + platform: windows2012-64/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64 + mozconfig_platform: win64 + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-plain/opt: + description: "Win64 Opt Plain" + index: + product: firefox + job-name: win64-plain-opt + treeherder: + platform: windows2012-64/opt + symbol: Bp + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: plain + run: + actions: [build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + extra-config: + disable_package_metrics: true + stage_platform: win64 + mozconfig-variant: plain-opt + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-nasm + - win64-node + - win64-cbindgen + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + - nsis + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null + +win32-shippable/opt: + description: "Win32 Opt Shippable" + use-pgo: true + index: + product: firefox + job-name: win32-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + stub-installer: + by-release-type: + nightly: true + beta: true + release.*: true + esr.*: false + default: + by-project: + # browser/confvars.sh looks for nightly-try + try: true + default: false + shipping-phase: build + shipping-product: firefox + treeherder: + platform: windows2012-32-shippable/opt + symbol: Bpgo(B) + tier: 1 + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win32 + mozconfig_platform: win32 + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-shippable/opt: + description: "Win64 Shippable" + use-pgo: true + index: + product: firefox + job-name: win64-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: firefox + treeherder: + platform: windows2012-64-shippable/opt + symbol: Bpgo(B) + tier: 1 + run-on-projects: ['release'] + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64 + mozconfig_platform: win64 + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-nightlyasrelease/opt: + description: "Win64 Opt Nightly-As-Release" + use-pgo: win64-shippable/opt + attributes: + enable-full-crashsymbols: true + index: + product: firefox + job-name: win64-nightlyasrelease-opt + treeherder: + platform: win64-nightlyasrelease/opt + symbol: Bpgo(Bnar) + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + PERFHERDER_EXTRA_OPTIONS: "nightly-as-release" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64 + mozconfig_platform: win64 + mozconfig-variant: nightly-as-release + run-on-projects: [trunk-only] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win32-add-on-devel/opt: + description: "Windows32 add-on-devel" + index: + product: firefox + job-name: win32-add-on-devel + treeherder: + platform: windows2012-32-add-on-devel/opt + symbol: B + tier: 2 + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win32-add-on-devel + mozconfig_platform: win32 + mozconfig-variant: add-on-devel + run-on-projects: ['mozilla-beta', 'mozilla-release'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-add-on-devel/opt: + description: "Windows64 add-on-devel" + index: + product: firefox + job-name: win64-add-on-devel + treeherder: + platform: windows2012-64-add-on-devel/opt + symbol: B + tier: 2 + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64-on-devel + mozconfig_platform: win64 + mozconfig-variant: add-on-devel + run-on-projects: ['mozilla-beta', 'mozilla-release'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-noopt/debug: + description: "Win64 No-optimize Debug" + index: + product: firefox + job-name: win64-noopt-debug + treeherder: + platform: windows2012-64-noopt/debug + symbol: B + tier: 2 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/noopt_debug.py + mozconfig-variant: noopt-debug + extra-config: + mozconfig_platform: win64 + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win32-noopt/debug: + description: "Win32 No-optimize Debug" + index: + product: firefox + job-name: win32-noopt-debug + treeherder: + platform: windows2012-32-noopt/debug + symbol: B + tier: 2 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win32/noopt_debug.py + mozconfig-variant: noopt-debug + extra-config: + mozconfig_platform: win32 + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win32-rusttests/opt: + description: "Win32 Rust Tests Opt" + index: + product: firefox + job-name: win32-rusttests-opt + treeherder: + platform: windows2012-32/opt + symbol: BR + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win32.py + extra-config: + stage_platform: win32-rusttests + app_name: tools/rusttests + disable_package_metrics: true + mozconfig-variant: rusttests + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-cbindgen + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + optimization: + test-inclusive: [rusttests] + +win32-rusttests/debug: + description: "Win32 Rust Tests Debug" + index: + product: firefox + job-name: win32-rusttests-debug + treeherder: + platform: windows2012-32/debug + symbol: BR + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win32.py + extra-config: + stage_platform: win32-rusttests + app_name: tools/rusttests + disable_package_metrics: true + mozconfig-variant: rusttests-debug + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-cbindgen + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + optimization: + test-inclusive: [rusttests] + +win64-rusttests/opt: + description: "Win64 Rust Tests Opt" + index: + product: firefox + job-name: win64-rusttests-opt + treeherder: + platform: windows2012-64/opt + symbol: BR + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + - builds/taskcluster_sub_win64/rusttests_opt.py + mozconfig-variant: rusttests + run-on-projects: ['mozilla-central'] + use-sccache: true + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-cbindgen + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + optimization: + test-inclusive: [rusttests] + +win64-rusttests/debug: + description: "Win64 Rust Tests Debug" + index: + product: firefox + job-name: win64-rusttests-debug + treeherder: + platform: windows2012-64/debug + symbol: BR + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 5400 + env: + PERFHERDER_EXTRA_OPTIONS: rusttests + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + - builds/taskcluster_sub_win64/rusttests_opt.py + mozconfig-variant: rusttests-debug + run-on-projects: ['trunk'] + use-sccache: true + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-cbindgen + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + optimization: + test-inclusive: [rusttests] + +win64-ccov/opt: + description: "Win64 Opt Code Coverage" + index: + product: firefox + job-name: win64-ccov-opt + attributes: + enable-build-signing: true + treeherder: + platform: windows2012-64/ccov + symbol: B + tier: 2 + worker-type: b-win2012 + worker: + artifacts: + - name: public/code-coverage-grcov.zip + path: workspace\obj-build\code-coverage-grcov.zip + type: file + max-run-time: 9000 + env: + RUSTC_BOOTSTRAP: '1' + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + - builds/taskcluster_sub_win64/ccov_opt.py + mozconfig-variant: code-coverage + run-on-projects: ['mozilla-central'] + use-sccache: false + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-rust-size + - win64-cbindgen + - win64-grcov + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + - nsis + - sysroot-wasm32-wasi + +win64-fuzzing-ccov/opt: + description: "Win64 Fuzzing Opt w/ Coverage" + index: + product: firefox + job-name: win64-ccov-fuzzing-opt + treeherder: + platform: windows2012-64/ccov + symbol: Bocf + worker-type: b-win2012 + worker: + artifacts: + - name: public/code-coverage-grcov.zip + path: workspace\obj-build\code-coverage-grcov.zip + type: file + max-run-time: 9000 + env: + RUSTC_BOOTSTRAP: '1' + PERFHERDER_EXTRA_OPTIONS: "fuzzing-ccov" + run: + using: mozharness + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + - builds/taskcluster_sub_win64/ccov_opt.py + script: mozharness/scripts/fx_desktop_build.py + secrets: true + mozconfig-variant: fuzzing-ccov + tooltool-downloads: public + run-on-projects: ['mozilla-central'] + use-sccache: false + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-rust-size + - win64-cbindgen + - win64-grcov + - win64-sccache + - win64-nasm + - win64-node + - win64-winchecksec + - win64-mozmake + - win64-dump_syms + - vs + - nsis + - sysroot-wasm32-wasi + +win64-asan/debug: + description: "Win64 Debug ASAN" + index: + product: firefox + job-name: win64-asan-debug + treeherder: + platform: windows2012-64/asan + symbol: Bd + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: "debug asan" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/asan_debug.py + extra-config: + mozconfig_platform: win64 + mozconfig-variant: debug-asan + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - win64-llvm-symbolizer + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-asan/opt: + description: "Win64 Opt ASAN" + index: + product: firefox + job-name: win64-asan-opt + treeherder: + platform: windows2012-64/asan + symbol: Bo + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: "opt asan" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64-asan + mozconfig_platform: win64 + mozconfig-variant: nightly-asan + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - win64-llvm-symbolizer + - vs + fetch: + - upx-3.95-win + +win64-asan-reporter-shippable/opt: + description: "Win64 Opt ASAN Reporter (Shippable)" + attributes: + shippable: true + shipping-product: + by-release-type: + nightly: firefox + default: null + index: + product: firefox + job-name: win64-asan-reporter-opt + type: shippable + treeherder: + platform: win64-asan-reporter/opt + symbol: BoR + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: "asan-reporter" + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/asan_reporter_opt.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-asan-reporter + mozconfig_platform: win64 + mozconfig-variant: nightly-asan-reporter + mar-channel-id: + firefox-mozilla-central-asan + accepted-mar-channel-ids: + firefox-mozilla-central-asan + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - win64-llvm-symbolizer + - vs + fetch: + - upx-3.95-win + +win64-asan-fuzzing/opt: + description: "Win64 Fuzzing Opt ASAN" + index: + product: firefox + job-name: win64-fuzzing-asan-opt + treeherder: + platform: windows2012-64/asan + symbol: Bof + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: fuzzing-asan + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64-fuzzing-asan + mozconfig_platform: win64 + mozconfig-variant: nightly-fuzzing-asan + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - win64-llvm-symbolizer + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win32-devedition/opt: + description: "Win32 Dev Edition (shippable)" + use-pgo: win32-shippable/opt + index: + product: devedition + job-name: win32-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + stub-installer: + by-release-type: + nightly: true + beta: true + release.*: true + default: + by-project: + # browser/confvars.sh looks for nightly-try + try: true + default: false + shipping-phase: build + shipping-product: devedition + treeherder: + platform: windows2012-32-devedition/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + options: [append-env-variables-from-configs] + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win32-devedition + mozconfig_platform: win32 + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-devedition/opt: + description: "Win64 Dev Edition (shippable)" + use-pgo: win64-shippable/opt + index: + product: devedition + job-name: win64-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + shipping-phase: build + shipping-product: devedition + treeherder: + platform: windows2012-64-devedition/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-devedition + mozconfig_platform: win64 + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + +win64-aarch64/debug: + description: "AArch64 Win64 Debug" + index: + product: firefox + job-name: win64-aarch64-debug + attributes: + enable-full-crashsymbols: true + treeherder: + platform: windows2012-aarch64/debug + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64 + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/debug.py + extra-config: + mozconfig_platform: win64-aarch64 + mozconfig-variant: debug + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-aarch64/opt: + description: "AArch64 Win64 Opt" + index: + product: firefox + job-name: win64-aarch64-opt + attributes: + enable-build-signing: true + enable-full-crashsymbols: true + # We need to package tests in order for the win64-aarch64-eme artifact + # build to fetch them, even though no tests run against this task + # directly. + skip-verify-test-packaging: true + treeherder: + platform: windows2012-aarch64/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64 + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64-aarch64 + mozconfig_platform: win64-aarch64 + run-on-projects: ['integration'] + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-aarch64-eme/opt: + description: "AArch64 Win64 Opt w/ EME" + index: + product: firefox + job-name: win64-aarch64-eme-opt + treeherder: + platform: windows2012-aarch64/opt + symbol: Be + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64-eme + MOZ_ARTIFACT_TASK: {task-reference: ''} + MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: ''} + USE_ARTIFACT: '1' + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64-aarch64 + mozconfig_platform: win64-aarch64 + dependencies: + win32-opt: build-win32/opt + win64-aarch64-opt: build-win64-aarch64/opt + fetches: + toolchain: + - linux64-node + - linux64-wine + - nsis + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-aarch64-shippable/opt: + description: "AArch64 Win64 Shippable" + index: + product: firefox + job-name: win64-aarch64-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + # Skip the test packaging check because we copy test packages from + # another build task rather than generating them in this task. + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: firefox + treeherder: + platform: windows2012-aarch64-shippable/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64 + MOZ_ARTIFACT_TASK: {task-reference: ''} + MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: ''} + USE_ARTIFACT: '1' + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-aarch64 + mozconfig_platform: win64-aarch64 + dependencies: + win32-opt: build-win32-shippable/opt + win64-aarch64-opt: build-win64-aarch64-shippable-no-eme/opt + fetches: + # Abuse fetches to copy the generated-files, langpack, and test + # artifacts from the non-eme build directly to the artifacts directory + # of this build. + win64-aarch64-opt: + - artifact: target.test_packages.json + extract: false + dest: ../artifacts + - artifact: target.common.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.cppunittest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.mochitest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.reftest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.talos.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.raptor.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.condprof.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.awsy.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.xpcshell.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.web-platform.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.updater-dep.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.generated-files.tar.gz + extract: false + dest: ../artifacts + - artifact: target.langpack.xpi + extract: false + dest: ../artifacts + toolchain: + - linux64-node + - linux64-wine + - nsis + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-aarch64-shippable-no-eme/opt: + description: "AArch64 Win64 Shippable w/o EME" + use-pgo: win64-shippable/opt + index: + product: firefox + job-name: win64-aarch64-no-eme-opt + type: shippable + attributes: + enable-full-crashsymbols: true + # We need to package tests in order for the actual + # win64-aarch64-shippable/opt build to copy them from this task, even + # though no tests run against this task directly. + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: firefox + treeherder: + platform: windows2012-aarch64/opt + symbol: Nn + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64-no-eme + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-aarch64 + mozconfig_platform: win64-aarch64 + run-on-projects: ['all'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + optimization: + skip-unless-expanded: null + +win64-aarch64-devedition/opt: + description: "AArch64 Win64 Dev Edition (shippable)" + index: + product: devedition + job-name: win64-aarch64-opt + type: shippable + attributes: + shippable: true + enable-full-crashsymbols: true + # Skip the test packaging check because we copy test packages from + # another build task rather than generating them in this task. + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: devedition + treeherder: + platform: windows2012-aarch64-devedition/opt + symbol: B + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + MOZ_ARTIFACT_TASK: {task-reference: ''} + MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: ''} + USE_ARTIFACT: '1' + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-aarch64-devedition + mozconfig_platform: win64-aarch64 + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + dependencies: + win32-opt: build-win32-devedition/opt + win64-aarch64-opt: build-win64-aarch64-devedition-no-eme/opt + fetches: + # Abuse fetches to copy the generated-files, langpack, and test + # artifacts from the non-eme build directly to the artifacts directory + # of this build. + win64-aarch64-opt: + - artifact: target.test_packages.json + extract: false + dest: ../artifacts + - artifact: target.common.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.cppunittest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.mochitest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.reftest.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.talos.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.raptor.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.condprof.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.awsy.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.xpcshell.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.web-platform.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.updater-dep.tests.tar.gz + extract: false + dest: ../artifacts + - artifact: target.generated-files.tar.gz + extract: false + dest: ../artifacts + - artifact: target.langpack.xpi + extract: false + dest: ../artifacts + toolchain: + - linux64-node + - linux64-wine + - nsis + fetch: + - upx-3.95-win + +win64-aarch64-devedition-no-eme/opt: + description: "AArch64 Win64 Dev Edition w/o EME" + use-pgo: win64-shippable/opt + index: + product: devedition + job-name: win64-aarch64-no-eme-opt + type: shippable + attributes: + enable-full-crashsymbols: true + # We need to package tests in order for the actual + # win64-aarch64-devedition/opt build to copy them from this task, even + # though no tests run against this task directly. + skip-verify-test-packaging: true + shipping-phase: build + shipping-product: devedition + treeherder: + platform: windows2012-aarch64-devedition/opt + symbol: Nn + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: aarch64-no-eme + MOZ_AUTOMATION_PACKAGE_TESTS: "1" + run: + actions: [get-secrets, build] + options: [append-env-variables-from-configs] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - taskcluster_nightly.py + extra-config: + stage_platform: win64-aarch64 + mozconfig_platform: win64-aarch64 + mozconfig-variant: devedition + run-on-projects: ['mozilla-beta'] + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win diff --git a/taskcluster/ci/code-review/kind.yml b/taskcluster/ci/code-review/kind.yml new file mode 100644 index 0000000000..da76da0260 --- /dev/null +++ b/taskcluster/ci/code-review/kind.yml @@ -0,0 +1,41 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.code_review:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - source-test + +jobs: + issues: + label: code-review-issues + description: List all issues found in static analysis and linting tasks + worker-type: b-linux-gcp + + # Only run by using the code-review target_tasks_method + run-on-projects: [] + + # This option permits to run the task + # regardless of the soft-dependencies tasks exit status + # as we are interested in the task failures + requires: all-resolved + + # Publish on pulse + routes: + - project.relman.codereview.v1.try_ending + + # Dummy execution for now, we only need the pulse message + worker: + docker-image: + in-tree: debian11-amd64-build + max-run-time: 600 + run: + using: run-task + checkout: false + command: /bin/true diff --git a/taskcluster/ci/condprof/kind.yml b/taskcluster/ci/condprof/kind.yml new file mode 100644 index 0000000000..2c71dcd6ea --- /dev/null +++ b/taskcluster/ci/condprof/kind.yml @@ -0,0 +1,135 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - build + - toolchain + +transforms: + - gecko_taskgraph.transforms.condprof:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + treeherder: + kind: other + tier: 2 + scenarios: + - settled + run: + using: run-task + cwd: fetches/condprofile + checkout: false + tooltool-downloads: public + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + worker: + taskcluster-proxy: true + max-run-time: 10800 +jobs: + windows2012-64-firefox: + worker-type: b-win2012 + description: Creates or updates conditioned profiles on Win64 + run-on-projects: ['mozilla-central'] + treeherder: + symbol: condprof(firefox) + platform: windows2012-64/opt + index: + product: firefox + job-name: condprof-win64 + dependencies: + build: build-win64-shippable/opt + scenarios: + - settled + - full + fetches: + build: + - artifact: target.condprof.tests.tar.gz + - artifact: target.zip + toolchain: + - win64-geckodriver + run: + command: >- + python3.exe condprof/main.py + ${EXTRA_ARGS} + --geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --firefox ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --scenario ${SCENARIO} + ../../archive + worker: + artifacts: + - name: public/condprof + path: archive + type: directory + linux64-firefox: + worker-type: b-linux-gcp + description: Creates or updates conditioned profiles on Linux + run-on-projects: ['mozilla-central'] + treeherder: + symbol: condprof(firefox) + platform: linux64/opt + index: + product: firefox + job-name: condprof-linux64 + dependencies: + build: build-linux64-shippable/opt + scenarios: + - settled + - full + fetches: + build: + - artifact: target.condprof.tests.tar.gz + - artifact: target.tar.bz2 + toolchain: + - linux64-geckodriver + run: + command: >- + python3.7 -m venv . && + bin/python3.7 condprof/main.py + ${EXTRA_ARGS} + --geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --firefox ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --scenario ${SCENARIO} + ../../archive + worker: + docker-image: {in-tree: condprof} + artifacts: + - name: public/condprof + path: /builds/worker/archive + type: directory + macosx64-firefox: + worker-type: t-osx-1015-r8 + description: Creates or updates conditioned profiles on macOS + run-on-projects: ['mozilla-central'] + treeherder: + symbol: condprof(firefox) + platform: macosx1015-64-qr/opt + index: + product: firefox + job-name: condprof-macosx64 + dependencies: + build: build-macosx64-shippable/opt + fetches: + build: + - artifact: target.condprof.tests.tar.gz + - artifact: target.dmg + extract: false + toolchain: + - macosx64-geckodriver + run: + command: >- + python3 -m venv . && + bin/python3 condprof/main.py + ${EXTRA_ARGS} + --geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --firefox ${MOZ_FETCHES_DIR}/target.dmg + --scenario ${SCENARIO} + ../../archive + worker: + artifacts: + - name: public/condprof + path: archive + type: directory diff --git a/taskcluster/ci/config.yml b/taskcluster/ci/config.yml new file mode 100644 index 0000000000..7be6ba9a28 --- /dev/null +++ b/taskcluster/ci/config.yml @@ -0,0 +1,743 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +trust-domain: gecko +project-repo-param-prefix: '' +product-dir: 'browser' +treeherder: + group-names: + 'cram': 'Cram tests' + 'js-bench-sm': 'JavaScript shell benchmarks with Spidermonkey' + 'js-bench-v8': 'JavaScript shell benchmarks with Google V8' + 'node': 'Node tests' + 'py3': 'Python 3 unit tests' + 'A': 'Android Gradle tests' + 'Bpgo': 'Profile-guided optimization builds' + 'Btime': 'Browsertime performance tests on Firefox' + 'Btime-cache': 'Browsertime performance tests on Firefox with populated bytecode cache.' + 'Btime-1proc': 'Browsertime performance tests on Firefox without e10s' + 'Btime-fis': 'Browsertime performance tests on Firefox with fission enabled' + 'Btime-nofis': 'Browsertime tests on Firefox without fission enabled' + 'Btime-P-nofis': 'Browsertime power tests on Firefox without fission enabled' + 'Btime-Prof-nofis': 'Browsertime tests on Firefox with profiling and without fission enabled' + 'Btime-P-nofis-refbrow': 'Browsertime Power Usage Tests on reference browser without fission enabled' + 'Btime-P-nofis-fenix': 'Browsertime Power Usage Tests on Fenix without fission enabled' + 'Btime-live-nofis-fenix': 'Browsertime tests on Fenix without fission enabled using live sites' + 'Btime-nofis-fenix': 'Browsertime tests on Fenix without fission enabled' + 'Btime-live-nofis': 'Browsertime tests on Firefox without fission enabled using live sites' + 'Btime-nofis-refbrow': 'Browsertime tests on reference browser without fission enabled' + 'Btime-live-nofis-ChR': 'Browsertime tests on Chrome without fission enabled using live sites' + 'Btime-Prof': 'Browsertime performance tests on Firefox with Gecko Profiling' + 'Btime-Prof-fis': 'Browsertime performance tests on Firefox with Gecko Profiling, fission enabled' + 'Btime-Prof-1proc': 'Browsertime performance tests on Firefox with Gecko Profiling and without e10s' + 'Btime-live': 'Browsertime performance tests on Firefox' + 'Btime-live-fis': 'Browsertime performance tests on Firefox with fission enabled' + 'Btime-live-fenix': 'Browsertime performance tests on Firefox' + 'Btime-live-ChR': 'Browsertime performance tests on Firefox' + 'Btime-live-Cr': 'Browsertime performance tests on Google Chromium' + 'Btime-live-Saf': 'Browsertime performance tests on Safari' + 'Btime-ChR': 'Browsertime performance tests on Google Chrome Release' + 'Btime-nofis-ChR': 'Browsertime performance tests on Google Chrome Release without fission enabled' + 'Btime-Cr': 'Browsertime performance tests on Google Chromium' + 'Btime-P': 'Browsertime power tests on Firefox/Geckoview' + 'Btime-P-fenix': 'Browsertime power tests on Fenix' + 'Btime-P-refbrow': 'Browsertime power tests on reference browser' + 'Btime-fenix': 'Browsertime performance tests on Fenix' + 'Btime-refbrow': 'Browsertime performance tests on the reference browser' + 'Btime-Saf': 'Browsertime performance tests on Safari' + 'Btime-CaR': 'Browsertime performance tests on Chromium-as-Release' + 'Fetch': 'Fetch and store content' + 'Fxfn': 'Firefox functional tests' + 'Fxfn-nofis': 'Firefox functional tests without fission enabled' + 'Fxfn-fis': 'Firefox functional tests with fission enabled' + 'l10n-bump': 'L10n Bumper' + 'M': 'Mochitests' + 'M-condprof': "Mochitests with conditioned profile" + 'M-headless': 'Headless Mochitests' + 'M-headless-nofis': 'Headless Mochitests without fission enabled.' + 'M-headless-spi-nw': 'Headless Mochitests with fission and socketprocess networking.' + 'M-headless-spi-nw-nofis': 'Headless Mochitests with fission and socketprocess networking without fission enabled.' + 'M-http3': 'Mochitests with Http/3 server' + 'M-aab': 'Mochitests with AAB test_runner.' + 'M-aab-nofis': 'Mochitests with AAB test_runner without fission enabled.' + 'M-1proc': 'Mochitests without e10s or fission' + 'M-a11y-checks': 'Mochitests with accessibility checks enabled' + 'M-a11y-checks-nofis': 'Mochitests with accessibility checks enabled and without fission enabled' + 'M-xorig': 'Mochitests with cross-origin and fission enabled' + 'M-gli': 'Mochitests with WebGL over IPC' + 'M-gli-nofis': 'Mochitests with WebGL over IPC without fission enabled' + 'M-nofis': 'Mochitests without fission enabled' + 'M-spi': 'Mochitests with socket process' + 'M-spi-nofis': 'Mochitests with socket process without fission enabled' + 'M-spi-nw': 'Mochitests with networking on socket process' + 'M-spi-nw-nofis': 'Mochitests with networking on socket process without fission enabled' + 'M-spi-nw-1proc': 'Mochitests with networking on socket process without e10s' + 'M-swr': 'Mochitests with software webrender enabled' + 'M-swr-a11y-checks': 'Mochitests with software webrender and accessibility checks enabled' + 'M-swr-a11y-checks-nofis': 'Mochitests with software webrender and accessibility checks enabled without fission enabled' + 'M-swr-1proc': 'Mochitests with software webrender enabled without e10s' + 'M-swr-nofis': 'Mochitests with software webrender without fission enabled' + 'M-wmfme': 'Mochitests with Windows Media Foundation media engine enabled' + 'M-f': 'Mochitest failures' + 'M-dt-no-eft-nofis': 'DevTools Mochitests with EFT without fission enabled' + 'M-msix': 'Mochitests from MSIX builds' + 'M-editor-legacy-dir': 'Mochitests within the legacy join/split node direction mode of the editor' + 'MSI': 'Repack installers into MSIs' + 'MSIs': 'Signing of Repacked installers of MSIs' + 'MSIX': 'Repack into MSIX package' + 'MSIXs': 'Signing of Repack into MSIX package' + 'Pup': "Puppeteer tests" + 'R': 'Reftests' + 'R-fis': 'Reftests with fission enabled' + 'R-nofis': 'Reftests without fission enabled' + 'R-swr': 'Reftests with software webrender enabled' + 'R-swr-nofis': 'Reftests with software webrender enabled without fission enabled' + 'R-swr-fis': 'Reftests with software webrender with fission enabled' + 'R-wr-dc0': 'Reftests with dcomp disabled' + 'R-wr-dc1-p': 'Reftests with dcomp present but not overlays' + 'R-wr-dc2-o': 'Reftests with dcomp overlays but not compositing' + 'R-wr-dc3-c': 'Reftests with dcomp compositing' + 'R-editor-legacy-dir': 'Reftests within the legacy join/split node direction mode of the editor' + 'Rap': 'Raptor performance tests on Firefox' + 'Rap-live': 'Raptor performance tests on Firefox with live sites' + 'Rap-fis': 'Raptor performance tests on Firefox with fission enabled' + 'Rap-Prof': 'Raptor performance tests on Firefox with Gecko Profiling' + 'Rap-Prof-fis': 'Raptor performance tests on Firefox with Gecko Profiling' + 'Rap-ChR': 'Raptor performance tests on Google Chrome Release' + 'Rap-Cr': 'Raptor performance tests on Google Chromium' + 'Rap-refbrow': 'Raptor performance tests on the reference browser' + 'T': 'Talos performance tests' + 'T-fis': 'Talos performance tests with fission enabled' + 'T-gli': 'Talos performance tests with WebGL over IPC' + 'T-gli-fis': 'Talos performance tests with WebGL over IPC with fission enabled' + 'T-Prof': 'Talos performance tests on Firefox with Gecko Profiling' + 'T-Prof-fis': 'Talos performance tests on Firefox with fission and Gecko Profiling' + 'T-Prof-gli': 'Talos performance tests with WebGL over IPC and Gecko Profiling' + 'T-Prof-gli-fis': 'Talos performance tests with WebGL over IPC and Gecko Profiling and fission enabled' + 'T-swr': 'Talos performance tests with software webrender enabled' + 'T-swr-fis': 'Talos performance tests with software webrender enabled' + 'tt': 'Telemetry tests' + 'tt-nofis': 'Telemetry tests without fission enabled' + 'tt-fis': 'Telemetry tests with fission enabled' + 'SY': 'Are we slim yet tests by TaskCluster' + 'SY-fis': 'Are we slim yet tests by TaskCluster, fission enabled' + 'W': 'Web platform tests' + 'W-fis': 'Web platform tests with fission enabled' + 'W-nofis': 'Web platform tests without fission enabled' + 'W-headless-nofis': 'Headless web platform tests without fission enabled' + 'W-headless': 'Headless web platform tests' + 'W-swr-nofis': 'Web platform tests with software webrender enabled without fission enabled' + 'W-swr': 'Web platform tests with software webrender enabled' + 'W-b': 'Web platform tests (backlog)' + 'W-b-nofis': 'Web platform tests (backlog) without fission enabled' + 'W-editor-legacy-dir': 'Web platform tests within the legacy join/split node direction mode of the editor' + 'X': 'Xpcshell tests' + 'X-condprof': 'Xpcshell tests with a conditioned profile' + 'X-nofis': 'Xpcshell tests without fission enabled' + 'X-fis': 'Xpcshell tests with fission enabled' + 'X-spi-nw': 'Xpcshell tests with networking on socket process' + 'X-spi-nw-fis': 'Xpcshell tests with networking on socket process' + 'X-spi-nw-nofis': 'Xpcshell tests with networking on socket process without fission enabled' + 'X-f': 'Xpcshell tests that fail on a given config' + 'X-f-spi-nw': 'Xpcshell tests that fail on a given config w/socket process' + 'X-msix': 'Xpcshell tests on msix packages' + 'L10n': 'Localised Repacks' + 'L10n-Rpk': 'Localized Repackaged Repacks' + 'deb-L10n': 'Localized Debian Repacks' + 'BM': 'Beetmover' + 'BMR': 'Beetmover repackages' + 'BM-apt': 'Beetmover .deb packages' + 'c-Up': 'Balrog submission of complete updates' + 'css': 'Checksum signing for source' + 'rs': 'Repackage signing' + 'BMcs': 'Beetmover checksums' + 'BMcslang': 'Beetmover checksums for language packs' + 'BMcss': 'Beetmover checksums for source' + 'Deb8': 'Packages for Debian 8' + 'Deb8-32': 'Packages for Debian 8 32-bits' + 'Deb9': 'Packages for Debian 9' + 'Deb10': 'Packages for Debian 10' + 'Deb11': 'Packages for Debian 11' + 'Ub18': 'Packages for Ubuntu 18.04' + 'Ub20': 'Packages for Ubuntu 20.04' + 'I': 'Docker Image Builds' + 'TA': 'Toolchain builds for Android' + 'TL': 'Toolchain builds for Linux 64-bits' + 'TL32': 'Toolchain builds for Linux 32-bits' + 'TM': 'Toolchain builds for OSX' + 'TMW': 'Toolchain builds for Windows MinGW' + 'TW32': 'Toolchain builds for Windows 32-bits' + 'TW64': 'Toolchain builds for Windows 64-bits' + 'WMC32': 'MinGW-Clang builds for Windows 32-bits' + 'WMC64': 'MinGW-Clang builds for Windows 64-bits' + 'Searchfox': 'Searchfox builds' + 'SM': 'Spidermonkey builds' + 'p': 'Partial generation' + 'ps': 'Partials signing' + 'ms': 'Complete MAR signing' + 'ms-stage': 'Autograph-stage MAR signing test' + 'Rel': 'Release promotion' + 'Snap': 'Snap image generation' + 'Flatpak': 'Flatpak image generation' + 'langpack': 'Langpack sigatures and uploads' + 'TPS': 'Sync tests' + 'UV': 'Update verify' + 'UVnext': 'Update verify for esr-next' + 'pydep': 'python dependency update' + 'WR': 'WebRender standalone' + 'Wgpu': 'WebGPU standalone' + 'cpp': 'C/C++ checks' + 'pedantic': 'pedantic checks' + 'text': 'Check on texts' + 'misc': 'Misc checks' + 'js': 'JavaScript checks' + 'py': 'Python checks' + 'java': 'Java checks' + 'rust': 'Rust checks' + 'Static-Analysis': 'Full tree static-analysis' + 'SS': 'Shadow scheduler' + 'Sentry': 'Sentry synchronization' + 'test-info': 'Test manifest skip/fail information' + 'condprof': 'Conditioned Profile Builder' + 'doc': 'Documentation' + 'GhS': 'GitHub Synchronization' + 'perftest': 'Performance tests' + 'perftest-detect': 'Performance regression detection tooling' + 'perftest-chrome': 'Performance tests using Chrone' + 'perftest-http3': 'Performance tests with HTTP/3' + 'l10n': 'Localization checks' + 'fxrec': 'Desktop startup recorder (fxrecord)' + 'wc': 'webcompat' + 'Boot': 'Bootstrap' + 'Attr-L10n': 'Build Attribution' + +index: + products: + - 'firefox' + - 'fennec' + - 'mobile' + - 'static-analysis' + - 'devedition' + - 'source' + - 'system-symbols' + - 'geckodriver' + +try: + # We have a few platforms for which we want to do some "extra" builds, or at + # least build-ish things. Sort of. Anyway, these other things are implemented + # as different "platforms". These do *not* automatically ride along with "-p + # all" + ridealong-builds: + 'linux': + - 'sm-plain-linux32' + - 'sm-arm-sim-linux32' + 'linux64': + - 'sm-plain-linux64' + - 'sm-nojit-linux64' + - 'sm-nonunified-linux64' + - 'sm-arm-sim-linux32' + - 'sm-arm64-sim-linux64' + - 'sm-compacting-linux64' + - 'sm-rootanalysis-linux64' + - 'sm-package-linux64' + - 'sm-tsan-linux64' + - 'sm-asan-linux64' + - 'sm-msan-linux64' + - 'sm-fuzzing-linux64' + 'win32': + - 'sm-plain-win32' + - 'sm-compacting-win32' + +release-promotion: + products: + - 'devedition' + - 'fennec' + - 'firefox' + flavors: + promote_devedition: + product: devedition + target-tasks-method: promote_desktop + partial-updates: true + promote_firefox: + product: firefox + target-tasks-method: promote_desktop + partial-updates: true + promote_firefox_partner_repack: + product: firefox + rebuild-kinds: + - release-partner-repack + - release-partner-repack-chunking-dummy + - release-partner-repack-signing + - release-partner-repack-mac-signing + - release-partner-repack-mac-notarization + - release-partner-repack-repackage + - release-partner-repack-repackage-signing + - release-partner-repack-beetmover + target-tasks-method: promote_desktop + promote_firefox_partner_attribution: + product: firefox + rebuild-kinds: + - release-partner-attribution + - release-partner-attribution-beetmover + target-tasks-method: promote_desktop + promote_firefox_rc: + product: firefox + is-rc: true + target-tasks-method: promote_desktop + partial-updates: true + push_devedition: + product: devedition + target-tasks-method: push_desktop + partial-updates: true + push_firefox: + product: firefox + target-tasks-method: push_desktop + partial-updates: true + ship_devedition: + product: devedition + target-tasks-method: ship_desktop + version-bump: true + partial-updates: true + ship_firefox: + product: firefox + target-tasks-method: ship_desktop + version-bump: true + partial-updates: true + ship_firefox_rc: + product: firefox + is-rc: true + target-tasks-method: ship_desktop + partial-updates: true + + +merge-automation: + behaviors: + central-to-beta: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "config/milestone.txt" + new-suffix: '' + - filename: "browser/config/version.txt" + new-suffix: '' + - filename: "browser/config/version_display.txt" + new-suffix: 'b1' + replacements: + - - browser/config/mozconfigs/linux32/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + - - browser/config/mozconfigs/linux64/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + - - browser/config/mozconfigs/win32/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + - - browser/config/mozconfigs/win64/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + - - browser/config/mozconfigs/win64-aarch64/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + - - browser/config/mozconfigs/macosx64/l10n-mozconfig + - ac_add_options --with-branding=browser/branding/nightly + - ac_add_options --enable-official-branding + merge-old-head: true + base-tag: 'FIREFOX_BETA_{major_version}_BASE' + end-tag: 'FIREFOX_BETA_{major_version}_END' + from-repo: 'https://hg.mozilla.org/mozilla-central' + from-branch: 'central' + to-repo: 'https://hg.mozilla.org/releases/mozilla-beta' + to-branch: 'beta' + early-to-late-beta: + fetch-version-from: "browser/config/version.txt" + version-files: [] + replacements: + - - build/defines.sh + - EARLY_BETA_OR_EARLIER=1 + - EARLY_BETA_OR_EARLIER= + merge-old-head: false + to-repo: 'https://hg.mozilla.org/releases/mozilla-beta' + to-branch: 'beta' + beta-to-release: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "browser/config/version_display.txt" + new-suffix: '' + replacements: [] + merge-old-head: true + base-tag: 'FIREFOX_RELEASE_{major_version}_BASE' + end-tag: 'FIREFOX_RELEASE_{major_version}_END' + from-repo: 'https://hg.mozilla.org/releases/mozilla-beta' + from-branch: 'beta' + to-repo: 'https://hg.mozilla.org/releases/mozilla-release' + to-branch: 'release' + release-to-esr: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "browser/config/version_display.txt" + new-suffix: 'esr' + replacements: [] + merge-old-head: false + end-tag: "FIREFOX_ESR_{major_version}_BASE" + to-repo: 'https://hg.mozilla.org/releases/mozilla-esr115' + to-branch: 'esr115' + bump-central: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "config/milestone.txt" + version-bump: "major" + new-suffix: 'a1' + - filename: "browser/config/version.txt" + version-bump: "major" + new-suffix: 'a1' + - filename: "browser/config/version_display.txt" + version-bump: "major" + new-suffix: 'a1' + replacements: + - - "services/sync/modules/constants.sys.mjs" + - 'WEAVE_VERSION = "1.{current_weave_version}.0"' + - 'WEAVE_VERSION = "1.{next_weave_version}.0"' + merge-old-head: false + end-tag: 'FIREFOX_NIGHTLY_{major_version}_END' + to-repo: 'https://hg.mozilla.org/mozilla-central' + to-branch: 'central' + bump-esr102: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "config/milestone.txt" + version-bump: "minor" + - filename: "browser/config/version.txt" + version-bump: "minor" + - filename: "browser/config/version_display.txt" + version-bump: "minor" + replacements: [] + merge-old-head: false + to-repo: 'https://hg.mozilla.org/releases/mozilla-esr102' + to-branch: 'esr102' + bump-esr115: + fetch-version-from: "browser/config/version.txt" + version-files: + - filename: "config/milestone.txt" + version-bump: "minor" + - filename: "browser/config/version.txt" + version-bump: "minor" + - filename: "browser/config/version_display.txt" + version-bump: "minor" + replacements: [] + merge-old-head: false + to-repo: 'https://hg.mozilla.org/releases/mozilla-esr115' + to-branch: 'esr115' + +scriptworker: + # See additional configuration in taskcluster/gecko_taskgraph/util/scriptworker.py + scope-prefix: 'project:releng' + +partner-urls: + release-partner-repack: + by-release-product: + default: null + firefox: + by-release-type: + default: null + beta|release.*: + by-release-level: + production: 'git@github.com:mozilla-partners/repack-manifests.git' + staging: 'git@github.com:moz-releng-automation-stage/repack-manifests.git' + esr.*: + by-release-level: + production: 'git@github.com:mozilla-partners/esr-repack-manifests.git' + staging: 'git@github.com:moz-releng-automation-stage/esr-repack-manifests.git' + release-partner-attribution: + by-release-product: + default: null + firefox: + by-release-type: + default: null + beta|release.*: + by-release-level: + production: 'git@github.com:mozilla-partners/repack-manifests.git' + staging: 'git@github.com:moz-releng-automation-stage/repack-manifests.git' + esr.*: + by-release-level: + production: 'git@github.com:mozilla-partners/esr-repack-manifests.git' + staging: 'git@github.com:moz-releng-automation-stage/esr-repack-manifests.git' + release-eme-free-repack: + by-release-product: + default: null + firefox: + by-release-type: + default: null + beta|release.*: + by-release-level: + production: 'git@github.com:mozilla-partners/mozilla-EME-free-manifest.git' + staging: 'git@github.com:moz-releng-automation-stage/mozilla-EME-free-manifest.git' + + +task-priority: + by-project: + 'mozilla-release': 'highest' + 'mozilla-esr.*': 'very-high' + 'mozilla-beta': 'high' + 'mozilla-central': 'medium' + 'autoland': 'low' + 'mozilla-inbound': 'low' + 'default': 'very-low' + +taskgraph: + register: gecko_taskgraph:register + +workers: + aliases: + b-linux.*: + provisioner: '{trust-domain}-{level}' + implementation: docker-worker + os: linux + worker-type: '{alias}' + b-win2012: + provisioner: '{trust-domain}-{level}' + implementation: generic-worker + os: windows + worker-type: '{alias}-azure' + image: + provisioner: '{trust-domain}-{level}' + implementation: docker-worker + os: linux + worker-type: '{alias}' + images: + provisioner: '{trust-domain}-{level}' + implementation: docker-worker + os: linux + worker-type: '{alias}' + images-gcp: + provisioner: '{trust-domain}-{level}' + implementation: docker-worker + os: linux + worker-type: '{alias}' + addon: + provisioner: scriptworker-k8s + implementation: push-addons + os: scriptworker + worker-type: + by-release-level: + production: '{trust-domain}-3-addon' + staging: '{trust-domain}-1-addon' + balrog: + provisioner: scriptworker-k8s + implementation: balrog + os: scriptworker + worker-type: + by-release-level: + production: '{trust-domain}-3-balrog' + staging: '{trust-domain}-1-balrog' + bouncer: + provisioner: scriptworker-k8s + # Note that this implementation doesn't correspond with an + # payload_builder, there are several `bouncer-*` implemenations. + implementation: bouncer + os: scriptworker + worker-type: + by-release-level: + production: '{trust-domain}-3-bouncer' + staging: '{trust-domain}-1-bouncer' + beetmover: + provisioner: scriptworker-k8s + implementation: beetmover + os: scriptworker + worker-type: + by-release-level: + production: '{trust-domain}-3-beetmover' + staging: '{trust-domain}-1-beetmover' + linux-depsigning: + provisioner: scriptworker-k8s + implementation: scriptworker-signing + os: linux + worker-type: '{trust-domain}-t-signing' + linux-signing: + provisioner: scriptworker-k8s + implementation: scriptworker-signing + os: linux + worker-type: + by-release-level: + production: '{trust-domain}-3-signing' + staging: '{trust-domain}-t-signing' + mac-depsigning: + provisioner: scriptworker-prov-v1 + implementation: scriptworker-signing + os: macosx + worker-type: depsigning-mac-v1 + mac-signing: + provisioner: scriptworker-prov-v1 + implementation: scriptworker-signing + os: macosx + worker-type: + by-release-level: + production: signing-mac-v1 + staging: depsigning-mac-v1 + tree: + provisioner: scriptworker-k8s + implementation: treescript + os: scriptworker + worker-type: + by-release-level: + production: '{trust-domain}-3-tree' + staging: + by-project: + autoland: '{trust-domain}-3-tree' + default: '{trust-domain}-1-tree' + tree-dev: + provisioner: scriptworker-k8s + implementation: treescript + os: scriptworker + worker-type: '{trust-domain}-1-tree-dev' + t-bitbar-gw.*: + provisioner: proj-autophone + implementation: generic-worker + os: linux-bitbar + worker-type: 'gecko-{alias}' + t-linux(-large|-xlarge|-xlarge-source): + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: '{alias}-gcp' + t-linux-kvm: + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: 't-linux-kvm-gcp' + t-linux-kvm-aws: + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: 't-linux-metal' + t-linux-talos: + provisioner: releng-hardware + implementation: generic-worker + os: linux + worker-type: 'gecko-{alias}' + t-linux-talos-1804: + provisioner: releng-hardware + implementation: generic-worker + os: linux + worker-type: 'gecko-{alias}' + t-linux-wayland: + provisioner: '{trust-domain}-t' + implementation: generic-worker + os: linux + worker-type: 't-linux-vm-2204-wayland' + t-osx-1015-r8: + provisioner: releng-hardware + implementation: generic-worker + os: macosx + worker-type: 'gecko-{alias}' + t-osx-1100-m1: + provisioner: releng-hardware + implementation: generic-worker + os: macosx + worker-type: 'gecko-{alias}' + t-osx-1015-power: + provisioner: releng-hardware + implementation: generic-worker + os: macosx + worker-type: 'gecko-{alias}' + t-linux-xlarge-pgo: + provisioner: + by-level: + '3': '{trust-domain}-{level}' + default: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: 't-linux-xlarge-gcp' + b-osx-1015: + provisioner: releng-hardware + implementation: generic-worker + os: macosx + worker-type: + by-level: + '3': 'gecko-3-b-osx-1015' + default: 'gecko-1-b-osx-1015' + t-win10-64(|-gpu-s|-source): + provisioner: '{trust-domain}-t' + implementation: generic-worker + os: windows + worker-type: '{alias}' + t-win10-64(-hw|-ref-hw|-1803-hw): + provisioner: releng-hardware + implementation: generic-worker + os: windows + worker-type: 'gecko-{alias}' + win10-64-2009(|-gpu|-ssd|-source|-ssd-gpu): + provisioner: 'gecko-t' + implementation: generic-worker + os: windows + worker-type: '{alias}' + t-win11-64(|-gpu-s|-source): + provisioner: '{trust-domain}-t' + implementation: generic-worker + os: windows + worker-type: '{alias}' + win11-64-2009(|-gpu|-ssd|-source|-ssd-gpu): + provisioner: 'gecko-t' + implementation: generic-worker + os: windows + worker-type: '{alias}' + t-win7-32-gpu: + provisioner: '{trust-domain}-t' + implementation: generic-worker + os: windows + worker-type: '{alias}' + t-win7-32: + provisioner: releng-hardware + implementation: generic-worker + os: windows + worker-type: 'gecko-{alias}-hw' + t-win64-aarch64-laptop: + provisioner: bitbar + implementation: generic-worker + os: windows + worker-type: 'gecko-{alias}' + succeed: + provisioner: built-in + implementation: succeed + os: none + worker-type: succeed + misc: + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: misc-gcp + + +mac-notarization: + mac-entitlements: + by-platform: + macosx64.*: + by-release-level: + production: security/mac/hardenedruntime/production.entitlements.xml + default: security/mac/hardenedruntime/developer.entitlements.xml + default: '' + mac-requirements: + by-platform: + macosx64.*: build/package/mac_osx/requirements.plist + default: '' + +expiration-policy: + by-project: + try: + default: 1 month + shortest: 7 days + short: 14 days + medium: 1 month + long: 1 month + autoland: + default: 1 year + shortest: 14 days + short: 3 months + medium: 1 year + # To avoid keeping shippable builds for over a year + long: 1 year + default: + default: 3 months + shortest: 7 days + short: 1 month + medium: 1 year + long: 1 year diff --git a/taskcluster/ci/cron-bouncer-check/kind.yml b/taskcluster/ci/cron-bouncer-check/kind.yml new file mode 100644 index 0000000000..62d2c80960 --- /dev/null +++ b/taskcluster/ci/cron-bouncer-check/kind.yml @@ -0,0 +1,82 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.bouncer_check:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: bouncer-check + description: bouncer check + worker-type: b-linux-gcp + worker: + max-run-time: 1200 + docker-image: {in-tree: "update-verify"} + run: + sparse-profile: mozharness + extra-config: + bouncer_prefix: "https://download.mozilla.org/" + attributes: + build_platform: linux64 + build_type: opt + cron: true + treeherder: + symbol: Rel(ckbouncer) + kind: test + tier: 1 + +jobs: + firefox: + shipping-product: firefox + index: + product: firefox + job-name: firefox-bouncer-check + run: + config: + by-release-type: + nightly: + - releases/bouncer_firefox_nightly.py + beta: + - releases/bouncer_firefox_beta.py + release: + - releases/bouncer_firefox_release.py + esr.*: + - releases/bouncer_firefox_esr.py + default: + - releases/bouncer_firefox_beta.py + product-field: + by-project: + mozilla-central: FIREFOX_NIGHTLY + mozilla-beta: LATEST_FIREFOX_RELEASED_DEVEL_VERSION + mozilla-release: LATEST_FIREFOX_VERSION + mozilla-esr115: FIREFOX_ESR + # mozilla-esrXX: FIREFOX_ESR_NEXT + default: LATEST_FIREFOX_DEVEL_VERSION + products-url: https://product-details.mozilla.org/1.0/firefox_versions.json + treeherder: + platform: firefox-release/opt + + devedition: + shipping-product: devedition + run-on-projects: [mozilla-beta] + index: + product: devedition + job-name: devedition-bouncer-check + run: + config: + by-project: + mozilla-beta: + - releases/bouncer_firefox_devedition.py + default: + - releases/dev_bouncer_firefox_devedition.py + product-field: + by-project: + mozilla-beta: LATEST_FIREFOX_RELEASED_DEVEL_VERSION + default: LATEST_FIREFOX_DEVEL_VERSION + products-url: https://product-details.mozilla.org/1.0/firefox_versions.json + treeherder: + platform: devedition-release/opt diff --git a/taskcluster/ci/diffoscope/kind.yml b/taskcluster/ci/diffoscope/kind.yml new file mode 100644 index 0000000000..ba2b609b2c --- /dev/null +++ b/taskcluster/ci/diffoscope/kind.yml @@ -0,0 +1,122 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - build + - toolchain + +transforms: + - gecko_taskgraph.transforms.diffoscope:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +# Note: --exclude-command .--line-numbers is because of +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879003 +# That skips `objdump --disassemble --line-numbers` and falls back to +# `objdump --disassemble` +# Note: the .chk excludes are for files that are known to differ between +# builds because they are signed with an ephemeral private key that is +# generated for each build. +job-defaults: + tier: 2 + args: >- + --output-empty + --no-default-limits + --max-page-size 100000000 + --max-page-diff-block-lines 10000 + --exclude-directory-metadata=yes + --exclude-command .--line-numbers + +jobs: + artifact-win64-aarch64-eme-validation: + symbol: DWE + new: build-win64-aarch64-eme/opt + original: build-win64-aarch64/opt + unpack: true + fail-on-diff: true + pre-diff-commands: + # The EME version has extra files under i686/. + - rm -rf b/firefox/i686 + # The i686/ files appear in precomplete, so after removing those references, + # we expect the same content as the non-EME build. + - sed -i '/i686\//d' b/firefox/precomplete + # Remove noise from differences in line numbers in preprocessor output + # due to #if/#else branches. + - sed -i '/^\/\/@line /d' {a,b}/firefox/browser/defaults/preferences/firefox.js + # Removing media.gmp-widevinecdm.* preferences, and setting + # browser.eme.ui.enabled to false should give us the same preferences as + # the non-EME build. + - sed -i '/browser\.eme\.ui\.enabled/s/true/false/;/media\.gmp-widevinecdm\./d' b/firefox/browser/defaults/preferences/firefox.js + # bug 1825141 - telemetry.fog.artifact_build isn't stable between + # artifact and not-artifact builds, so remove its line if present. + - sed -i '/telemetry\.fog\.artifact\_build/d' b/firefox/browser/defaults/preferences/firefox.js + # Extra diffoscope arguments to account for: + # - about:buildconfig being expectedly different. + # - There are some differences in PE metadata in helper.exe because + # it's (re)built in the EME build, and that part of the build is + # not reproducible. + extra-args: >- + --exclude-directory-metadata=recursive + --exclude b/firefox/chrome/toolkit/content/global/buildconfig.html + --exclude b/firefox/uninstall/helper.exe + # This is necessary to avoid building `build-win64-aarch64` on every push on autoland + # A more robust fix for this is https://bugzilla.mozilla.org/show_bug.cgi?id=1643346 + optimization: + skip-unless-expanded: null + + reproducible-linux32: + symbol: Linux32 + new: build-linux-reproduced/opt + original: build-linux-shippable/opt + fail-on-diff: true + run-on-projects: ['mozilla-central'] # Do not run linux32 on autoland, Bug 1599197 + + reproducible-linux32-generated-files: + symbol: Linux32g + artifact: target.generated-files.tar.gz + new: build-linux-reproduced/opt + original: build-linux-shippable/opt + fail-on-diff: true + run-on-projects: ['mozilla-central'] # Do not run linux32 on autoland, Bug 1599197 + + reproducible-linux64: + symbol: Linux64 + new: build-linux64-reproduced/opt + original: build-linux64-shippable/opt + fail-on-diff: true + run-on-projects: ['mozilla-central'] + + reproducible-linux64-generated-files: + symbol: Linux64g + artifact: target.generated-files.tar.gz + new: build-linux64-reproduced/opt + original: build-linux64-shippable/opt + fail-on-diff: true + run-on-projects: ['mozilla-central'] + +# Make a task for each diff we might want. The following are just examples, +# Both original and new can point to builds from the full set of tasks or +# from other sets through an index-search. Other kinds than `build` can be +# compared (for example, static-analysis), provided you adjust the +# kind-dependencies above. +# android-build-vs-previous-try: +# symbol: A +# new: build-android-arm/opt +# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.mobile.android-arm-opt} +# linux64-build-vs-previous-try: +# symbol: L +# new: build-linux64/opt +# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.linux64-opt} +# extra-args: >- +# --exclude-command .--hex-dump=.gnu_debuglink +# macosx-build-vs-previous-try: +# symbol: M +# new: build-macosx64/opt +# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.macosx64-opt} +# win32-build-vs-previous-try: +# symbol: W +# new: build-win32/opt +# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.win32-opt} diff --git a/taskcluster/ci/docker-image/kind.yml b/taskcluster/ci/docker-image/kind.yml new file mode 100644 index 0000000000..1b00918a74 --- /dev/null +++ b/taskcluster/ci/docker-image/kind.yml @@ -0,0 +1,215 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - packages + +transforms: + - gecko_taskgraph.transforms.docker_image:transforms + - gecko_taskgraph.transforms.cached_tasks:transforms + - gecko_taskgraph.transforms.task:transforms + +# make a task for each docker-image we might want. For the moment, since we +# write artifacts for each, these are whitelisted, but ideally that will change +# (to use subdirectory clones of the proper directory), at which point we can +# generate tasks for every docker image in the directory, secure in the +# knowledge that unnecessary images will be omitted from the target task graph +jobs: + image_builder: + symbol: I(ib) + # Neither the ubuntu1804-*raw nor the ubuntu1804-*packages images can have + # packages dependencies. + ubuntu1804-raw: + symbol: I(ub18-raw) + definition: debian-raw + args: + BASE_IMAGE: ubuntu:bionic + ubuntu1804-packages: + symbol: I(ub18-pkg) + definition: debian-packages + parent: ubuntu1804-raw + ubuntu1804-i386-raw: + symbol: I(ub18-32-raw) + definition: debian-raw + args: + BASE_IMAGE: i386/ubuntu:bionic + ubuntu1804-i386-packages: + symbol: I(ub18-32-pkg) + definition: debian-packages + parent: ubuntu1804-i386-raw + ubuntu1804-base: + symbol: I(ub18-base) + parent: ubuntu1804-raw + packages: + - ub18-mercurial + - ub18-python-zstandard + - ub18-python-psutil + ubuntu1804-test-base: + symbol: I(ub18-test-base) + parent: ubuntu1804-base + packages: + - ub18-libc6 + - ub18-32-libc6 + ubuntu1804-test: + symbol: I(ub18-test) + parent: ubuntu1804-test-base + # Neither the ubuntu1804-*raw nor the ubuntu1804-*packages images can have + # packages dependencies. + ubuntu2004-raw: + symbol: I(ub20-raw) + definition: debian-raw + args: + BASE_IMAGE: ubuntu:focal + ubuntu2004-packages: + symbol: I(ub20-pkg) + definition: debian-packages + parent: ubuntu2004-raw + ubuntu2004-base: + symbol: I(ub20-base) + definition: debian-base + parent: ubuntu2004-raw + packages: + - ub20-mercurial + - ub20-python-zstandard + # Neither the debian8-*raw nor the debian8-*packages images can have + # packages dependencies. + debian8-raw: + symbol: I(deb8-raw) + definition: debian-raw + args: + BASE_IMAGE: debian:jessie-20210208 + DIST: jessie + debian8-packages: + symbol: I(deb8-pkg) + definition: debian-packages + parent: debian8-raw + debian8-i386-raw: + symbol: I(deb8-32-raw) + definition: debian-raw + args: + BASE_IMAGE: i386/debian:jessie-20210208 + DIST: jessie + debian8-i386-packages: + symbol: I(deb8-32-pkg) + definition: debian-packages + parent: debian8-i386-raw + custom-v8: + symbol: I(custom-v8) + parent: debian11-base + # Chromium-as-Release + custom-car-linux: + symbol: I(custom-car-linux) + parent: debian11-base + valgrind-build: + symbol: I(vb) + parent: debian11-amd64-build + packages: + - deb11-valgrind + lint: + symbol: I(lnt) + parent: debian11-base + # Neither the debian11-raw nor the debian11-packages images can have + # packages dependencies. + debian11-raw: + symbol: I(deb11-raw) + definition: debian-raw + args: + BASE_IMAGE: debian:bullseye-20221205 + DIST: bullseye + SNAPSHOT: '20221204T212138Z' + debian11-packages: + symbol: I(deb11-pkg) + definition: debian-packages + parent: debian11-raw + debian11-base: + symbol: I(deb11-base) + definition: debian-base + parent: debian11-raw + packages: + - deb11-mercurial + - deb11-python-zstandard + debian11-amd64-build: + symbol: I(deb11) + parent: debian11-base + definition: debian-build + debian11-repackage: + symbol: I(deb11-rpk) + parent: debian11-base + definition: debian-repackage + packages: + - deb11-mercurial + deb11-toolchain-build: + symbol: I(deb11-toolchain) + parent: debian11-base + definition: toolchain-build + packages: + - deb11-cmake + android-build: + symbol: I(agb) + parent: debian11-base + fetch: + symbol: I(fetch) + parent: debian11-raw + packages: + - deb11-python-zstandard + static-analysis-build: + symbol: I(static-analysis-build) + parent: debian11-base + gdb-test: + symbol: I(gdb) + parent: debian11-amd64-build + definition: gdb-test + index-task: + symbol: I(idx) + funsize-update-generator: + symbol: I(pg) + update-verify: + symbol: I(uv) + parent: ubuntu2004-base + diffoscope: + symbol: I(diff) + parent: debian11-base + partner-repack: + symbol: I(PR) + parent: debian11-base + definition: partner-repack + updatebot: + symbol: I(3rdp) + parent: push-to-try + periodic-updates: + symbol: I(file) + parent: debian11-base + firefox-snap: + symbol: I(snap) + firefox-flatpak: + symbol: I(flatpak) + webrender: + symbol: I(webrender) + parent: debian11-base + condprof: + symbol: I(condprof) + parent: ubuntu1804-test + github-sync: + symbol: I(github-sync) + parent: debian11-base + sentry: + symbol: I(sentry) + parent: debian11-base + system-symbols-mac: + symbol: I(system-symbols-mac) + parent: debian11-base + system-symbols-win: + symbol: I(system-symbols-win) + parent: debian11-base + system-symbols-linux-scraper: + symbol: I(system-symbols-linux) + parent: debian11-base + push-to-try: + symbol: I(push-to-try) + parent: debian11-base + decision: + symbol: I(decision) + parent: ubuntu2004-base diff --git a/taskcluster/ci/fetch/benchmarks.yml b/taskcluster/ci/fetch/benchmarks.yml new file mode 100644 index 0000000000..7e31470baf --- /dev/null +++ b/taskcluster/ci/fetch/benchmarks.yml @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +octane: + description: Octane benchmark + fetch: + type: static-url + url: https://github.com/mozilla/perf-automation/releases/download/octane-v1/octane-0f5b8d48d4a9.zip + sha256: 38425ee1abfc5feca178b2f60fbd82b5873897c345112a85359be00024402f9f + size: 1816138 + +web-tooling-benchmark: + description: Web Tooling Benchmark + fetch: + type: static-url + url: https://github.com/mozilla/perf-automation/releases/download/V1/web-tooling-benchmark-b2ac25c897c9.zip + sha256: 93b0b51df0cec3ca9bfa0bdf81d782306dcf18532e39b3ff3180409125daaff1 + size: 5444135 diff --git a/taskcluster/ci/fetch/browsertime.yml b/taskcluster/ci/fetch/browsertime.yml new file mode 100644 index 0000000000..e11b3ca391 --- /dev/null +++ b/taskcluster/ci/fetch/browsertime.yml @@ -0,0 +1,197 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +win64-ffmpeg-4.4.1: + description: 'Win64 ffmpeg' + fetch: + type: static-url + # url: https://github.com/GyanD/codexffmpeg/releases/tag/4.4.1 + url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-4.4.1-full_build.zip + sha256: f0f407041f82905c310b79f4f76973815700d1e438a10c3cbce66a345ff4f457 + size: 134760541 + +linux64-ffmpeg-4.4.1: + description: 'Linux64 ffmpeg' + fetch: + type: static-url + # url: https://www.johnvansickle.com/ffmpeg/old-releases/ + url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-4.4.1-i686-static.tar.xz + sha256: 1f38d1c99b6eb3d36f709a481f5a5526448567a800ee9cddcfe4be54f8b68e62 + size: 17592088 + +mac64-ffmpeg-4.4.1: + description: 'Mac64 ffmpeg' + fetch: + type: static-url + # url: https://evermeet.cx/pub/ffmpeg/ + url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-macos.zip + sha256: 9d07411bce176f56314cc5624f5df51f9cffa76a59e3e81abe2175d4ebaf87ae + size: 49100208 + +linux64-chromedriver: + description: 'Linux64 chromedriver' + fetch: + type: static-url + url: https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.zip + sha256: 461919e080e19335a34224e2d353b96b07c7d068621aa940f9c136e86d090047 + size: 5404417 + +linux64-chromedriver-109: + description: "Linux64 chromedriver v109" + fetch: + type: static-url + artifact-name: chromedriver_linux64_109.tar.zst + add-prefix: "109" + url: https://chromedriver.storage.googleapis.com/109.0.5414.25/chromedriver_linux64.zip + sha256: 8f46097124424370c532142d799f5852a960f3c428a1a05934490ae66d82cbbf + size: 7068129 + +mac64-chromedriver-109: + description: "Mac64 chromedriver v109" + fetch: + type: static-url + artifact-name: chromedriver_mac64_109.tar.zst + add-prefix: "109" + url: https://chromedriver.storage.googleapis.com/109.0.5414.25/chromedriver_mac64.zip + sha256: e1fcfd4d75b38ec147493595757e72bf13803138a8cb3f3917394ed975fa7af0 + size: 9186656 + +linux64-chromedriver-110: + description: "Linux64 chromedriver v110" + fetch: + type: static-url + artifact-name: chromedriver_linux64_110.tar.zst + add-prefix: "110" + url: https://chromedriver.storage.googleapis.com/110.0.5481.30/chromedriver_linux64.zip + sha256: bc5af03f72ed19a20c3945b0ed85db344ed27658a832788caf8f42e5a1424222 + size: 7386948 + +mac64-chromedriver-110: + description: "Mac64 chromedriver v110" + fetch: + type: static-url + artifact-name: chromedriver_mac64_110.tar.zst + add-prefix: "110" + url: https://chromedriver.storage.googleapis.com/110.0.5481.30/chromedriver_mac64.zip + sha256: c476ed24f76b23da77726a3800c5d8ea8cbc6e9f8e61ed4ddbbe8497a2039876 + size: 9259405 + +linux64-chromedriver-111: + description: "Linux64 chromedriver v111" + fetch: + type: static-url + artifact-name: chromedriver_linux64_111.tar.zst + add-prefix: "111" + url: https://chromedriver.storage.googleapis.com/111.0.5563.41/chromedriver_linux64.zip + sha256: a2723ab3e92147ddf73fb9030f28ced0e483fae254edb9cb7e899b4e14871398 + size: 7398382 + +mac64-chromedriver-111: + description: "Mac64 chromedriver v111" + fetch: + type: static-url + artifact-name: chromedriver_mac64_111.tar.zst + add-prefix: "111" + url: https://chromedriver.storage.googleapis.com/111.0.5563.41/chromedriver_mac64.zip + sha256: 868a03de57d75f0bab6e9b13ec678377ec3df19bf9fb749a67aa3499464eb87c + size: 9125393 + +win32-chromedriver-112: + description: "Win32 chromedriver v112" + fetch: + type: static-url + artifact-name: chromedriver_win32_112.tar.zst + add-prefix: "112" + url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_win32.zip + sha256: 0b19ddf77da29b391bdacab4883e39b97277b08b7c8c759a4e713d1ebf3d6aae + size: 7175657 + +linux64-chromedriver-112: + description: "Linux64 chromedriver v112" + fetch: + type: static-url + artifact-name: chromedriver_linux64_112.tar.zst + add-prefix: "112" + url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_linux64.zip + sha256: 285d72fc1f19237aa857ed588dc00b94f68ede03a0965392deb2b7d17ef0228e + size: 7902470 + +mac64-chromedriver-112: + description: "Mac64 chromedriver v112" + fetch: + type: static-url + artifact-name: chromedriver_mac64_112.tar.zst + add-prefix: "112" + url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_mac64.zip + sha256: 8e983d374af3e9795d4053593369f0b2192815183c8c23053bce0226e3818857 + size: 9289541 + +win32-chromedriver-113: + description: "Win32 chromedriver v113" + fetch: + type: static-url + artifact-name: chromedriver_win32_113.tar.zst + add-prefix: "113" + url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_win32.zip + sha256: d75eecc9f4667326260e883b902e585d0597372e8d6f4b414564a63fdd75b9f5 + size: 7141014 + +linux64-chromedriver-113: + description: "Linux64 chromedriver v113" + fetch: + type: static-url + artifact-name: chromedriver_linux64_113.tar.zst + add-prefix: "113" + url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_linux64.zip + sha256: 126151e17b5e42a39d6945f1df2b675d08ad2c79b469a84ecca3aa32f9b9a127 + size: 7315061 + +mac64-chromedriver-113: + description: "Mac64 chromedriver v113" + fetch: + type: static-url + artifact-name: chromedriver_mac64_113.tar.zst + add-prefix: "113" + url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_mac64.zip + sha256: 26c6be21536fe91e8972b5ddf1e8fccee6f07792f74270c599d0457a663d6dc1 + size: 9237503 + +win32-chromedriver-114: + description: "Win32 chromedriver v114" + fetch: + type: static-url + artifact-name: chromedriver_win32_114.tar.zst + add-prefix: "114" + url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_win32.zip + sha256: 9dcad58796e1319cd942575ea8a38b1c9a720170aaf79f3a1451458c1bd485d1 + size: 6604629 + +linux64-chromedriver-114: + description: "Linux64 chromedriver v114" + fetch: + type: static-url + artifact-name: chromedriver_linux64_114.tar.zst + add-prefix: "114" + url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_linux64.zip + sha256: 87472593a65e09b700c0e9f54451e4b8ae49bbf92e13a37dcf60e5eb93235875 + size: 7399878 + +mac64-chromedriver-114: + description: "Mac64 chromedriver v114" + fetch: + type: static-url + artifact-name: chromedriver_mac64_114.tar.zst + add-prefix: "114" + url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_mac64.zip + sha256: 80f1e41949c017d897d8076e400521691cc018aa2276157c35e44a1e1f984b69 + size: 8609836 + +upload-speed-test-file: + description: "File used for the upload speed performance test" + fetch: + type: static-url + artifact-name: upload-test-32MB.dat + url: https://github.com/mozilla/perf-automation/raw/master/test_files/upload-test-32MB.dat + sha256: 72caa47a951e9f37d1e1be2119a64b1fbc6348c4f37d574bee4587e02b8f96a5 + size: 32000000 diff --git a/taskcluster/ci/fetch/chromium-fetch.yml b/taskcluster/ci/fetch/chromium-fetch.yml new file mode 100644 index 0000000000..f6b9cad8f3 --- /dev/null +++ b/taskcluster/ci/fetch/chromium-fetch.yml @@ -0,0 +1,32 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + fetch: + type: chromium-fetch + script: /builds/worker/bin/fetch-chromium.py + +linux64-chromium: + description: 'Linux64 Chromium Fetch' + fetch: + platform: linux + artifact-name: chromium-linux.tar.bz2 + +win32-chromium: + description: 'Windows32 Chromium Fetch' + fetch: + platform: win32 + artifact-name: chromium-win32.tar.bz2 + +win64-chromium: + description: 'Windows64 Chromium Fetch' + fetch: + platform: win64 + artifact-name: chromium-win64.tar.bz2 + +mac-chromium: + description: 'MacOSX Chromium Fetch' + fetch: + platform: mac + artifact-name: chromium-mac.tar.bz2 diff --git a/taskcluster/ci/fetch/kind.yml b/taskcluster/ci/fetch/kind.yml new file mode 100644 index 0000000000..027ab7f1eb --- /dev/null +++ b/taskcluster/ci/fetch/kind.yml @@ -0,0 +1,20 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.fetch:transforms + - gecko_taskgraph.transforms.try_job:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs-from: + - benchmarks.yml + - browsertime.yml + - chromium-fetch.yml + - resource-monitor.yml + - toolchain-clang-tidy-external.yml + - toolchains.yml + - updatebot.yml diff --git a/taskcluster/ci/fetch/moz.build b/taskcluster/ci/fetch/moz.build new file mode 100644 index 0000000000..28b8003edf --- /dev/null +++ b/taskcluster/ci/fetch/moz.build @@ -0,0 +1,8 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +with Files("updatebot.yml"): + BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot") diff --git a/taskcluster/ci/fetch/resource-monitor.yml b/taskcluster/ci/fetch/resource-monitor.yml new file mode 100644 index 0000000000..2fe94cb4f9 --- /dev/null +++ b/taskcluster/ci/fetch/resource-monitor.yml @@ -0,0 +1,10 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +resource-monitor: + description: Resource monitoring tools + fetch: + type: git + repo: https://github.com/mozilla-releng/resource-monitor + revision: 17371502a3b04579375d707844e6bf08dee95d22 diff --git a/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml b/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml new file mode 100644 index 0000000000..d71058c06b --- /dev/null +++ b/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +civet-source: + description: Repository for external static analysis checks + artifact-prefix: project/civet + fetch: + type: git + repo: git@github.com:mozilla-services/civet.git + revision: fa787d2047a5c3759e67f0df58415a984dcc8777 + ssh-key: project/civet/github-deploy-key + artifact-name: civet-source.tar.zst diff --git a/taskcluster/ci/fetch/toolchains.yml b/taskcluster/ci/fetch/toolchains.yml new file mode 100644 index 0000000000..76c6cf04fc --- /dev/null +++ b/taskcluster/ci/fetch/toolchains.yml @@ -0,0 +1,635 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +binutils-2.31.1: + description: binutils 2.31.1 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.xz + sha256: 5d20086ecf5752cc7d9134246e9588fa201740d540f7eb84d795b1f7a93bca86 + size: 20467996 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-binutils/3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F.key + artifact-name: binutils-source.tar.zst + strip-components: 1 + add-prefix: binutils-source/ + +binutils-2.36.1: + description: binutils 2.36.1 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/binutils/binutils-2.36.1.tar.xz + sha256: e81d9edf373f193af428a0f256674aea62a9d74dfe93f65192d4eae030b0f3b0 + size: 22772248 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-binutils/3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F.key + artifact-name: binutils-source.tar.zst + strip-components: 1 + add-prefix: binutils-source/ + +gcc-8.5.0: + description: GCC 8.5.0 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/gcc/gcc-8.5.0/gcc-8.5.0.tar.xz + sha256: d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50 + size: 63841008 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62.key + artifact-name: gcc-source.tar.zst + strip-components: 1 + add-prefix: gcc-source/ + +gcc-9.5.0: + description: GCC 9.5.0 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.xz + sha256: 27769f64ef1d4cd5e2be8682c0c93f9887983e6cfd1a927ce5a0a2915a95cf8f + size: 72462752 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/7F74F97C103468EE5D750B583AB00996FC26A641.key + artifact-name: gcc-source.tar.zst + strip-components: 1 + add-prefix: gcc-source/ + +gcc-11.4.0: + description: GCC 11.4.0 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/gcc/gcc-11.4.0/gcc-11.4.0.tar.xz + sha256: 3f2db222b007e8a4a23cd5ba56726ef08e8b1f1eb2055ee72c1402cea73a8dd9 + size: 79837032 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62.key + artifact-name: gcc-source.tar.zst + strip-components: 1 + add-prefix: gcc-source/ + +gmp-6.1.0: + description: GMP 6.1.0 source code + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2 + sha256: 498449a994efeba527885c10405993427995d3f86b8768d8cdf8d9dd7c6b73e8 + size: 2383840 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/343C2FF0FBEE5EC2EDBEF399F3599FF828C67298.key + artifact-name: gmp-source.tar.zst + strip-components: 1 + add-prefix: gmp-source/ + +go-1.14.4: + description: Golang 1.14.4 build tools + fetch: + type: static-url + url: https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz + sha256: aed845e4185a0b2a3c3d5e1d0a35491702c55889192bb9c30e67a3de6849c067 + size: 123711003 + +isl-0.16.1: + description: ISL 0.16.1 source code + fetch: + type: static-url + url: https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 + sha256: 412538bb65c799ac98e17e8cfcdacbb257a57362acfaaff254b0fcae970126d2 + size: 1626446 + artifact-name: isl-source.tar.zst + strip-components: 1 + add-prefix: isl-source/ + +mpc-1.0.3: + description: mpc 1.0.3 source code + fetch: + type: static-url + url: http://www.multiprecision.org/downloads/mpc-1.0.3.tar.gz + sha256: 617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3 + size: 669925 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/AD17A21EF8AED8F1CC02DBD9F7D5C9BF765C61E3.key + artifact-name: mpc-source.tar.zst + strip-components: 1 + add-prefix: mpc-source/ + +mpfr-3.1.4: + description: mpfr 3.1.4 source code + fetch: + type: static-url + url: http://www.mpfr.org/mpfr-3.1.4/mpfr-3.1.4.tar.bz2 + sha256: d3103a80cdad2407ed581f3618c4bed04e0c92d1cf771a65ead662cc397f7775 + size: 1279284 + gpg-signature: + sig-url: "{url}.asc" + key-path: build/unix/build-gcc/07F3DBBECC1A39605078094D980C197698C3739D.key + artifact-name: mpfr-source.tar.zst + strip-components: 1 + add-prefix: mpfr-source/ + +nasm-2.14.02: + description: nasm 2.14.02 source code + fetch: + type: static-url + url: https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.xz + sha256: e24ade3e928f7253aa8c14aa44726d1edf3f98643f87c9d72ec1df44b26be8f5 + size: 827620 + +nasm-2.15.05: + description: nasm 2.15.05 source code + fetch: + type: static-url + url: https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz + sha256: 3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f + size: 995732 + +wix-3.14.0: + description: wix 3.14.0.2812 binary release + # WIX doesn't use a wrapping toplevel DIR, so we should really repackage it when + # Bug 1479533 and related code is ready. + fetch: + type: static-url + # This is a dev version of the toolset, upstream will purge over time... + url: http://wixtoolset.org/downloads/v3.14.0.2812/wix314-binaries.zip + sha256: 923892298f37514622c58cbbd9c2cadf2822d9bb53df8ee83aaeb05280777611 + size: 34664320 + +zlib-1.2.13: + description: zlib 1.2.13 source code + fetch: + type: static-url + url: https://zlib.net/fossils/zlib-1.2.13.tar.gz + sha256: b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30 + size: 1497445 + +nsis-3.07: + description: nsis 3.07 source code + fetch: + type: static-url + url: https://downloads.sourceforge.net/project/nsis/NSIS%203/3.07/nsis-3.07-src.tar.bz2 + sha256: 4dfad3388589985b4cd91d20e18e1458aa31e7d139b5b8adf25c3a9c1015efba + size: 1784292 + +nsis-3.07-win: + description: nsis 3.07 for windows + fetch: + type: static-url + # Temporary: pull down our own repackage of NSIS, with its plugin DLLs signed by Mozilla + # See https://bugzilla.mozilla.org/show_bug.cgi?id=1751450#c38 for more details + # bug 1771192 tracks adding a signing task downstream of the NSIS toolchain task + # to fix this more robustly. + url: https://github.com/mozilla-releng/adhoc-signing-blobs/raw/nsis/nsis-3.07-signed.zip + sha256: 5856cd49b52870caa41814d71ce30c4304d5001b80c04f4eb7028ffedd91df7e + size: 2618390 + artifact-name: nsis.tar.zst + strip-components: 1 + add-prefix: nsis/ + +upx-3.95-win: + description: upx 3.95 for windows + fetch: + type: static-url + url: https://hg.mozilla.org/mozilla-build/raw-file/3b8c537ca3c879551956ad47ca9f089583f647c5/upx-3.95-win64.zip + sha256: 5c076f87ba64d82f11513f4af0ceb07246a3540aa3c72ca3ffc2d53971fa56e3 + size: 462820 + +wine: + description: wine source code + fetch: + type: static-url + url: https://dl.winehq.org/wine/source/8.0/wine-8.0.tar.xz + sha256: 0272c20938f8721ae4510afaa8b36037457dd57661e4d664231079b9e91c792e + size: 29054044 + gpg-signature: + sig-url: "{url}.sign" + key-path: build/unix/build-gcc/DA23579A74D4AD9AF9D3F945CEFAC8EAAF17519D.key + artifact-name: wine.tar.zst + strip-components: 1 + add-prefix: wine-source/ + +cbindgen-0.24.3: + description: cbindgen source code + fetch: + type: git + repo: https://github.com/eqrion/cbindgen + revision: f43ccfc047a1a160267f32355c5e5e7154a2665a + +cctools-port: + description: cctools-port source code + fetch: + type: git + repo: https://github.com/tpoechtrager/cctools-port + revision: 30518813875aed656aa7f18b6d485feee25f8f87 + +libtapi: + description: libtapi source code + fetch: + type: git + repo: https://github.com/tpoechtrager/apple-libtapi + revision: b4f141a16c7c82f75973429c92242a8c7de3ddb1 + +ldid: + description: ldid source code + fetch: + type: git + repo: https://github.com/tpoechtrager/ldid + revision: 4bf8f4d60384a0693dbbe2084ce62a35bfeb87ab + +libdmg-hfsplus: + description: libdmg-hfsplug source code + fetch: + type: git + repo: https://github.com/mozilla/libdmg-hfsplus/ + revision: 2ee327795680101d36f9700bd0fb618362237718 + +hfsplus-tools: + description: hfstools-plus source code + fetch: + type: static-url + # Most-upstream is https://opensource.apple.com/source/diskdev_cmds/ + url: https://src.fedoraproject.org/repo/pkgs/hfsplus-tools/diskdev_cmds-540.1.linux3.tar.gz/0435afc389b919027b69616ad1b05709/diskdev_cmds-540.1.linux3.tar.gz + sha256: b01b203a97f9a3bf36a027c13ddfc59292730552e62722d690d33bd5c24f5497 + size: 411205 + +xar: + description: xar source code + fetch: + type: git + repo: https://github.com/gabrielesvelto/xar + revision: 199ff76a7463f6b6a2548b4db29cd3dd5026df69 + +bomutils: + description: bomutils (mkbom) source code + fetch: + type: git + repo: https://github.com/hogliux/bomutils + revision: 0e7dc7eefefb3a0ba2ef3a432cdc1089ac40740c + +rust-size: + description: rust-size source code + fetch: + type: git + repo: https://github.com/luser/rust-size + revision: ab659d93b1faba95307df952aefe3fbed3583669 + +gn: + description: GN source code + fetch: + type: git + repo: https://gn.googlesource.com/gn + revision: 7e05276308f3d49f8514ef02afe4f94487b1efb2 + +grcov: + description: grcov source code + fetch: + type: git + repo: https://github.com/mozilla/grcov + revision: 6ccd61964a0ab60d193394f18c0986eb37d14b9e + +sccache: + description: sccache source code + fetch: + type: git + repo: https://github.com/mozilla/sccache + # 0.4.1 release + revision: d0d1beadd2739653ed878055215c0d9b7decb3b9 + +fxc2: + description: fxc2 source code + fetch: + type: git + repo: https://github.com/mozilla/fxc2 + revision: 63ad74b7faa7033f2c1be9cc1cd0225241a1a9a5 + +mingw-w64: + description: mingw-w64 source code + fetch: + type: git + repo: https://git.code.sf.net/p/mingw-w64/mingw-w64 + revision: f9500e2d85b9400c0982518663660a127e1dc61a + +llvm-mingw: + description: llvm-mingw source code + fetch: + type: git + repo: https://github.com/mstorsjo/llvm-mingw + revision: 9f8e5cebd6dbbb7546e8917e6c59284699a48d26 + +android-ndk-rs: + description: android-ndk-rs source code + fetch: + type: git + repo: https://github.com/jamienicol/android-ndk-rs + revision: 595f4e14a78371e3ab59b12f7bd8131f2ec5b4a1 + +clang-7.0: + description: clang 7.0.0 source code + fetch: + type: git + repo: https://github.com/llvm/llvm-project + revision: 00b161b8971bc6d3cb55f13502288b8fe0dbaa42 + +clang-14: + description: clang 14.0.5 source code + fetch: + type: git + repo: https://github.com/llvm/llvm-project + revision: 4bc1d0b51c8e488d78ab69c8b19cfbcd1f7db6a4 + +clang-16: + description: clang 16.0.4 source code + fetch: + type: git + repo: https://github.com/llvm/llvm-project + revision: ae42196bc493ffe877a7e3dff8be32035dea4d07 + +clang-trunk: + description: clang main branch source code + attributes: + cached_task: false + fetch: + type: git + repo: https://github.com/llvm/llvm-project + branch: main + +# We build stable rust from source so the resulting compiler acts as a nightly +# rust compiler, allowing to use unstable features like -Zbuild-std and +# sanitizers. +rust-1.69.0: + description: Rust 1.69.0 source code + fetch: + type: git + include-dot-git: true + repo: https://github.com/rust-lang/rust/ + revision: 84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc + +wasi-sdk: + description: wasi-sdk-20 source code + fetch: + type: git + repo: https://github.com/WebAssembly/wasi-sdk + revision: 935fe1acd2fcd7ea4aed2d5ee4527482862b6344 + +ninja: + description: ninja 1.9.0 + fetch: + type: static-url + url: https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip + sha256: 2d70010633ddaacc3af4ffbd21e22fae90d158674a09e132e06424ba3ab036e9 + size: 254497 + artifact-name: ninja.tar.zst + add-prefix: ninja/bin/ + +cmake: + description: cmake 3.25.1 + fetch: + type: static-url + url: https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.zip + sha256: d93958d87cc9b91983489f0b37a268b03a3c891894d11f5437fa2a5ce94aab24 + size: 41460154 + artifact-name: cmake.tar.zst + strip-components: 1 + add-prefix: cmake/ + +dump-syms: + description: dump_syms source code + fetch: + type: git + repo: https://github.com/mozilla/dump_syms/ + revision: 7cb5f5243f87c562a44259ecb79675ea07842a8f + +rust-minidump: + description: rust-minidump 0.15.2 source code (for minidump-stackwalk) + fetch: + type: git + repo: https://github.com/rust-minidump/rust-minidump/ + revision: 0d782e53650f4059ede143e10686c6ce9947dbc4 + +fix-stacks: + description: fix-stacks source code + fetch: + type: git + repo: https://github.com/mozilla/fix-stacks/ + revision: cfa7048e437c6778b066e7ecb5ce834eb8c3efe7 + +winchecksec: + description: winchecksec source code + fetch: + type: git + repo: https://github.com/trailofbits/winchecksec/ + revision: 93ffe67dbfc757bf6f440d80b8acf88e652ed60a + +sonatype-nexus: + description: Sonatype Nexus Maven repository service + fetch: + type: static-url + url: https://download.sonatype.com/nexus/oss/nexus-2.14.18-01-bundle.tar.gz + sha256: 350af8b270bec7fda5861a15b8a5b7870fd8903d0b9a210754113d5a966ce6a6 + size: 83493896 + artifact-name: sonatype-nexus.tar.zst + strip-components: 1 + add-prefix: sonatype-nexus/ + +jdk-8-linux64: + description: Java 8 JDK + fetch: + type: static-url + url: https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz + sha256: 699981083983b60a7eeb511ad640fae3ae4b879de5a3980fe837e8ade9c34a08 + size: 103016010 + artifact-name: jdk-8.tar.zst + strip-components: 1 + add-prefix: jdk-8/ + +makecab: + description: makecab source code + fetch: + type: git + repo: https://github.com/glandium/rust-makecab/ + revision: 73a4605b97123bf7221533c671f27f234d974b02 + +nodejs-12-linux64: + description: nodejs 12 for x64 linux + fetch: + type: static-url + url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-linux-x64.tar.xz + sha256: e6d052364bfa2c17da92cf31794100cfd709ba147415ddaeed2222eec9ca1469 + size: 14584388 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-16-linux64: + description: nodejs 16 for x64 linux + fetch: + type: static-url + url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-linux-x64.tar.xz + sha256: c88b52497ab38a3ddf526e5b46a41270320409109c3f74171b241132984fd08f + size: 22492000 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-12-macosx64: + description: nodejs 12 for x64 macOS + fetch: + type: static-url + url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-x64.tar.xz + sha256: 95799e1276d65b599635f839248d3b3f7d3986873da8f01902a541b9588a6c71 + size: 13678092 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-16-macosx64: + description: nodejs 16 for x64 macOS + fetch: + type: static-url + url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-darwin-x64.tar.xz + sha256: 601d1d632b9815dbb647f5cd440a95fa651110b5b4bcaf07ed3aa7886525716b + size: 20975524 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-16-macosx64-arm64: + description: nodejs 16 for arm64 macOS + fetch: + type: static-url + url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-darwin-arm64.tar.xz + sha256: 7313c9db5f5140ece847a97f366032a10bddb6d87fa28a361ada918addcd5c73 + size: 19363804 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-12-win32: + description: nodejs 12 for x86 Windows + fetch: + type: static-url + url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-win-x86.zip + sha256: 2f7fa563c9477d5e9fddc5c22451b21b8a963c9b5004c80dd0140c3a3675a4e8 + size: 17134607 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-16-win32: + description: nodejs 16 for x86 Windows + fetch: + type: static-url + url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x86.zip + sha256: 17e2bf8ed00b3d15321743104104c8b6ef55677dfc18ee2ed44de64fbf2c4def + size: 25424808 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-12-win64: + description: nodejs 12 for x64 Windows + fetch: + type: static-url + url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-win-x64.zip + sha256: 09639bac66d4dc4dd52179968209413ad4b7360e917dcbe8834052a4b936a087 + size: 18681823 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +nodejs-16-win64: + description: nodejs 16 for x64 Windows + fetch: + type: static-url + url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x64.zip + sha256: 534ca7a24e999c81cec847a498cc43d47e2bb158f6edf639e5297f2718350e96 + size: 27072850 + artifact-name: nodejs.tar.zst + strip-components: 1 + add-prefix: node/ + +gnumake: + description: GNU make source + fetch: + type: static-url + url: https://ftp.gnu.org/gnu/make/make-4.3.tar.gz + sha256: e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19 + size: 2317073 + artifact-name: make.tar.zst + strip-components: 1 + add-prefix: make/ + +msix-packaging: + description: Microsoft msix-packaging + fetch: + type: git + repo: https://github.com/mozilla/msix-packaging + revision: 8164b7ac5a67688e18fa2497fb31ba13ce9bfb15 + +pkgconf: + description: pkgconf 1.8.0 + fetch: + type: static-url + url: https://distfiles.dereferenced.org/pkgconf/pkgconf-1.8.0.tar.xz + sha256: ef9c7e61822b7cb8356e6e9e1dca58d9556f3200d78acab35e4347e9d4c2bbaf + size: 296304 + artifact-name: pkgconf.tar.zst + strip-components: 1 + add-prefix: pkgconf/ + +afl-2.5: + description: AFL 2.5x source + fetch: + type: git + repo: https://github.com/google/AFL + revision: e75894a889fe854c02b9435186bd1e2927d6d490 + +cargo-vet: + description: cargo-vet source + fetch: + type: git + repo: https://github.com/mozilla/cargo-vet + revision: 088586cdf13a9959ce9ca4e1321203b34e467656 + +symbol-scrapers: + description: Linux distribution symbol scraper source + fetch: + type: git + repo: http://github.com/mozilla/symbol-scrapers + revision: f61d24345d27760a5c2dc8f9370368bdaa9a4e82 + +cpython-3.8.10: + description: cpython 3.8.10 source code + fetch: + type: static-url + url: https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz + sha256: b37ac74d2cbad2590e7cd0dd2b3826c29afe89a734090a87bf8c03c45066cb65 + size: 24720640 + artifact-name: cpython-source.tar.zst + strip-components: 1 + add-prefix: cpython-source/ + +cpython-3.8.10.exe: + description: cpython 3.8.10 installer + fetch: + type: static-url + url: https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe + sha256: 7628244cb53408b50639d2c1287c659f4e29d3dfdb9084b11aed5870c0c6a48a + size: 28296784 + artifact-name: python-3.8.10-amd64.exe + +cpython-3.7.15: + description: cpython 3.7.15 source code + fetch: + type: static-url + url: https://www.python.org/ftp/python/3.7.15/Python-3.7.15.tgz + sha256: cf2993798ae8430f3af3a00d96d9fdf320719f4042f039380dca79967c25e436 + size: 24033532 + artifact-name: cpython-source.tar.zst + strip-components: 1 + add-prefix: cpython-source/ diff --git a/taskcluster/ci/fetch/updatebot.yml b/taskcluster/ci/fetch/updatebot.yml new file mode 100644 index 0000000000..b757a383f8 --- /dev/null +++ b/taskcluster/ci/fetch/updatebot.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +cloud-sql-proxy-1.25.0: + description: Windows executable for Google's Cloud SQL Proxy + fetch: + type: static-url + url: https://storage.googleapis.com/cloudsql-proxy/v1.25.0/cloud_sql_proxy_x64.exe + sha256: b922a8d3924499b829bfe53a25382f9b340ea804a738e2a7d8b34957a329a2dd + size: 16195072 + artifact-name: cloud_sql_proxy.exe +php-windows-7.4.24: + description: VC15 x64 Non Thread Safe (2021-Sep-21 16:58:34) + fetch: + type: static-url + url: https://windows.php.net/downloads/releases/archives/php-7.4.24-nts-Win32-vc15-x64.zip + sha256: 1e93fb390ab2761a47d27c97225a518759731c632c0dd87436cbf25f19582436 + size: 26067094 + artifact-name: php.tar.zst + add-prefix: php-win/ +arcanist: + description: checkout of arcanist for running on Windows + fetch: + type: git + repo: https://github.com/phacility/arcanist + revision: a028291f8e5e79b6446ad67ed8b0be9c5ec8f029 +depot_tools: + description: Google's depot_tools package + fetch: + type: git + repo: https://chromium.googlesource.com/chromium/tools/depot_tools.git + revision: 7b3351443198f4e7d068999b169385b55a43679a diff --git a/taskcluster/ci/fuzzing/kind.yml b/taskcluster/ci/fuzzing/kind.yml new file mode 100644 index 0000000000..02d8d09ca6 --- /dev/null +++ b/taskcluster/ci/fuzzing/kind.yml @@ -0,0 +1,65 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.source_test:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - fetch + - toolchain + - build + +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + docker-image: {in-tree: debian11-amd64-build} + use-system-python: false + treeherder: + kind: test + tier: 3 + if-dependencies: [build] + +jobs: + simple: + platform: linux64/opt + require-build: + linux64/opt: build-linux64/opt + description: Simple Fuzzing Test + treeherder: + symbol: simple-fuzzing + fetches: + build: + - target.jsshell.zip + - target.fuzztest.tests.tar.gz + worker: + env: + LD_LIBRARY_PATH: /builds/worker/fetches + JSSHELL: ./js + run: + using: run-task + command: >- + cd $MOZ_FETCHES_DIR && + python3 tools/fuzzing/smoke/smoke.py + + python: + platform: linux64-asan-fuzzing/opt + require-build: + linux64-asan-fuzzing/opt: build-linux64-asan-fuzzing/opt + description: Python Fuzzing Smoke Tests + treeherder: + symbol: fuzzing-python + fetches: + build: + - target.tar.bz2 + run: + using: run-task + cwd: '{checkout}' + command: > + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + ./mach python-test --subsuite fuzzing diff --git a/taskcluster/ci/fxrecord/kind.yml b/taskcluster/ci/fxrecord/kind.yml new file mode 100644 index 0000000000..10bd6b3d24 --- /dev/null +++ b/taskcluster/ci/fxrecord/kind.yml @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +kind-dependencies: + - build + +only-for-build-platforms: + - win64-shippable/opt + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.fxrecord:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +job-template: + name: notify-fxrecord-failure + description: "Desktop Startup Visual Metrics" + run-on-projects: + - "mozilla-central" + worker-type: performance-hardware/gecko-t-fxrecorder + worker: + implementation: generic-worker + max-run-time: 1800 + os: windows + command: ["C:\\fxrecorder\\fxrecorder.exe --config C:\\fxrecorder\\fxrecord.toml record"] + treeherder: + symbol: fxrec(1st) + tier: 2 + kind: other + notifications: + status-types: + - "on-failed" + - "on-exception" + subject: fxrecord run failed + message: fxrecord run failed + emails: + - "barret@mozilla.com" + - "perftest-alerts@mozilla.com" diff --git a/taskcluster/ci/geckodriver-mac-notarization/kind.yml b/taskcluster/ci/geckodriver-mac-notarization/kind.yml new file mode 100644 index 0000000000..89a2971d8e --- /dev/null +++ b/taskcluster/ci/geckodriver-mac-notarization/kind.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.mac_notarization:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.geckodriver_mac_notarization:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - geckodriver-signing + +only-for-build-platforms: + - macosx64-geckodriver/opt + - macosx64-aarch64-geckodriver/opt + +job-template: + worker-type: linux-signing + treeherder: + symbol: TM(gd-n) + worker: + implementation: scriptworker-signing + max-run-time: 3600 + upstream-artifacts: + - taskType: signing + paths: + - public/build/geckodriver.tar.gz + formats: ["apple_notarization_geckodriver"] + taskId: + task-reference: diff --git a/taskcluster/ci/geckodriver-signing/kind.yml b/taskcluster/ci/geckodriver-signing/kind.yml new file mode 100644 index 0000000000..d918c2bfa1 --- /dev/null +++ b/taskcluster/ci/geckodriver-signing/kind.yml @@ -0,0 +1,16 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.geckodriver_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - toolchain + +only-for-attributes: + - geckodriver diff --git a/taskcluster/ci/generate-profile/kind.yml b/taskcluster/ci/generate-profile/kind.yml new file mode 100644 index 0000000000..0ed67bde19 --- /dev/null +++ b/taskcluster/ci/generate-profile/kind.yml @@ -0,0 +1,251 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - instrumented-build + +transforms: + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.run_pgo_profile:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + + +job-defaults: + treeherder: + symbol: Bpgo(run) + kind: build + tier: 1 + run-on-projects: ['release'] + +jobs: + linux-shippable/opt: + description: "Linux Profile Generation" + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux-profile + treeherder: + platform: linux32-shippable/opt + worker-type: b-linux-gcp + worker: + chain-of-trust: true + env: + NEED_XVFB: "true" + max-run-time: 1200 + docker-image: {in-tree: ubuntu1804-test} + artifacts: + - type: directory + name: public/build + path: /builds/worker/artifacts/ + run: + using: run-task + cwd: '{checkout}' + command: > + ./taskcluster/scripts/misc/run-profileserver.sh + run-on-projects: ['release'] + fetches: + toolchain: + - linux64-clang + - linux64-minidump-stackwalk + + linux64-shippable/opt: + description: "Linux64 Profile Generation" + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: linux64-profile + treeherder: + platform: linux64-shippable/opt + worker-type: b-linux-gcp + worker: + chain-of-trust: true + env: + NEED_XVFB: "true" + max-run-time: 1200 + docker-image: {in-tree: ubuntu1804-test} + artifacts: + - type: directory + name: public/build + path: /builds/worker/artifacts/ + run: + using: run-task + cwd: '{checkout}' + command: > + ./taskcluster/scripts/misc/run-profileserver.sh + fetches: + toolchain: + - linux64-clang + - linux64-minidump-stackwalk + + android-x86-shippable/opt: + description: "Android 5.0 x86 Profile Generation" + shipping-phase: build + shipping-product: fennec + index: + product: mobile + job-name: android-x86-profile + treeherder: + platform: android-5-0-x86/pgo + worker-type: t-linux-xlarge-pgo + worker: + chain-of-trust: true + max-run-time: 2700 + docker-image: {in-tree: ubuntu1804-test} + env: + WORKING_DIR: "/builds/worker" + MOZHARNESS_PATH: "/builds/worker/checkouts/gecko/testing/mozharness" + artifacts: + - type: directory + name: public/build + path: /builds/worker/artifacts/ + run: + using: mozharness + job-script: taskcluster/scripts/tester/test-linux.sh + script: android_emulator_pgo.py + tooltool-downloads: internal + options: [installer-path=/builds/worker/fetches/geckoview-test_runner.apk] + config: + - android/android_common.py + - android/android-x86_64-profile-generation.py + - android/android_pgo.py + fetches: + toolchain: + - linux64-clang + - linux64-minidump-stackwalk + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + + android-x86_64-shippable/opt: + description: "Android 5.0 x86_64 Profile Generation" + shipping-phase: build + shipping-product: fennec + index: + product: mobile + job-name: android-x86_64-profile + treeherder: + platform: android-5-0-x86_64/pgo + worker-type: t-linux-xlarge-pgo + worker: + chain-of-trust: true + max-run-time: 2700 + docker-image: {in-tree: ubuntu1804-test} + env: + WORKING_DIR: "/builds/worker" + MOZHARNESS_PATH: "/builds/worker/checkouts/gecko/testing/mozharness" + artifacts: + - type: directory + name: public/build + path: /builds/worker/artifacts/ + run: + using: mozharness + job-script: taskcluster/scripts/tester/test-linux.sh + script: android_emulator_pgo.py + tooltool-downloads: internal + options: [installer-path=/builds/worker/fetches/geckoview-test_runner.apk] + config: + - android/android_common.py + - android/android-x86_64-profile-generation.py + - android/android_pgo.py + fetches: + toolchain: + - linux64-clang + - linux64-minidump-stackwalk + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + + win32-shippable/opt: + description: "Win32 Profile Generation" + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: win32-profile + treeherder: + platform: windows2012-32-shippable/opt + worker-type: b-win2012 + worker: + chain-of-trust: true + max-run-time: 2400 + env: + UPLOAD_PATH: "artifacts" + artifacts: + - type: directory + name: public/build + path: build/src/artifacts/ + run: + using: run-task + sparse-profile: profile-generate + cwd: '{checkout}' + command: ./taskcluster/scripts/misc/run-profileserver.sh + fetches: + toolchain: + - win64-clang-toolchain + - win32-minidump-stackwalk + + win64-shippable/opt: + description: "Win64 Profile Generation" + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: win64-profile + treeherder: + platform: windows2012-64-shippable/opt + worker-type: b-win2012 + worker: + chain-of-trust: true + max-run-time: 2400 + env: + UPLOAD_PATH: "artifacts" + artifacts: + - type: directory + name: public/build + path: build/src/artifacts/ + run: + using: run-task + sparse-profile: profile-generate + cwd: '{checkout}' + command: ./taskcluster/scripts/misc/run-profileserver.sh + fetches: + toolchain: + - win64-clang-toolchain + - win32-minidump-stackwalk + + macosx64-shippable/opt: + description: "macosx64 Profile Generation" + shipping-phase: build + shipping-product: firefox + index: + product: firefox + job-name: macosx64-profile + treeherder: + platform: macosx1015-64-shippable/opt + worker-type: b-osx-1015 + worker: + chain-of-trust: true + max-run-time: 7200 + env: + SHELL: "/bin/bash" + artifacts: + - type: directory + name: public/build + path: artifacts/ + run: + using: run-task + sparse-profile: profile-generate + cwd: '{checkout}' + command: ./taskcluster/scripts/misc/run-profileserver-macos.sh + fetches: + toolchain: + - macosx64-clang + - macosx64-minidump-stackwalk diff --git a/taskcluster/ci/github-sync/kind.yml b/taskcluster/ci/github-sync/kind.yml new file mode 100644 index 0000000000..7c0b8136c4 --- /dev/null +++ b/taskcluster/ci/github-sync/kind.yml @@ -0,0 +1,53 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - build + +transforms: + - gecko_taskgraph.transforms.github_sync:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + run-on-projects: ['mozilla-central-only'] + worker-type: b-linux-gcp + treeherder: + platform: other/opt + tier: 2 + kind: other + worker: + max-run-time: 3600 + docker-image: {in-tree: github-sync} + run: + sparse-profile: github-sync + using: run-task + +jobs: + webrender: + description: Sync webrender to github mirror + secret: gecko/gfx-github-sync/token + run: + command: '$GECKO_PATH/tools/github-sync/sync-to-github.sh webrender gfx/wr servo/webrender @bors-servo' + when: + files-changed: + - 'gfx/wr/**' + treeherder: + symbol: GhS(wr) + + qcms: + description: Sync qcms to github mirror + secret: gecko/gfx-github-sync/token + run: + command: '$GECKO_PATH/tools/github-sync/sync-to-github.sh qcms gfx/qcms FirefoxGraphics/qcms @jrmuizel' + when: + files-changed: + - 'gfx/qcms/**' + treeherder: + symbol: GhS(qcms) diff --git a/taskcluster/ci/hazard/kind.yml b/taskcluster/ci/hazard/kind.yml new file mode 100644 index 0000000000..e2d4677702 --- /dev/null +++ b/taskcluster/ci/hazard/kind.yml @@ -0,0 +1,82 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + treeherder: + kind: build + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + docker-image: {in-tree: debian11-amd64-build} + +jobs: + linux64-shell-haz/debug: + description: "JS Shell Hazard Analysis Linux" + index: + product: firefox + job-name: shell-haz-debug + treeherder: + platform: linux64/debug + symbol: SM(H) + run: + using: hazard + command: > + cd /builds/worker/checkouts/gecko/taskcluster/scripts/builder + && ./build-haz-linux.sh --project js $HOME/workspace + when: + files-changed: + - js/public/** + - js/src/** + fetches: + toolchain: + - linux64-clang + - linux64-gcc-9 + - linux64-gcc-sixgill + - linux64-rust + - linux64-cbindgen + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + + linux64-haz/debug: + description: "Browser Hazard Analysis Linux" + index: + product: firefox + job-name: browser-haz-debug + treeherder: + platform: linux64/debug + symbol: H + run: + using: hazard + command: > + cd /builds/worker/checkouts/gecko/taskcluster/scripts/builder + && ./build-haz-linux.sh --project browser $HOME/workspace + fetches: + toolchain: + - linux64-clang + - linux64-gcc-9 + - linux64-gcc-sixgill + - linux64-rust + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-backstop: null diff --git a/taskcluster/ci/instrumented-build/kind.yml b/taskcluster/ci/instrumented-build/kind.yml new file mode 100644 index 0000000000..c4ceb2d170 --- /dev/null +++ b/taskcluster/ci/instrumented-build/kind.yml @@ -0,0 +1,319 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - fetch + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.artifact:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + shipping-phase: build + treeherder: + symbol: Bpgo(instr) + tier: 1 + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: instrumented + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + use-system-python: false + run: + using: mozharness + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + use-sccache: + by-release-level: + production: false + staging: true + fetches: + toolchain: + - linux64-sccache + run-on-projects: ['release'] + +jobs: + linux-shippable/opt: + description: "Linux Instrumented" + index: + product: firefox + job-name: instrumented-linux + shipping-product: firefox + treeherder: + platform: linux32-shippable/opt + worker-type: b-linux-gcp + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_32_builds.py + mozconfig-variant: profile-generate + tooltool-downloads: public + run-on-projects: ['release'] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + linux64-shippable/opt: + description: "Linux64 Instrumented" + index: + product: firefox + job-name: instrumented-linux64 + shipping-product: firefox + treeherder: + platform: linux64-shippable/opt + worker-type: b-linux-gcp + run: + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + mozconfig-variant: profile-generate + tooltool-downloads: public + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + macosx64-shippable/opt: + description: "MacOS X x64 Cross-compile Instrumented" + shipping-phase: build + shipping-product: firefox + treeherder: + platform: osx-shippable/opt + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + env: + PERFHERDER_EXTRA_OPTIONS: instrumented + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + mozconfig-variant: profile-generate + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-hfsplus + - linux64-libdmg + - linux64-rust-macos + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - macosx64-sdk + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + android-x86-shippable/opt: + description: "Android 5.0 x86 PGO instrumented" + index: + product: mobile + job-name: instrumented-android-x86 + shipping-product: fennec + treeherder: + platform: android-5-0-x86/pgo + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: android-build} + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + artifacts: + - name: public/build + path: /builds/worker/artifacts/ + type: directory + - name: public/build/geckoview-androidTest.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk + type: file + - name: public/build/geckoview-test_runner.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview-test_runner.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab + type: file + - name: public/build/geckoview_example.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview_example.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab + type: file + run: + config: + - builds/releng_base_android_64_builds.py + custom-build-variant-cfg: x86-profile-generate + tooltool-downloads: internal + fetches: + toolchain: + - android-gradle-dependencies + - android-ndk-linux + - android-sdk-linux + - linux64-jdk + # Workaround issues in binutils from the ndk with the compiler-rt from clang-13 + - linux64-binutils + - linux64-clang + - linux64-rust-android + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + android-x86_64-shippable/opt: + description: "Android 5.0 x86_64 PGO instrumented" + index: + product: mobile + job-name: instrumented-android-x86_64 + shipping-product: fennec + treeherder: + platform: android-5-0-x86_64/pgo + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: android-build} + env: + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + artifacts: + - name: public/build + path: /builds/worker/artifacts/ + type: directory + - name: public/build/geckoview-androidTest.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk + type: file + - name: public/build/geckoview-test_runner.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview-test_runner.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab + type: file + - name: public/build/geckoview_example.apk + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk + type: file + - name: public/build/geckoview_example.aab + path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab + type: file + run: + config: + - builds/releng_base_android_64_builds.py + custom-build-variant-cfg: x86_64-profile-generate + tooltool-downloads: internal + fetches: + toolchain: + - android-gradle-dependencies + - android-ndk-linux + - android-sdk-linux + - linux64-jdk + - linux64-clang + - linux64-rust-android + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + win32-shippable/opt: + description: "Win32 Shippable PGO Instrumented" + index: + product: firefox + job-name: instrumented-win32 + shipping-product: firefox + treeherder: + platform: windows2012-32-shippable/opt + worker-type: b-linux-gcp + run: + options: [append-env-variables-from-configs] + mozconfig-variant: profile-generate + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win32 + mozconfig_platform: win32 + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + + win64-shippable/opt: + description: "Win64 Shippable PGO Instrumented" + index: + product: firefox + job-name: instrumented-win64 + shipping-product: firefox + treeherder: + platform: windows2012-64-shippable/opt + worker-type: b-linux-gcp + run: + options: [append-env-variables-from-configs] + mozconfig-variant: profile-generate + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + stage_platform: win64 + mozconfig_platform: win64 + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win diff --git a/taskcluster/ci/l10n-bump/kind.yml b/taskcluster/ci/l10n-bump/kind.yml new file mode 100644 index 0000000000..2dd21e4068 --- /dev/null +++ b/taskcluster/ci/l10n-bump/kind.yml @@ -0,0 +1,131 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + worker-type: tree + worker: + implementation: treescript + tags: [] + bump: false + dontbuild: + by-project: + mozilla-beta: false + default: true + ignore-closed-tree: + by-project: + autoland: true + default: false + push: + by-project: + mozilla-(central|beta): true + autoland: true + default: false + source-repo: + by-release-type: + beta: https://hg.mozilla.org/releases/mozilla-beta + nightly: https://hg.mozilla.org/mozilla-central + default: https://hg.mozilla.org/integration/autoland + l10n-bump-info: + by-release-type: + # XXX whenever the `beta` config changes, make sure to make + # the corresponding change in merge-automation/kind.yml + beta: + name: Firefox l10n changesets + path: browser/locales/l10n-changesets.json + version-path: browser/config/version.txt + l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1" + ignore-config: + ja: + - macosx64 + - macosx64-devedition + ja-JP-mac: + - linux + - linux-devedition + - linux64 + - linux64-devedition + - win32 + - win32-devedition + - win64 + - win64-devedition + - win64-aarch64 + - win64-aarch64-devedition + platform-configs: + [ + { + "platforms": + [ + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", + "win64-devedition", + "win64-aarch64", + "win64-aarch64-devedition", + ], + "path": "browser/locales/shipped-locales", + }, + ] + default: + name: Firefox l10n changesets + path: browser/locales/l10n-changesets.json + l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1" + version-path: browser/config/version.txt + ignore-config: + ja: + - macosx64 + - macosx64-devedition + ja-JP-mac: + - linux + - linux-devedition + - linux64 + - linux64-devedition + - win32 + - win32-devedition + - win64 + - win64-devedition + - win64-aarch64 + - win64-aarch64-devedition + platform-configs: + [ + { + "platforms": + [ + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", + "win64-devedition", + "win64-aarch64", + "win64-aarch64-devedition", + ], + "path": "browser/locales/all-locales", + }, + ] + +jobs: + l10n-bumper: + name: l10n_bumper + description: l10n changesets bumper + run-on-projects: [] + treeherder: + kind: build + platform: linux64/opt + symbol: l10n-bump(lb) + tier: 1 diff --git a/taskcluster/ci/l10n-cross-channel/kind.yml b/taskcluster/ci/l10n-cross-channel/kind.yml new file mode 100644 index 0000000000..da30306599 --- /dev/null +++ b/taskcluster/ci/l10n-cross-channel/kind.yml @@ -0,0 +1,41 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.cross_channel:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + quarantine: + description: Push strings from all shipping trains to the quarantine strings repo + run-on-projects: [] + worker-type: b-linux-gcp + ssh-key-secret: + by-level: + "3": project/releng/gecko/build/level-3/l10n-cross-channel-quarantine-ssh + default: null + worker: + docker-image: {in-tree: push-to-try} + max-run-time: 3600 + artifacts: + - type: directory + name: public/build + path: /builds/worker/artifacts + env: + TASK_ID: {"task-reference": ""} + TASKCLUSTER_PROXY_URL: http://taskcluster + treeherder: + platform: firefox-release/opt + tier: 1 + kind: build + symbol: Rel(l10n-cross-channel) + run: + using: mach + actions: + by-level: + "3": ["prep", "create", "push", "clean"] + default: ["prep", "create", "clean"] diff --git a/taskcluster/ci/l10n/kind.yml b/taskcluster/ci/l10n/kind.yml new file mode 100644 index 0000000000..f2d7395728 --- /dev/null +++ b/taskcluster/ci/l10n/kind.yml @@ -0,0 +1,145 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: platform + +transforms: + - gecko_taskgraph.transforms.l10n:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - build-signing + - fetch + - repackage + - toolchain + +primary-dependency: build + +only-for-build-platforms: + - linux64-shippable/opt + - linux-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + +job-template: + description: Localization + locales-file: browser/locales/l10n-onchange-changesets.json + ignore-locales: + by-build-platform: + # OSX has a special locale for japanese + macosx64.*: [ja] + default: [ja-JP-mac] + run-time: + by-build-platform: + default: 900 + win.*: 1800 + secrets: false + fetches: + toolchain: + by-build-platform: + default: [] + macosx64.*: + - linux64-libdmg + - linux64-hfsplus + win.*: + - linux64-wine + - nsis + fetch: + by-build-platform: + default: [] + win.*: + - upx-3.95-win + tooltool: + by-build-platform: + default: internal + linux.*: public + index: + type: l10n + product: firefox + job-name: + by-build-platform: + linux(?!64).*: linux-opt + linux64.*: linux64-opt + macosx64.*: macosx64-opt + win32.*: win32-opt + win64.*: win64-opt + run-on-projects: + by-build-platform: + linux-shippable.*: ['release'] # Do not run on autoland - Bug 1599197 + default: ['all'] + worker-type: b-linux-gcp + treeherder: + symbol: L10n + tier: 1 + platform: + by-build-platform: + linux64: linux64/opt + linux64-shippable: linux64-shippable/opt + linux: linux32/opt + linux-shippable: linux32-shippable/opt + macosx64: osx-cross/opt + macosx64-shippable: osx-shippable/opt + win32: windows2012-32/opt + win32-shippable: windows2012-32-shippable/opt + win64: windows2012-64/opt + win64-shippable: windows2012-64-shippable/opt + env: + by-build-platform: + linux.*: # linux64 and 32 get same treatment here + EN_US_PACKAGE_NAME: target.tar.bz2 + EN_US_BINARY_URL: + artifact-reference: + macosx64.*: + EN_US_PACKAGE_NAME: target.dmg + EN_US_BINARY_URL: + artifact-reference: + win.*: + EN_US_PACKAGE_NAME: target.zip + EN_US_BINARY_URL: + artifact-reference: + mozharness: + config: + by-build-platform: + linux(?!64).*: + - single_locale/firefox.py + - single_locale/linux32.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + linux64.*: + - single_locale/firefox.py + - single_locale/linux64.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + macosx64.*: + - single_locale/firefox.py + - single_locale/macosx64.py + - single_locale/tc_common.py + - single_locale/tc_macosx64.py + win32.*: + - single_locale/firefox.py + - single_locale/win32.py + - single_locale/tc_common.py + - single_locale/tc_win32.py + win64.*: + - single_locale/firefox.py + - single_locale/win64.py + - single_locale/tc_common.py + - single_locale/tc_win64.py + # no default, so we fail on new entries + actions: ['clone-locales', 'list-locales', 'setup', 'repack', 'summary'] + script: mozharness/scripts/desktop_l10n.py + when: + files-changed: + - browser/locales/l10n-onchange-changesets.json + - testing/mozharness/configs/single_locale/** + - testing/mozharness/mozharness/mozilla/l10n/locales.py + - testing/mozharness/scripts/desktop_l10n.py + - third_party/python/compare-locales/** + - toolkit/locales/** + - toolkit/mozapps/installer/** diff --git a/taskcluster/ci/mar-signing-autograph-stage/kind.yml b/taskcluster/ci/mar-signing-autograph-stage/kind.yml new file mode 100644 index 0000000000..d927485a99 --- /dev/null +++ b/taskcluster/ci/mar-signing-autograph-stage/kind.yml @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.mar_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage + +only-for-build-platforms: + - linux64-shippable/opt + +job-template: + shipping-phase: null + treeherder-group: ms-stage + treeherder: + tier: 3 + description-suffix: 'autograph-stage mar signing test' + required_signoffs: + - mar-signing + run-on-projects: [] + shippable: false + attributes: + retrigger: true + worker-type: linux-depsigning diff --git a/taskcluster/ci/mar-signing-l10n/kind.yml b/taskcluster/ci/mar-signing-l10n/kind.yml new file mode 100644 index 0000000000..e2ae94d77b --- /dev/null +++ b/taskcluster/ci/mar-signing-l10n/kind.yml @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.mar_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-l10n + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - linux64-asan-reporter-shippable/opt + - linux-devedition/opt + - linux64-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + +job-template: + shipping-phase: promote + treeherder-group: ms + description-suffix: 'mar signing' + required_signoffs: + - mar-signing diff --git a/taskcluster/ci/mar-signing/kind.yml b/taskcluster/ci/mar-signing/kind.yml new file mode 100644 index 0000000000..1459b3c00c --- /dev/null +++ b/taskcluster/ci/mar-signing/kind.yml @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.mar_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - linux-devedition/opt + - linux64-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + - linux64-asan-reporter-shippable/opt + - win64-asan-reporter-shippable/opt + +job-template: + shipping-phase: promote + treeherder-group: ms + description-suffix: 'mar signing' + required_signoffs: + - mar-signing diff --git a/taskcluster/ci/maybe-release/kind.yml b/taskcluster/ci/maybe-release/kind.yml new file mode 100644 index 0000000000..4d069408d3 --- /dev/null +++ b/taskcluster/ci/maybe-release/kind.yml @@ -0,0 +1,48 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.maybe_release:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: Check recent releases and trigger a new ship-it phase if worthwhile. + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-shipit + staging: scriptworker-k8s/gecko-1-shipit + worker: + implementation: shipit-maybe-release + scopes: + by-release-level: + production: + - project:releng:ship-it:server:production + - project:releng:ship-it:action:create-new-release + staging: + - project:releng:ship-it:server:staging + - project:releng:ship-it:action:create-new-release + run-on-projects: [] + treeherder: + symbol: Rel(maybe-release) + tier: 1 + kind: build + +jobs: + firefox: + name: maybe-release-firefox + shipping-product: firefox + worker: + phase: ship_firefox + treeherder: + platform: firefox-release/opt + + devedition: + name: maybe-release-devedition + shipping-product: devedition + worker: + phase: ship_devedition + treeherder: + platform: devedition-release/opt diff --git a/taskcluster/ci/merge-automation/kind.yml b/taskcluster/ci/merge-automation/kind.yml new file mode 100644 index 0000000000..8e2b34147e --- /dev/null +++ b/taskcluster/ci/merge-automation/kind.yml @@ -0,0 +1,72 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.merge_automation:transforms + - gecko_taskgraph.transforms.task:transforms + + +jobs: + merge-automation: + name: merge-automation + label: merge-automation + treeherder: + symbol: Rel(merge-automation) + tier: 1 + kind: build + platform: firefox-release/opt + description: Merge repositories for release management. + worker-type: tree + scopes: [] + worker: + implementation: treescript + tags: [] + bump: false + dontbuild: false + ignore-closed-tree: true + push: false + l10n-bump-info: + by-behavior: + central-to-beta: + name: Firefox l10n changesets + path: browser/locales/l10n-changesets.json + version-path: browser/config/version.txt + l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1" + ignore-config: + ja: + - macosx64 + - macosx64-devedition + ja-JP-mac: + - linux + - linux-devedition + - linux64 + - linux64-devedition + - win32 + - win32-devedition + - win64 + - win64-devedition + - win64-aarch64 + - win64-aarch64-devedition + platform-configs: [{ + "platforms": [ + "linux", + "linux-devedition", + "linux64", + "linux64-devedition", + "macosx64", + "macosx64-devedition", + "win32", + "win32-devedition", + "win64", + "win64-devedition", + "win64-aarch64", + "win64-aarch64-devedition", + ], + "path": "browser/locales/shipped-locales", + }] + default: null + run-on-projects: [] + expiration-policy: long diff --git a/taskcluster/ci/openh264-plugin/kind.yml b/taskcluster/ci/openh264-plugin/kind.yml new file mode 100644 index 0000000000..3c732ac679 --- /dev/null +++ b/taskcluster/ci/openh264-plugin/kind.yml @@ -0,0 +1,225 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.openh264:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: "Build OpenH264 plugin" + treeherder: + kind: build + symbol: h264 + tier: 2 + run-on-projects: [] + repo: 'https://github.com/cisco/openh264.git' + revision: '31c4d2e4a037526fd30d4e5c39f60885986cf865' + worker: + chain-of-trust: true + +jobs: + linux32/opt: + attributes: + build_platform: linux32 + build_type: opt + treeherder: + platform: linux32/opt + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: /builds/worker/workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/linux32.py + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-dump_syms + - linux64-nasm + - sysroot-i686-linux-gnu + linux64/opt: + attributes: + build_platform: linux64 + build_type: opt + treeherder: + platform: linux64/opt + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: /builds/worker/workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/linux64.py + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-dump_syms + - linux64-nasm + - sysroot-x86_64-linux-gnu + linux64-aarch64/opt: + attributes: + build_platform: linux64-aarch64 + build_type: opt + treeherder: + platform: linux64-aarch64/opt + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: /builds/worker/workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/linux64-aarch64.py + fetches: + toolchain: + - linux64-binutils + - linux64-clang + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + - sysroot-aarch64-linux-gnu + macosx64/opt: + attributes: + build_platform: macosx64 + build_type: opt + treeherder: + platform: macosx64/opt + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: /builds/worker/workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/macosx64.py + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-dump_syms + - linux64-nasm + - macosx64-sdk-13.3 + macosx64-aarch64/opt: + attributes: + build_platform: macosx64-aarch64 + build_type: opt + treeherder: + platform: macosx64-aarch64/opt + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: /builds/worker/workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/macosx64-aarch64.py + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-dump_syms + - macosx64-sdk-13.3 + win32/opt: + attributes: + build_platform: win32 + build_type: opt + treeherder: + platform: win32/opt + worker-type: b-win2012 + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/win32.py + tooltool-downloads: internal + fetches: + toolchain: + - win64-clang + - win64-dump_syms + - win64-mozmake + - win64-nasm + win64/opt: + attributes: + build_platform: win64 + build_type: opt + treeherder: + platform: win64/opt + worker-type: b-win2012 + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/win64.py + tooltool-downloads: internal + fetches: + toolchain: + - win64-clang + - win64-dump_syms + - win64-mozmake + - win64-nasm + win64-aarch64/opt: + attributes: + build_platform: win64-aarch64 + build_type: opt + treeherder: + platform: win64-aarch64/opt + worker-type: b-win2012 + worker: + max-run-time: 1800 + artifacts: + - name: private/openh264 + path: workspace/openh264/artifacts + type: directory + run: + using: mozharness + script: mozharness/scripts/openh264_build.py + config: + - openh264/win64-aarch64.py + tooltool-downloads: internal + fetches: + toolchain: + - win64-clang + - win64-dump_syms + - win64-mozmake diff --git a/taskcluster/ci/openh264-signing/kind.yml b/taskcluster/ci/openh264-signing/kind.yml new file mode 100644 index 0000000000..512684d45b --- /dev/null +++ b/taskcluster/ci/openh264-signing/kind.yml @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.openh264_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - openh264-plugin diff --git a/taskcluster/ci/packages/debian.yml b/taskcluster/ci/packages/debian.yml new file mode 100644 index 0000000000..93136c5ec9 --- /dev/null +++ b/taskcluster/ci/packages/debian.yml @@ -0,0 +1,136 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + run: + using: debian-package + dist: jessie + +deb11-mercurial: + description: "Modern Mercurial for Debian bullseye" + treeherder: + symbol: Deb11(hg) + run: + using: debian-package + dist: bullseye + tarball: + url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz + sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64 + pre-build-command: >- + cp -r contrib/packaging/debian debian && + sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.deb11moz1/" \ + -e "s/__DATE__/$(date --rfc-2822)/" \ + -e "s/__CODENAME__/bullseye/" debian/changelog + +deb11-cmake: + description: "cmake" + treeherder: + symbol: Deb11(cmake) + run: + dist: bullseye + dsc: + url: http://snapshot.debian.org/archive/debian/20221201T090253Z/pool/main/c/cmake/cmake_3.25.1-1.dsc + sha256: 508b262eee8f18c8924bb4e1b89596fb208efa2fe6bde270d16552d1dc3a0d65 + +deb11-valgrind: + description: "Valgrind for Debian bullseye" + treeherder: + symbol: Deb11(valgrind) + run: + dist: bullseye + dsc: + url: http://snapshot.debian.org/archive/debian/20230111T213757Z/pool/main/v/valgrind/valgrind_3.20.0-1.dsc + sha256: e32d373bf2d4f0bd0e9673c711d0e4a8eed43c22ca81714ae3e2d85b2f315493 + +deb11-python-zstandard: + description: "python-zstandard for Debian bullseye" + treeherder: + symbol: Deb11(python-zstandard) + run: + using: debian-package + dist: bullseye + tarball: + url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz + sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863 + pre-build-command: debchange -v 0.19.0-1.deb11moz --distribution bullseye "Mozilla backport for buster" + name: python-zstandard + +deb8-gcc-8: + description: "gcc 8 for Debian jessie" + treeherder: + symbol: Deb8(gcc-8) + worker: + max-run-time: 3600 + env: + DEB_BUILD_OPTIONS: nocheck + WITH_BOOTSTRAP: 'off' + WITHOUT_LANG: ada brig cilkrts fortran d go objc obj-c++ asan lsan tsan ubsan jit nvptx + run: + using: debian-package + dist: jessie + dsc: + url: http://snapshot.debian.org/archive/debian/20210202T150504Z/pool/main/g/gcc-8/gcc-8_8.4.0-7.dsc + sha256: b93f13bc67f5a8f16e837fbb543d00d3475d5c95777a1b0b5a448fa2310a98c5 + # autoconf2.64 and quilt necessary to run the `debian/rules control` command to + # generate an updated debian/control. + # uncommenting `with_common_libs` makes the packaging create the libstdc++6 package. + # `libstdcxx_abi = new` overrides the default that disables the new ABI on jessie + # `BINUTILSBDV=2.25-3~` and `ISL_BUILD_DEP=libisl-dev,` override wrong versions + # in build dependencies for jessie. + # `OFFLOAD_BUILD_DEP=` overrides the dependency on nvptx, which is not available + # in jessie. + # `NT=` overrides the use of `:native` which is not supported by dpkg on jessie. + pre-build-command: >- + apt install autoconf2.64 quilt && + sed -i 's/#with_common_libs/with_common_libs/' debian/rules.defs && + echo libstdcxx_abi = new >> debian/rules.defs && + echo BINUTILSBDV=2.25-3~ >> debian/rules.conf && + echo ISL_BUILD_DEP=libisl-dev, >> debian/rules.conf && + echo OFFLOAD_BUILD_DEP= >> debian/rules.conf && + debian/rules control NT= + +deb8-32-gcc-8: + description: "gcc 8 for Debian jessie" + treeherder: + symbol: Deb8-32(gcc-8) + worker: + max-run-time: 3600 + env: + DEB_BUILD_OPTIONS: nocheck + WITH_BOOTSTRAP: 'off' + WITHOUT_LANG: ada biarch brig cilkrts fortran d go objc obj-c++ asan lsan tsan ubsan jit nvptx + run: + using: debian-package + dist: jessie + dsc: + url: http://snapshot.debian.org/archive/debian/20210202T150504Z/pool/main/g/gcc-8/gcc-8_8.4.0-7.dsc + sha256: b93f13bc67f5a8f16e837fbb543d00d3475d5c95777a1b0b5a448fa2310a98c5 + pre-build-command: >- + apt install autoconf2.64 quilt && + sed -i 's/#with_common_libs/with_common_libs/' debian/rules.defs && + echo libstdcxx_abi = new >> debian/rules.defs && + echo GCC_MULTILIB_BUILD_DEP='$(DPKG_BUILD_DEP)' >> debian/rules.conf && + echo BINUTILSBDV=2.25-3~ >> debian/rules.conf && + echo ISL_BUILD_DEP=libisl-dev, >> debian/rules.conf && + echo OFFLOAD_BUILD_DEP= >> debian/rules.conf && + debian/rules control NT= + arch: i386 + +deb8-gtk3: + description: "X11-only gtk+3 for Debian jessie" + treeherder: + symbol: Deb8(gtk) + worker: + max-run-time: 3600 + env: + DEB_BUILD_OPTIONS: nocheck + run: + dist: jessie + dsc: + url: http://snapshot.debian.org/archive/debian/20150819T212910Z/pool/main/g/gtk+3.0/gtk+3.0_3.14.5-1+deb8u1.dsc + sha256: b1808b03317b171c813e31185a4520df4dbde54580842a72a4c44540cd6bde17 + pre-build-command: >- + sed -i /linux-any/d debian/control* debian/libgtk-3-0.symbols && + sed -i s/--enable-wayland-backend/--disable-wayland-backend/ debian/rules && + debchange -v 3.14.5-1.deb8moz --distribution jessie-backports "Mozilla rebuild without wayland support" diff --git a/taskcluster/ci/packages/kind.yml b/taskcluster/ci/packages/kind.yml new file mode 100644 index 0000000000..5b21346de8 --- /dev/null +++ b/taskcluster/ci/packages/kind.yml @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.try_job:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.cached_tasks:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + treeherder: + kind: build + platform: packages/opt + tier: 1 + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run-on-projects: [] + +jobs-from: + - debian.yml + - ubuntu.yml diff --git a/taskcluster/ci/packages/ubuntu.yml b/taskcluster/ci/packages/ubuntu.yml new file mode 100644 index 0000000000..60f8eef25f --- /dev/null +++ b/taskcluster/ci/packages/ubuntu.yml @@ -0,0 +1,100 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + run: + using: ubuntu-package + dist: bionic + +ub18-libc6: + description: "Older version of glibc in Ubuntu 18.04 that doesn't cause bug 1678451" + treeherder: + symbol: Ub18(libc6) + run: + dsc: + url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/glibc/2.27-3ubuntu1.2/glibc_2.27-3ubuntu1.2.dsc + sha256: 2ac325cce2251c710dd041f4725925cdbccefba6f6f0f0d95a2a5a09e2050c2e + patch: ubuntu-glibc.diff + +ub18-32-libc6: + description: "Older version of glibc in Ubuntu 18.04 that doesn't cause bug 1678451" + treeherder: + symbol: Ub18(libc6-32) + run: + dsc: + url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/glibc/2.27-3ubuntu1.2/glibc_2.27-3ubuntu1.2.dsc + sha256: 2ac325cce2251c710dd041f4725925cdbccefba6f6f0f0d95a2a5a09e2050c2e + arch: i386 + patch: ubuntu-glibc.diff + +ub18-python-psutil: + description: "python-psutil for Ubuntu bionic" + treeherder: + symbol: Ub18(python-psutil) + run: + dsc: + url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-psutil/5.4.2-1ubuntu0.1/python-psutil_5.4.2-1ubuntu0.1.dsc + sha256: a0ca4560d25fcfe5b7407d2cb21318f0635f2c3559898efce1679eef35b61f05 + name: python-psutil + pre-build-command: >- + apt-get install python3.7-dev python3.7-dbg && + export DEBPYTHON3_SUPPORTED="3.7" + +ub18-python-zstandard: + description: "python-zstandard for Ubuntu bionic" + treeherder: + symbol: Ub18(python-zstandard) + run: + tarball: + url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz + sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863 + name: python-zstandard + pre-build-command: >- + apt-get install python3.7-dev && + export DEBPYTHON3_SUPPORTED="3.7" && + debchange -v 0.19.0-1.ub18moz --distribution bionic "Mozilla backport for bionic" + +ub18-mercurial: + description: "Modern Mercurial for Ubuntu bionic" + treeherder: + symbol: Ub18(hg) + run: + tarball: + url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz + sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64 + pre-build-command: >- + apt-get install python3.7-dev && + export DEB_HG_PYTHON_VERSIONS="3.7" && + export DEBPYTHON3_SUPPORTED="3.7" && + cp -r contrib/packaging/debian debian && + sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.ub18moz1/" \ + -e "s/__DATE__/$(date --rfc-2822)/" \ + -e "s/__CODENAME__/bionic/" debian/changelog + +ub20-python-zstandard: + description: "python-zstandard for Ubuntu focal" + treeherder: + symbol: Ub20(python-zstandard) + run: + tarball: + url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz + sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863 + name: python-zstandard + dist: focal + pre-build-command: debchange -v 0.19.0-1.ub20moz --distribution bionic "Mozilla backport for focal" + +ub20-mercurial: + description: "Modern Mercurial for Ubuntu focal" + treeherder: + symbol: Ub20(hg) + run: + tarball: + url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz + sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64 + dist: focal + pre-build-command: >- + cp -r contrib/packaging/debian debian && + sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.ub20moz1/" \ + -e "s/__DATE__/$(date --rfc-2822)/" \ + -e "s/__CODENAME__/focal/" debian/changelog diff --git a/taskcluster/ci/partials-signing/kind.yml b/taskcluster/ci/partials-signing/kind.yml new file mode 100644 index 0000000000..c01adaedd0 --- /dev/null +++ b/taskcluster/ci/partials-signing/kind.yml @@ -0,0 +1,20 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.mar_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - partials + +job-template: + shipping-phase: promote + treeherder-group: ps + description-suffix: 'partial signing' + required_signoffs: + - mar-signing diff --git a/taskcluster/ci/partials/kind.yml b/taskcluster/ci/partials/kind.yml new file mode 100644 index 0000000000..f287624f2e --- /dev/null +++ b/taskcluster/ci/partials/kind.yml @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.partials:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage + - repackage-l10n + +only-for-attributes: + - nightly + - shippable + +only-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + - win32-shippable/opt + - win32-devedition/opt + - win64-shippable/opt + - win64-devedition/opt + - win64-aarch64-shippable/opt + - win64-aarch64-devedition/opt + - linux-shippable/opt + - linux-devedition/opt + - linux64-shippable/opt + - linux64-devedition/opt + +job-template: + shipping-phase: promote diff --git a/taskcluster/ci/perftest/android.yml b/taskcluster/ci/perftest/android.yml new file mode 100644 index 0000000000..c5b4bfe1d8 --- /dev/null +++ b/taskcluster/ci/perftest/android.yml @@ -0,0 +1,543 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- + +job-defaults: + fetches: + toolchain: + - linux64-node + - linux64-geckodriver + run: + sparse-profile: perftest + checkout: true + command: >- + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --on-try + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +hw-a51: + worker-type: t-bitbar-gw-perf-a51 + description: Run ./mach perftest on a Samsung Galaxy a51 + treeherder: + symbol: perftest-a51 + platform: android-hw-a51-11-0-arm7-shippable/opt + +# TODO: is this right? +hw-a51-aarch64: + worker-type: t-bitbar-gw-perf-a51 + description: Run ./mach perftest on a Samsung Galaxy a51 + treeherder: + symbol: perftest-a51 + platform: android-hw-a51-11-0-aarch64-shippable/opt + +hw-a51-view-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run VIEW perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(view-fenix) + platform: android-hw-a51-11-0-arm7-shippable/opt + attributes: + cron: true + batch: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity org.mozilla.fenix.IntentReceiverActivity + --android-clear-logcat + --android-capture-logcat logcat + --perfherder-metrics name:processLaunchToNavStart,shouldAlert:True + --android-install-apk fenix_nightly_armeabi_v7a + --hooks testing/performance/hooks_android_view.py + --perfherder + --perfherder-app fenix + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --browsertime-iterations 25 + --output $MOZ_FETCHES_DIR/../artifacts + testing/performance/perftest_android_view.js + +hw-a51-startup-fenix-cold-main-first-frame: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(startup-fenix-cmff) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_main_first_frame + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=fenix + --AndroidStartUp-release-channel=nightly + +hw-a51-startup-fenix-cold-view-nav-start: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(startup-fenix-cvns) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_view_nav_start + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=fenix + --AndroidStartUp-release-channel=nightly + +hw-a51-startup-focus-cold-main-first-frame: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Focus on a Samsung A51 + treeherder: + symbol: perftest(startup-focus-cmff) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_main_first_frame + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=focus + --AndroidStartUp-release-channel=nightly + +hw-a51-startup-focus-cold-view-nav-start: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Focus on a Samsung A51 + treeherder: + symbol: perftest(startup-focus-cvns) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_view_nav_start + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=focus + --AndroidStartUp-release-channel=nightly + +hw-a51-startup-geckoview-cold-main-first-frame: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Geckoview on a Samsung A51 + treeherder: + symbol: perftest(startup-geckoview-cmff) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_main_first_frame + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=geckoview_example + --AndroidStartUp-release-channel=nightly + +hw-a51-startup-geckoview-cold-view-nav-start: + worker-type: t-bitbar-gw-perf-a51 + description: Run android startup perftest on Geckoview_example on a Samsung A51 + treeherder: + symbol: perftest(startup-geckoview-cvns) + tier: 2 + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor=mobile-browser + --AndroidStartUp + testing/performance/perftest_android_startup.js + --browsertime-cycles=0 + --AndroidStartUp-test-name=cold_view_nav_start + --perfherder + --hooks + testing/performance/hooks_android_startup.py + --AndroidStartUp-product=geckoview_example + --AndroidStartUp-release-channel=nightly + +hw-a51-aarch64-view-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run VIEW perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(view-fenix) + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + batch: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity org.mozilla.fenix.IntentReceiverActivity + --android-clear-logcat + --android-capture-logcat logcat + --perfherder-metrics name:processLaunchToNavStart,shouldAlert:True + --android-install-apk fenix_nightly_arm64_v8a + --hooks testing/performance/hooks_android_view.py + --perfherder + --perfherder-app fenix + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --browsertime-iterations 25 + --output $MOZ_FETCHES_DIR/../artifacts + testing/performance/perftest_android_view.js + +hw-a51-view-gv: + worker-type: t-bitbar-gw-perf-a51 + description: Run VIEW perftest on GV on a Samsung A51 + treeherder: + symbol: perftest(view-gv) + platform: android-hw-a51-11-0-arm7-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.geckoview_example + --android-activity org.mozilla.geckoview_example.GeckoViewActivity + --android-clear-logcat + --android-capture-logcat logcat + --perfherder-metrics processLaunchToNavStart + --android-install-apk gve_nightly_api16 + --hooks testing/performance/hooks_android_view.py + --perfherder + --perfherder-app geckoview + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --browsertime-iterations 14 + --output $MOZ_FETCHES_DIR/../artifacts + testing/performance/perftest_android_view.js + +hw-a51-aarch64-view-gv: + worker-type: t-bitbar-gw-perf-a51 + description: Run VIEW perftest on GV on a Samsung A51 + treeherder: + symbol: perftest(view-gv) + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.geckoview_example + --android-activity org.mozilla.geckoview_example.GeckoViewActivity + --android-clear-logcat + --android-capture-logcat logcat + --perfherder-metrics processLaunchToNavStart + --android-install-apk gve_nightly_aarch64 + --hooks testing/performance/hooks_android_view.py + --perfherder + --perfherder-app geckoview + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --browsertime-iterations 14 + --output $MOZ_FETCHES_DIR/../artifacts + testing/performance/perftest_android_view.js + +hw-a51-main-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run main (home activity) perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(main-fenix) + platform: android-hw-a51-11-0-arm7-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity .App + --android-clear-logcat + --android-capture-logcat logcat + --androidlog + --androidlog-first-timestamp ".*Start proc.*org\.mozilla\..*\..*App.*" + --androidlog-second-timestamp ".*Fully drawn.*org\.mozilla\..*" + --androidlog-subtest-name "MAIN" + --android-install-apk fenix_nightly_armeabi_v7a + --hooks testing/performance/hooks_android_main.py + --perfherder + --perfherder-app fenix + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --browsertime-iterations 14 + testing/performance/perftest_android_main.js + +hw-a51-aarch64-main-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run main (home activity) perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(main-fenix) + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity .App + --android-clear-logcat + --android-capture-logcat logcat + --androidlog + --androidlog-first-timestamp ".*Start proc.*org\.mozilla\..*\..*App.*" + --androidlog-second-timestamp ".*Fully drawn.*org\.mozilla\..*" + --androidlog-subtest-name "MAIN" + --android-install-apk fenix_nightly_arm64_v8a + --hooks testing/performance/hooks_android_main.py + --perfherder + --perfherder-app fenix + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --browsertime-iterations 14 + testing/performance/perftest_android_main.js + +hw-a51-perfstats-gv: + worker-type: t-bitbar-gw-perf-a51 + description: Run PerfStats perftest on GeckoView on a Samsung A51 + treeherder: + symbol: perftest(perfstats-gv) + platform: android-hw-a51-11-0-arm7-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.geckoview_example + --android-activity org.mozilla.geckoview_example.GeckoViewActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk gve_nightly_api16 + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-app geckoview + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +hw-a51-aarch64-perfstats-gv: + worker-type: t-bitbar-gw-perf-a51 + description: Run PerfStats perftest on GeckoView on a Samsung A51 + treeherder: + symbol: perftest(perfstats-gv) + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.geckoview_example + --android-activity org.mozilla.geckoview_example.GeckoViewActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk gve_nightly_aarch64 + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-app geckoview + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +hw-g5-perfstats-fenix: + worker-type: t-bitbar-gw-perf-g5 + description: Run PerfStats perftest on Fenix on a G5 + treeherder: + symbol: perftest(perfstats-fenix) + platform: android-hw-g5-7-0-arm7-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity org.mozilla.fenix.IntentReceiverActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk fenix_nightly_armeabi_v7a + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-app fenix + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +hw-a51-perfstats-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run PerfStats perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(perfstats-fenix) + platform: android-hw-a51-11-0-arm7-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity org.mozilla.fenix.IntentReceiverActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk fenix_nightly_armeabi_v7a + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-app fenix + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +hw-a51-aarch64-perfstats-fenix: + worker-type: t-bitbar-gw-perf-a51 + description: Run PerfStats perftest on Fenix on a Samsung A51 + treeherder: + symbol: perftest(perfstats-fenix) + platform: android-hw-a51-11-0-aarch64-shippable/opt + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.fenix + --android-activity org.mozilla.fenix.IntentReceiverActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk fenix_nightly_arm64_v8a + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-app fenix + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +hw-a51-record-websites: + worker-type: t-bitbar-gw-perf-a51 + description: Run perftest to record mobile websites + treeherder: + symbol: perftest(rec) + platform: android-hw-a51-11-0-aarch64-shippable/opt + require-build: + android-hw-a51-11-0-aarch64-shippable/opt: build-android-aarch64-shippable/opt + attributes: + cron: false + run-on-projects: [] + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + - secrets:get:project/perftest/gecko/level-{level}/perftest-login + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $GECKO_PATH && + python3 python/mozperftest/mozperftest/runner.py + --flavor mobile-browser + --android + --android-app-name org.mozilla.geckoview_example + --android-activity org.mozilla.geckoview_example.GeckoViewActivity + --android-clear-logcat + --android-capture-logcat logcat + --android-install-apk gve_nightly_aarch64 + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --proxy + --output $MOZ_FETCHES_DIR/../artifacts + --hooks testing/performance/hooks_recording.py + testing/performance/perftest_record.js diff --git a/taskcluster/ci/perftest/kind.yml b/taskcluster/ci/perftest/kind.yml new file mode 100644 index 0000000000..0a0f8a4489 --- /dev/null +++ b/taskcluster/ci/perftest/kind.yml @@ -0,0 +1,43 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - build + +transforms: + - gecko_taskgraph.transforms.perftest:transforms + - gecko_taskgraph.transforms.source_test:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs-from: + - android.yml + - linux.yml + - macosx.yml + - windows.yml + +job-defaults: + attributes: + retrigger: true + run-on-projects: [] + treeherder: + kind: other + tier: 3 + worker: + taskcluster-proxy: true + max-run-time: 10800 + env: + USE_ARTIFACT: '1' + HOSTUTILS_MANIFEST_PATH: "testing/config/tooltool-manifests/linux64/hostutils.manifest" + artifacts: + - type: directory + name: public/build + path: artifacts + run: + run-as-root: true + using: run-task + checkout: false diff --git a/taskcluster/ci/perftest/linux.yml b/taskcluster/ci/perftest/linux.yml new file mode 100644 index 0000000000..a74cc4b34c --- /dev/null +++ b/taskcluster/ci/perftest/linux.yml @@ -0,0 +1,349 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: t-linux-talos-1804 + fetches: + toolchain: + - linux64-node + - linux64-geckodriver + build: + - artifact: target.mozinfo.json + - artifact: target.common.tests.tar.gz + - artifact: target.perftests.tests.tar.gz + - artifact: target.xpcshell.tests.tar.gz + - artifact: target.tar.bz2 + platform: linux1804-64-shippable/opt + require-build: + linux1804-64-shippable/opt: build-linux64-shippable/opt + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + +try-xpcshell: + description: Run ./mach perftest on Linux + treeherder: + symbol: perftest(linux-xpcshell) + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + --on-try + --flavor desktop-browser + --output $MOZ_FETCHES_DIR/../artifacts + --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell + --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json + --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node + --xpcshell-xre-path ${MOZ_FETCHES_DIR}/firefox + +webpagetest-firefox: + description: Run webpagetest performance pageload tests on Firefox against Alexa top 50 websites + treeherder: + symbol: perftest(linux-webpagetest) + tier: 2 + attributes: + cron: true + scopes: + - secrets:get:project/perftest/gecko/level-{level}/perftest-login + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + testing/performance/perftest_WPT_firefox_init_file.js + --flavor=webpagetest + --webpagetest + --perfherder + --perfherder-metrics median + --perfherder-app=firefox + --output $MOZ_FETCHES_DIR/../artifacts + +webpagetest-chrome: + description: Run webpagetest performance pageload tests on Chrome against Alexa top 50 websites + treeherder: + symbol: perftest-chrome(linux-webpagetest) + tier: 2 + attributes: + cron: true + scopes: + - secrets:get:project/perftest/gecko/level-{level}/perftest-login + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + testing/performance/perftest_WPT_chrome_init_file.js + --flavor=webpagetest + --webpagetest + --perfherder + --perfherder-metrics median + --perfherder-app=chrome + --output $MOZ_FETCHES_DIR/../artifacts + +try-browsertime: + description: Run ./mach perftest on Linux + treeherder: + symbol: perftest(linux-bt) + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + --on-try + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +domcount: + description: Run DOM test + treeherder: + symbol: perftest(linux-dom) + attributes: + batch: false + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + browser/base/content/test/perftest_browser_xhtml_dom.js + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --flavor desktop-browser + --perfherder + --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +http3: + description: Run HTTP/3 test + treeherder: + symbol: perftest(http3) + attributes: + batch: false + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + xpcshell/tests/netwerk/test/unit/test_http3_perf.js + --flavor xpcshell + --perfherder + --perfherder-metrics name:speed,unit:bps + --output $MOZ_FETCHES_DIR/../artifacts + --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell + --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json + --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node + --xpcshell-cycles 13 + --xpcshell-xre-path ${MOZ_FETCHES_DIR}/firefox + +livesites: + description: Live site performance testing + variants: [http3] + treeherder: + symbol: perftest({symbol}) + attributes: + batch: false + cron: true + perftest: + - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js] + # broken: bug 1678588 + # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js] + - [g-image, netwerk/test/perf/perftest_http3_google_image.js] + # broken: bug 1799655 + # - [g-search, netwerk/test/perf/perftest_http3_google_search.js] + - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js] + # broken: bug 1695871 + # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js] + # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js] + perftest-metrics: + by-perftest: + cloudflare: + # Example of how the specify settings for each metric + resources: + extraOptions: [] + firstPaint: {} + navigationTiming: {} + pageTimings: {} + timeToContentfulPaint: {} + # broken: bug 1678588 + # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond] + g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime] + # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed] + # broken: bug 1695871 + # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + # Leave this here so people know this exists when looking + # for examples + perftest-perfherder-global: + extraOptions: [] + perftest-extra-options: + by-perftest: + cloudflare: + - --perfherder-split-by browserScripts.pageinfo.url + # g-search: + # - --perfherder-split-by browserScripts.pageinfo.url + lq-fetch: + - --perfherder-split-by browserScripts.pageinfo.url + default: [] + perftest-btime-variants: + by-perftest: + cloudflare: + - ["10s", browsertime.waitTime=10000] + - ["25s", browsertime.waitTime=25000] + - ["35s", browsertime.waitTime=35000] + - ["60s", browsertime.waitTime=60000] + # broken: bug 1678588 + # fb-scroll: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + # g-search: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + lq-fetch: + - [null, "browsertime.waitTime=1000,browsertime.cycles=5"] + # broken: bug 1695871 + # ytw: + # - [null, browsertime.waitTime=20000] + # ytw-scroll: + # - [null, browsertime.waitTime=20000] + default: + - [null, browsertime.waitTime=1000] + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + {perftest_testname} + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --browsertime-iterations 10 + --visualmetrics + --flavor desktop-browser + --perfherder + --perfherder-metrics {perftest_metrics} + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +controlled: + description: Controlled performance testing + treeherder: + symbol: perftest(controlled) + worker: + max-run-time: 14400 + attributes: + batch: false + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + netwerk/test/perf/perftest_http3_controlled.js + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --browsertime-iterations 1 + --browsertime-cycles 96 + --hooks netwerk/test/perf/hooks_throttling.py + --flavor desktop-browser + --perfherder + --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +perfstats: + description: Run PerfStats pageload test + treeherder: + symbol: perftest(linux-perfstats) + attributes: + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js + +record-websites: + description: Run mozperftest to record desktop websites + platform: linux1804-64/opt + require-build: + linux1804-64/opt: build-linux64/opt + treeherder: + symbol: perftest(rec) + attributes: + cron: false + run-on-projects: [] + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + - secrets:get:project/perftest/gecko/level-{level}/perftest-login + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + --flavor desktop-browser + --verbose + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --proxy + --output $MOZ_FETCHES_DIR/../artifacts + --hooks testing/performance/hooks_recording.py + testing/performance/perftest_record.js + +side-by-side: + description: Run mozperftest side-by-side + treeherder: + symbol: perftest(side-by-side) + tier: 2 + run: + using: run-task + sparse-profile: perftest + checkout: true + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + tools side-by-side + -t {test_name} + --base-platform {platform} + --base-revision {base_revision} + --new-revision {new_revision} + --base-branch {base_branch} + --new-branch {new_branch} + +mwu-change-detector: + description: Runs Mann-Whitney U-test on two revisions to detect performance changes + treeherder: + symbol: perftest-detect(mwu) + tier: 2 + run: + using: run-task + sparse-profile: perftest + checkout: true + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.8 python/mozperftest/mozperftest/runner.py + tools change-detector + --task-name {task_name} + --base-revision {base_revision} + --new-revision {new_revision} + --base-branch {base_branch} + --new-branch {new_branch} diff --git a/taskcluster/ci/perftest/macosx.yml b/taskcluster/ci/perftest/macosx.yml new file mode 100644 index 0000000000..b2d8f578d2 --- /dev/null +++ b/taskcluster/ci/perftest/macosx.yml @@ -0,0 +1,251 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: t-osx-1015-r8 + fetches: + build: + - artifact: target.mozinfo.json + - artifact: target.common.tests.tar.gz + - artifact: target.xpcshell.tests.tar.gz + - artifact: target.perftests.tests.tar.gz + - artifact: target.dmg + extract: false + toolchain: + - macosx64-geckodriver + - macosx64-node + platform: macosx1015-64-shippable-qr/opt + require-build: + macosx1015-64-shippable-qr/opt: build-macosx64-shippable/opt + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + +try-xpcshell: + description: Run ./mach perftest on macOs + treeherder: + symbol: perftest(macos-xpcshell) + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + --on-try + --flavor desktop-browser + --output $MOZ_FETCHES_DIR/../artifacts + --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell + --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json + --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node + --xpcshell-xre-path ${MOZ_FETCHES_DIR}/target.dmg + +try-browsertime: + description: Run ./mach perftest on macOs + treeherder: + symbol: perftest(macos-bt) + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + --on-try + --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg + --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +domcount: + description: Run DOM test on macOS + treeherder: + symbol: perftest(macos-dom) + attributes: + batch: false + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + browser/base/content/test/perftest_browser_xhtml_dom.js + --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg + --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node + --flavor desktop-browser + --perfherder + --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +http3: + description: Run HTTP/3 test + treeherder: + symbol: perftest(http3) + attributes: + batch: false + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + xpcshell/tests/netwerk/test/unit/test_http3_perf.js + --flavor xpcshell + --perfherder + --perfherder-metrics name:speed,unit:bps + --output $MOZ_FETCHES_DIR/../artifacts + --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell + --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json + --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node + --xpcshell-cycles 13 + --xpcshell-xre-path ${MOZ_FETCHES_DIR}/target.dmg + + +livesites: + description: Live site performance testing + variants: [http3] + treeherder: + symbol: perftest({symbol}) + attributes: + batch: false + cron: true + perftest: + - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js] + # broken: bug 1678588 + # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js] + - [g-image, netwerk/test/perf/perftest_http3_google_image.js] + # broken: bug 1799655 + # - [g-search, netwerk/test/perf/perftest_http3_google_search.js] + - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js] + # broken: bug 1695871 + # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js] + # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js] + perftest-metrics: + by-perftest: + cloudflare: + # Example of how the specify settings for each metric + resources: + extraOptions: [] + firstPaint: {} + navigationTiming: {} + pageTimings: {} + timeToContentfulPaint: {} + # broken: bug 1678588 + # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond] + g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime] + # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed] + # broken: bug 1695871 + # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + # Leave this here so people know this exists when looking + # for examples + perftest-perfherder-global: + extraOptions: [] + perftest-extra-options: + by-perftest: + cloudflare: + - --perfherder-split-by browserScripts.pageinfo.url + # g-search: + # - --perfherder-split-by browserScripts.pageinfo.url + lq-fetch: + - --perfherder-split-by browserScripts.pageinfo.url + default: [] + perftest-btime-variants: + by-perftest: + cloudflare: + - ["10s", browsertime.waitTime=10000] + - ["25s", browsertime.waitTime=25000] + - ["35s", browsertime.waitTime=35000] + - ["60s", browsertime.waitTime=60000] + # broken: bug 1678588 + # fb-scroll: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + # g-search: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + lq-fetch: + - [null, "browsertime.waitTime=1000,browsertime.cycles=5"] + # broken: bug 1695871 + # ytw: + # - [null, browsertime.waitTime=20000] + # ytw-scroll: + # - [null, browsertime.waitTime=20000] + default: + - [null, browsertime.waitTime=1000] + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + {perftest_testname} + --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg + --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node + --browsertime-iterations 10 + --flavor desktop-browser + --perfherder + --perfherder-metrics {perftest_metrics} + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +controlled: + description: Controlled performance testing + treeherder: + symbol: perftest(controlled) + worker: + max-run-time: 14400 + attributes: + batch: false + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + python3 python/mozperftest/mozperftest/runner.py + netwerk/test/perf/perftest_http3_controlled.js + --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg + --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node + --browsertime-iterations 1 + --browsertime-cycles 96 + --hooks netwerk/test/perf/hooks_throttling.py + --flavor desktop-browser + --perfherder + --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + +perfstats: + description: Run PerfStats pageload test + treeherder: + symbol: perftest(macos-perfstats) + attributes: + batch: false + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3 -m venv . && + bin/python3 python/mozperftest/mozperftest/runner.py + --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg + --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js diff --git a/taskcluster/ci/perftest/windows.yml b/taskcluster/ci/perftest/windows.yml new file mode 100644 index 0000000000..caea4026b7 --- /dev/null +++ b/taskcluster/ci/perftest/windows.yml @@ -0,0 +1,200 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: t-win10-64-1803-hw + fetches: + build: + - artifact: target.perftests.tests.tar.gz + - artifact: target.zip + toolchain: + - win64-node + - win64-geckodriver + platform: windows10-64-shippable/opt + require-build: + windows10-64-shippable/opt: build-win64-shippable/opt + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles + +try-browsertime: + description: Run ./mach perftest on windows + treeherder: + symbol: perftest(win-bt) + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.exe python/mozperftest/mozperftest/runner.py + --on-try + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe + --output $MOZ_FETCHES_DIR/../artifacts + +domcount: + description: Run DOM test + treeherder: + symbol: perftest(win-dom) + attributes: + batch: false + cron: true + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.exe python/mozperftest/mozperftest/runner.py + browser/base/content/test/perftest_browser_xhtml_dom.js + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --flavor desktop-browser + --perfherder + --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe + --output $MOZ_FETCHES_DIR/../artifacts + + +livesites: + description: Live site performance testing + variants: [http3] + treeherder: + symbol: perftest({symbol}) + attributes: + batch: false + cron: true + perftest: + - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js] + # broken: bug 1678588 + # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js] + - [g-image, netwerk/test/perf/perftest_http3_google_image.js] + # broken: bug 1799655 + # - [g-search, netwerk/test/perf/perftest_http3_google_search.js] + - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js] + # broken: bug 1695871 + # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js] + # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js] + perftest-metrics: + by-perftest: + cloudflare: + # Example of how the specify settings for each metric + resources: + extraOptions: [] + firstPaint: {} + navigationTiming: {} + pageTimings: {} + timeToContentfulPaint: {} + # broken: bug 1678588 + # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond] + g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime] + # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed] + # broken: bug 1695871 + # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames] + default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint] + # Leave this here so people know this exists when looking + # for examples + perftest-perfherder-global: + extraOptions: [] + perftest-extra-options: + by-perftest: + cloudflare: + - --perfherder-split-by browserScripts.pageinfo.url + # g-search: + # - --perfherder-split-by browserScripts.pageinfo.url + lq-fetch: + - --perfherder-split-by browserScripts.pageinfo.url + default: [] + perftest-btime-variants: + by-perftest: + cloudflare: + - ["10s", browsertime.waitTime=10000] + - ["25s", browsertime.waitTime=25000] + - ["35s", browsertime.waitTime=35000] + - ["60s", browsertime.waitTime=60000] + # broken: bug 1678588 + # fb-scroll: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + # g-search: + # - ["10s", browsertime.waitTime=10000] + # - ["25s", browsertime.waitTime=25000] + # - ["35s", browsertime.waitTime=35000] + # - ["60s", browsertime.waitTime=60000] + lq-fetch: + - [null, "browsertime.waitTime=1000,browsertime.cycles=5"] + # broken: bug 1695871 + # ytw: + # - [null, browsertime.waitTime=20000] + # ytw-scroll: + # - [null, browsertime.waitTime=20000] + default: + - [null, browsertime.waitTime=1000] + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.exe python/mozperftest/mozperftest/runner.py + {perftest_testname} + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --browsertime-iterations 10 + --flavor desktop-browser + --perfherder + --perfherder-metrics {perftest_metrics} + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe + --output $MOZ_FETCHES_DIR/../artifacts + +controlled: + description: Controlled performance testing + treeherder: + symbol: perftest(controlled) + worker: + max-run-time: 14400 + attributes: + batch: false + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.exe python/mozperftest/mozperftest/runner.py + netwerk/test/perf/perftest_http3_controlled.js + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --browsertime-iterations 1 + --browsertime-cycles 96 + --hooks netwerk/test/perf/hooks_throttling.py + --flavor desktop-browser + --perfherder + --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms + --perfherder-simplify-names + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe + --output $MOZ_FETCHES_DIR/../artifacts + +perfstats: + description: Run PerfStats pageload test + treeherder: + symbol: perftest(win-perfstats) + attributes: + batch: false + cron: false + run: + command: >- + mkdir -p $MOZ_FETCHES_DIR/../artifacts && + cd $MOZ_FETCHES_DIR && + python3.exe python/mozperftest/mozperftest/runner.py + --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe + --flavor desktop-browser + --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe + --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe + --output $MOZ_FETCHES_DIR/../artifacts + --perfherder + --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms + --browsertime-iterations 10 + --hooks testing/performance/hooks_perfstats.py + testing/performance/perftest_perfstats.js diff --git a/taskcluster/ci/post-balrog-dummy/kind.yml b/taskcluster/ci/post-balrog-dummy/kind.yml new file mode 100644 index 0000000000..6b5b90afaf --- /dev/null +++ b/taskcluster/ci/post-balrog-dummy/kind.yml @@ -0,0 +1,21 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.per_platform_dummy:transforms + - gecko_taskgraph.transforms.reverse_chunk_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - balrog + +job-template: + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml new file mode 100644 index 0000000000..2071a79e89 --- /dev/null +++ b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.reverse_chunk_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-checksums + - release-beetmover-source-checksums + - release-eme-free-repack-beetmover-checksums + - release-beetmover-signed-langpacks-checksums + +jobs: + firefox-promote: + name: post-beetmover-checksums-dummy + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + shipping-product: firefox + worker-type: succeed + worker: + implementation: succeed + devedition-promote: + name: post-beetmover-checksums-dummy + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + shipping-product: devedition + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/post-beetmover-dummy/kind.yml b/taskcluster/ci/post-beetmover-dummy/kind.yml new file mode 100644 index 0000000000..adbdcd7306 --- /dev/null +++ b/taskcluster/ci/post-beetmover-dummy/kind.yml @@ -0,0 +1,22 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.per_platform_dummy:transforms + - gecko_taskgraph.transforms.reverse_chunk_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-checksums + - beetmover-repackage + +job-template: + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/post-langpack-dummy/kind.yml b/taskcluster/ci/post-langpack-dummy/kind.yml new file mode 100644 index 0000000000..a366ac069e --- /dev/null +++ b/taskcluster/ci/post-langpack-dummy/kind.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.reverse_chunk_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-beetmover-signed-langpacks + +jobs: + firefox-promote: + name: post-langpack-dummy + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + shipping-product: firefox + worker-type: succeed + worker: + implementation: succeed + + devedition-promote: + name: post-langpack-dummy + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + shipping-product: devedition + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/post-update-verify-dummy/kind.yml b/taskcluster/ci/post-update-verify-dummy/kind.yml new file mode 100644 index 0000000000..8b1546261b --- /dev/null +++ b/taskcluster/ci/post-update-verify-dummy/kind.yml @@ -0,0 +1,21 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.per_platform_dummy:transforms + - gecko_taskgraph.transforms.reverse_chunk_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-update-verify + +job-template: + description: Dummy task to deal with max_dependencies + run-on-projects: [] + shipping-phase: promote + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/release-balrog-scheduling/kind.yml b/taskcluster/ci/release-balrog-scheduling/kind.yml new file mode 100644 index 0000000000..2533818ca2 --- /dev/null +++ b/taskcluster/ci/release-balrog-scheduling/kind.yml @@ -0,0 +1,94 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-bouncer-check + - release-push-langpacks + +job-defaults: + run-on-projects: [] + shipping-phase: ship + worker-type: balrog + worker: + implementation: balrog + balrog-action: schedule + +jobs: + firefox: + description: Schedule Firefox publishing in balrog + name: release-firefox_schedule_publishing_in_balrog + shipping-product: firefox + worker: + product: firefox + publish-rules: + by-release-level: + production: + by-release-type: + beta: [32] + release: [145] + esr102: [17770] + esr115: [17824] + default: [] + staging: + by-release-type: + beta: [32] + release: [145] + esr102: [902] + esr115: [909] + default: [] + background-rate: + by-release-type: + beta: + by-beta-number: + '1': 25 + '2': 50 + '3': 100 + default: null + default: null + force-fallback-mapping-update: + by-release-type: + beta: + by-beta-number: + '1': true + default: false + default: false + pin-channels: + by-release-type: + beta: ["beta"] + release: ["release"] + esr.*: ["esr", "esr-next"] + default: [] + treeherder: + platform: firefox-release/opt + symbol: Rel(BSFx) + tier: 1 + kind: build + devedition: + description: Schedule Devedition publishing in balrog + name: release-devedition_schedule_publishing_in_balrog + shipping-product: devedition + worker: + product: devedition + publish-rules: [10] + background-rate: + by-release-type: + beta: null + default: null + force-fallback-mapping-update: + by-release-type: + beta: true + default: false + pin-channels: ["aurora"] + treeherder: + platform: devedition-release/opt + symbol: Rel(BSDev) + tier: 1 + kind: build diff --git a/taskcluster/ci/release-balrog-submit-toplevel/kind.yml b/taskcluster/ci/release-balrog-submit-toplevel/kind.yml new file mode 100644 index 0000000000..7585796793 --- /dev/null +++ b/taskcluster/ci/release-balrog-submit-toplevel/kind.yml @@ -0,0 +1,80 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes + - gecko_taskgraph.transforms.balrog_toplevel:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + run-on-projects: [] # to make sure this never runs in CI + shipping-phase: promote + worker-type: balrog + worker: + implementation: balrog + balrog-action: v2-submit-toplevel + require-mirrors: true + archive-domain: + by-release-level: + production: archive.mozilla.org + staging: ftp.stage.mozaws.net + download-domain: + by-release-level: + production: download.mozilla.org + staging: bouncer-bouncer-releng.stage.mozaws.net + whats-new-config: browser/config/whats_new_page.yml + +jobs: + firefox: + name: submit-toplevel-firefox-release-to-balrog + description: Submit toplevel Firefox release to balrog + shipping-product: firefox + worker: + product: firefox + channel-names: + by-release-type: + beta: ["beta", "beta-localtest", "beta-cdntest"] + release(-rc)?: ["release", "release-localtest", "release-cdntest"] + esr.*: ["esr", "esr-localtest", "esr-cdntest", "esr-localtest-next", "esr-cdntest-next"] + default: [] + rules-to-update: + by-release-type: + beta: ["firefox-beta-cdntest", "firefox-beta-localtest"] + release(-rc)?: ["firefox-release-cdntest", "firefox-release-localtest"] + esr102: ["firefox-esr102-cdntest", "firefox-esr102-localtest"] + esr115: ["firefox-esr115-cdntest", "firefox-esr115-localtest"] + default: [] + pin-channels: + by-release-type: + beta: ["beta-localtest", "beta-cdntest"] + release(-rc)?: ["release-localtest", "release-cdntest"] + esr.*: ["esr-localtest", "esr-cdntest", "esr-localtest-next", "esr-cdntest-next"] + default: [] + platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"] + treeherder: + platform: firefox-release/opt + symbol: Rel(BPFx) + tier: 1 + kind: build + + devedition: + name: submit-toplevel-devedition-release-to-balrog + description: submit toplevel Devedition release to balrog + shipping-product: devedition + run-on-releases: [beta] + worker: + product: devedition + channel-names: ["aurora", "aurora-localtest", "aurora-cdntest"] + rules-to-update: ["devedition-cdntest", "devedition-localtest"] + pin-channels: ["aurora-localtest", "aurora-cdntest"] + platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"] + treeherder: + platform: devedition-release/opt + symbol: Rel(BPDev) + tier: 1 + kind: build diff --git a/taskcluster/ci/release-beetmover-push-to-release/kind.yml b/taskcluster/ci/release-beetmover-push-to-release/kind.yml new file mode 100644 index 0000000000..affc0f2c77 --- /dev/null +++ b/taskcluster/ci/release-beetmover-push-to-release/kind.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.beetmover_push_to_release:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-generate-checksums-beetmover + - post-update-verify-dummy + +job-defaults: + run-on-projects: [] + shipping-phase: push + worker: + max-run-time: 2700 + +jobs: + devedition-push-to-release: + name: devedition_push_to_release + product: devedition + shipping-product: devedition + treeherder-platform: devedition-release/opt + + firefox-push-to-release: + name: firefox_push_to_release + product: firefox + shipping-product: firefox + treeherder-platform: firefox-release/opt diff --git a/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml b/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml new file mode 100644 index 0000000000..8d9bb74a2d --- /dev/null +++ b/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_langpack_checksums:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-beetmover-signed-langpacks + +job-template: + shipping-phase: promote + attributes: + artifact_prefix: public + artifact_map: taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml diff --git a/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml b/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml new file mode 100644 index 0000000000..188a619ab0 --- /dev/null +++ b/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.release_beetmover_signed_addons:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + - shippable-l10n-signing + +only-for-attributes: + - nightly + - shippable + +only-for-build-platforms: + - linux64-shippable/opt + - linux64-devedition/opt + +job-template: + description: Beetmover submission for platform-independent langpacks {locales} in {platform} directory + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-beetmover + staging: scriptworker-k8s/gecko-1-beetmover + run-on-projects: [] + shipping-phase: promote + attributes: + artifact_map: + by-release-type: + beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml + default: taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml diff --git a/taskcluster/ci/release-beetmover-source-checksums/kind.yml b/taskcluster/ci/release-beetmover-source-checksums/kind.yml new file mode 100644 index 0000000000..9a4ea7a2c4 --- /dev/null +++ b/taskcluster/ci/release-beetmover-source-checksums/kind.yml @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_source_checksums:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-source-checksums-signing + +job-template: + shipping-phase: promote + attributes: + artifact_prefix: public + artifact_map: taskcluster/gecko_taskgraph/manifests/source_checksums.yml diff --git a/taskcluster/ci/release-bouncer-aliases/kind.yml b/taskcluster/ci/release-bouncer-aliases/kind.yml new file mode 100644 index 0000000000..d1ce834c48 --- /dev/null +++ b/taskcluster/ci/release-bouncer-aliases/kind.yml @@ -0,0 +1,95 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.bouncer_aliases:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-bouncer-check + +job-defaults: + description: Update bouncer aliases job + worker-type: bouncer + worker: + implementation: bouncer-aliases + scopes: + by-release-level: + production: + - project:releng:bouncer:action:aliases + - project:releng:bouncer:server:production + staging: + - project:releng:bouncer:action:aliases + - project:releng:bouncer:server:staging + run-on-projects: [] + shipping-phase: ship + treeherder: + symbol: Rel(BncAlias) + kind: test + tier: 1 + +jobs: + devedition: + bouncer-products-per-alias: + firefox-devedition-latest-ssl: installer-ssl + firefox-devedition-latest: installer + firefox-devedition-stub: stub-installer + firefox-devedition-msi-latest-ssl: msi + firefox-devedition-msix-latest-ssl: msix + shipping-product: devedition + treeherder: + platform: devedition-release/opt + + firefox: + bouncer-products-per-alias: + by-release-type: + beta: + firefox-beta-latest-ssl: installer-ssl + firefox-beta-latest: installer + firefox-beta-stub: stub-installer + firefox-beta-msi-latest-ssl: msi + firefox-beta-msix-latest-ssl: msix + firefox-beta-pkg-latest-ssl: pkg + firefox-beta-langpack-latest-ssl: langpack + release.*: + firefox-latest-ssl: installer-ssl + firefox-latest: installer + firefox-stub: stub-installer + firefox-msi-latest-ssl: msi + firefox-msix-latest-ssl: msix + firefox-pkg-latest-ssl: pkg + firefox-langpack-latest-ssl: langpack + esr115: + # when there is one ESR branch both sets of aliases work + # when there are two ESR branches ... + # ... these always point to the older branch + firefox-esr-latest-ssl: installer-ssl + firefox-esr-latest: installer + firefox-esr-msi-latest-ssl: msi + firefox-esr-msix-latest-ssl: msix + firefox-esr-pkg-latest-ssl: pkg + firefox-esr-langpack-latest-ssl: langpack + esrXXX: # XXX - to change when we branch next ESR + firefox-esr-next-latest-ssl: installer-ssl + firefox-esr-next-latest: installer + firefox-esr-next-msi-latest-ssl: msi + firefox-esr-next-msix-latest-ssl: msix + firefox-esr-next-pkg-latest-ssl: pkg + firefox-esr-next-langpack-latest-ssl: langpack + default: {} + partner-bouncer-products-per-alias: + by-release-type: + beta: + partner-firefox-beta-PARTNER-latest: installer + partner-firefox-beta-PARTNER-stub: stub-installer + release.*: + partner-firefox-release-PARTNER-latest: installer + partner-firefox-release-PARTNER-stub: stub-installer + default: {} + shipping-product: firefox + treeherder: + platform: firefox-release/opt diff --git a/taskcluster/ci/release-bouncer-check/kind.yml b/taskcluster/ci/release-bouncer-check/kind.yml new file mode 100644 index 0000000000..9a2508b8f2 --- /dev/null +++ b/taskcluster/ci/release-bouncer-check/kind.yml @@ -0,0 +1,76 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - release-beetmover-push-to-release + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.bouncer_check:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: release-bouncer-check + description: release bouncer check + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: push + worker-type: b-linux-gcp + worker: + max-run-time: 1200 + docker-image: {in-tree: "update-verify"} + run: + sparse-profile: mozharness + extra-config: + by-release-level: + production: + bouncer_prefix: "https://download.mozilla.org/" + staging: + # This is the list on-change locales, excluding ja/ja-JP-mac + # which bouncer_check doesn't support. + locales: ['en-US', 'en-CA', 'he', 'it'] + bouncer_prefix: "https://bouncer-bouncer-releng.stage.mozaws.net/" + cdn_urls: + - ftp.stage.mozaws.net + + attributes: + build_platform: linux64 + build_type: opt + treeherder: + symbol: Rel(BncChk) + kind: test + tier: 1 + +jobs: + firefox: + shipping-product: firefox + index: + product: firefox + job-name: firefox-release-bouncer-check + run: + config: + by-release-type: + beta: + - releases/bouncer_firefox_beta.py + release: + - releases/bouncer_firefox_release.py + esr.*: + - releases/bouncer_firefox_esr.py + default: + - releases/bouncer_firefox_beta.py + treeherder: + platform: firefox-release/opt + + devedition: + shipping-product: devedition + index: + product: devedition + job-name: devedition-release-bouncer-check + run: + config: + - releases/bouncer_firefox_devedition.py + treeherder: + platform: devedition-release/opt diff --git a/taskcluster/ci/release-bouncer-sub/kind.yml b/taskcluster/ci/release-bouncer-sub/kind.yml new file mode 100644 index 0000000000..131b41b0a7 --- /dev/null +++ b/taskcluster/ci/release-bouncer-sub/kind.yml @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.bouncer_submission:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: release bouncer submission job + worker-type: bouncer + worker: + implementation: bouncer-submission + scopes: + by-release-level: + production: + - project:releng:bouncer:action:submission + - project:releng:bouncer:server:production + staging: + - project:releng:bouncer:action:submission + - project:releng:bouncer:server:staging + run-on-projects: [] + shipping-phase: promote + locales-file: browser/locales/shipped-locales + treeherder: + symbol: Rel(BncSub) + kind: test + tier: 1 + +jobs: + devedition: + bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64'] + bouncer-products: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'stub-installer', 'msi', 'msix'] + shipping-product: devedition + treeherder: + platform: devedition-release/opt + + firefox: + bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64'] + bouncer-products: + by-release-type: + default: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'stub-installer', 'msi', 'msix', 'pkg', 'langpack'] + esr.*: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'msi', 'msix', 'pkg', 'langpack'] + shipping-product: firefox + treeherder: + platform: firefox-release/opt + + firefox-rc: + bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64'] + bouncer-products: ['complete-mar-candidates', 'partial-mar-candidates'] + shipping-product: firefox + run-on-releases: ['release-rc'] + treeherder: + symbol: Rel(BncSub-RC) + platform: firefox-release/opt diff --git a/taskcluster/ci/release-early-tagging/kind.yml b/taskcluster/ci/release-early-tagging/kind.yml new file mode 100644 index 0000000000..9b194fb441 --- /dev/null +++ b/taskcluster/ci/release-early-tagging/kind.yml @@ -0,0 +1,46 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: Release Promotion version tag for buildN + run-on-projects: [] + shipping-phase: promote + worker-type: tree + worker: + implementation: treescript + tags: ['buildN'] + bump: false + dontbuild: true + push: + by-project: + mozilla-(beta|release|esr.*): true + maple: true + default: false + + +jobs: + firefox: + name: firefox-tag-buildN + shipping-product: firefox + treeherder: + platform: firefox-release/opt + symbol: Rel(TagBuild) + tier: 1 + kind: build + + devedition: + name: devedition-tag-buildN + shipping-product: devedition + treeherder: + platform: devedition-release/opt + symbol: Rel(TagBuild) + tier: 1 + kind: build diff --git a/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml b/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml new file mode 100644 index 0000000000..a57ec82a9d --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml @@ -0,0 +1,21 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_emefree_checksums:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack-beetmover + +only-for-build-platforms: + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + +job-template: + shipping-phase: promote diff --git a/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml b/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml new file mode 100644 index 0000000000..be8dca4918 --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml @@ -0,0 +1,27 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_repackage_partner:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack-repackage-signing + +only-for-build-platforms: + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + +job-template: + shipping-phase: promote + partner-bucket-scope: + by-release-level: + production: beetmover:bucket:partner + staging: beetmover:bucket:dep-partner + partner-private-path: null + partner-public-path: "{platform}-EME-free/{locale}" diff --git a/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml b/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml new file mode 100644 index 0000000000..db3d82fe19 --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: partner-repack-ids + +transforms: + - gecko_taskgraph.transforms.mac_notarization:transforms + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.partner_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack-mac-signing + +only-for-build-platforms: + - macosx64-shippable/opt + +job-template: + shipping-product: firefox + shipping-phase: promote + max-run-time: 1800 + copy-repack-ids: true diff --git a/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml b/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml new file mode 100644 index 0000000000..ae7104d4a6 --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: partner-repack-ids + +transforms: + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.partner_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack + +only-for-build-platforms: + - macosx64-shippable/opt + +job-template: + shipping-product: firefox + shipping-phase: promote + repacks-per-chunk: 5 diff --git a/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml b/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml new file mode 100644 index 0000000000..1caf80ed5b --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml @@ -0,0 +1,18 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing_partner:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack-repackage + +only-for-build-platforms: + - win32-shippable/opt + - win64-shippable/opt + - macosx64-shippable/opt diff --git a/taskcluster/ci/release-eme-free-repack-repackage/kind.yml b/taskcluster/ci/release-eme-free-repack-repackage/kind.yml new file mode 100644 index 0000000000..aa5b4ab242 --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack-repackage/kind.yml @@ -0,0 +1,56 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_partner:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-eme-free-repack + - release-eme-free-repack-mac-signing + - release-eme-free-repack-mac-notarization + - toolchain + +only-for-build-platforms: + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + +job-template: + upstream-mac-kind: + by-build-type: + debug: release-eme-free-repack-mac-signing + default: + by-project: + mozilla-(central|beta|release|esr.*): release-eme-free-repack-mac-notarization + default: release-eme-free-repack-mac-signing + mozharness: + config: + by-build-platform: + macosx64-.*: + - repackage/base.py + - repackage/osx_partner.py + win32-.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_partner.py + win64-(?!aarch64).*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_partner.py + win64-aarch64-.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_partner.py + package-formats: + by-build-platform: + macosx64\b.*: [dmg] + win32\b.*: [installer] + win64\b.*: [installer] diff --git a/taskcluster/ci/release-eme-free-repack/kind.yml b/taskcluster/ci/release-eme-free-repack/kind.yml new file mode 100644 index 0000000000..cc3e85071b --- /dev/null +++ b/taskcluster/ci/release-eme-free-repack/kind.yml @@ -0,0 +1,81 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.partner_repack:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + - build-mac-signing + - build-mac-notarization + - shippable-l10n-signing + - shippable-l10n-mac-signing + - shippable-l10n-mac-notarization + +job-defaults: + name: eme-free-repack + description: Release Promotion eme-free repacks + run-on-projects: [] # to make sure this never runs as part of CI + shipping-product: firefox + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "partner-repack" + chain-of-trust: true + max-run-time: 7200 + run: + using: mozharness + config: + - partner_repacks/release_mozilla-release_desktop.py + script: mozharness/scripts/desktop_partner_repacks.py + job-script: taskcluster/scripts/builder/repackage.sh + tooltool-downloads: false + extra: + limit-locales: + by-release-level: + staging: true + production: false + +jobs: + macosx64-shippable: + treeherder: + symbol: EME + platform: macosx64/opt + kind: test + tier: 1 + attributes: + build_platform: macosx64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + win32-shippable: + treeherder: + symbol: EME + platform: win32/opt + kind: test + tier: 1 + attributes: + build_platform: win32-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + win64-shippable: + treeherder: + symbol: EME + platform: win64/opt + kind: test + tier: 1 + attributes: + build_platform: win64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true diff --git a/taskcluster/ci/release-final-verify/kind.yml b/taskcluster/ci/release-final-verify/kind.yml new file mode 100644 index 0000000000..b1319665cd --- /dev/null +++ b/taskcluster/ci/release-final-verify/kind.yml @@ -0,0 +1,47 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - release-bouncer-check + - release-update-verify-config + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.final_verify:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: final-verify + run-on-projects: [] # to make sure this never runs as part of CI + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "update-verify" + max-run-time: 7200 + retry-exit-status: [1] + + +jobs: + firefox: + description: final verify + shipping-phase: push + shipping-product: firefox + treeherder: + platform: firefox-release/opt + kind: test + symbol: Rel(FV) + tier: 1 + + devedition: + description: final verify + shipping-phase: push + shipping-product: devedition + treeherder: + platform: devedition-release/opt + kind: test + symbol: Rel(FV) + tier: 1 diff --git a/taskcluster/ci/release-flatpak-push/kind.yml b/taskcluster/ci/release-flatpak-push/kind.yml new file mode 100644 index 0000000000..edd65c953e --- /dev/null +++ b/taskcluster/ci/release-flatpak-push/kind.yml @@ -0,0 +1,41 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_flatpak_push:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-flatpak-repackage + +job-defaults: + description: Pushes Flatpaks onto Flathub + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [beta, release, release-rc] + shipping-phase: ship + treeherder: + platform: linux64/opt + kind: build + tier: 2 + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-pushflatpak + staging: scriptworker-k8s/gecko-1-pushflatpak + worker: + implementation: push-flatpak + channel: + by-release-type: + beta: beta + release: stable + default: mock + +jobs: + firefox: + shipping-product: firefox + treeherder: + symbol: Flatpak(push) diff --git a/taskcluster/ci/release-flatpak-repackage/kind.yml b/taskcluster/ci/release-flatpak-repackage/kind.yml new file mode 100644 index 0000000000..ecc86bf4ab --- /dev/null +++ b/taskcluster/ci/release-flatpak-repackage/kind.yml @@ -0,0 +1,66 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_flatpak_repackage:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - post-beetmover-dummy + - post-langpack-dummy + +job-defaults: + description: Generates flatpak by reackaging the existing tar.bz2 + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [beta, release, release-rc] + shipping-phase: promote + scopes: [] + treeherder: + platform: linux64-shippable/opt + kind: build + tier: 2 + worker-type: b-linux-gcp + worker: + implementation: docker-worker + os: linux + max-run-time: 7200 + docker-image: {in-tree: firefox-flatpak} + artifacts: + - name: public/build + type: directory + path: /home/worker/artifacts/ + command: + - /bin/bash + - -cx + - ./runme.sh + env: + VERSION: "{release_config[version]}" + BUILD_NUMBER: "{release_config[build_number]}" + CANDIDATES_DIR: + by-release-level: + staging: + https://ftp.stage.mozaws.net/pub/{task[shipping-product]}/candidates + production: + https://archive.mozilla.org/pub/{task[shipping-product]}/candidates + LC_ALL: C.UTF-8 + LANG: C.UTF-8 + L10N_CHANGESETS: "{config_params[head_repository]}/raw-file/{config_params[head_rev]}/browser/locales/l10n-changesets.json" + FLATPAK_BRANCH: + by-project: + mozilla-release: stable + default: beta + chain-of-trust: true + +jobs: + firefox: + shipping-product: firefox + attributes: + build_platform: linux64-shippable + build_type: opt + treeherder: + symbol: Flatpak(r) diff --git a/taskcluster/ci/release-generate-checksums-beetmover/kind.yml b/taskcluster/ci/release-generate-checksums-beetmover/kind.yml new file mode 100644 index 0000000000..1d221edc1e --- /dev/null +++ b/taskcluster/ci/release-generate-checksums-beetmover/kind.yml @@ -0,0 +1,17 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.release_generate_checksums_beetmover:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-generate-checksums-signing + +job-template: + shipping-phase: promote + attributes: + artifact_map: taskcluster/gecko_taskgraph/manifests/release_checksums.yml diff --git a/taskcluster/ci/release-generate-checksums-signing/kind.yml b/taskcluster/ci/release-generate-checksums-signing/kind.yml new file mode 100644 index 0000000000..2e763e5434 --- /dev/null +++ b/taskcluster/ci/release-generate-checksums-signing/kind.yml @@ -0,0 +1,15 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +kind-dependencies: + - release-generate-checksums + +transforms: + - gecko_taskgraph.transforms.release_generate_checksums_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +job-template: + shipping-phase: promote diff --git a/taskcluster/ci/release-generate-checksums/kind.yml b/taskcluster/ci/release-generate-checksums/kind.yml new file mode 100644 index 0000000000..71018c8cef --- /dev/null +++ b/taskcluster/ci/release-generate-checksums/kind.yml @@ -0,0 +1,86 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - beetmover-source + - post-beetmover-checksums-dummy + - release-beetmover-signed-langpacks + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_generate_checksums:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: generate-checksums + description: generates checksums + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: promote + worker-type: b-linux-gcp + worker: + max-run-time: 1200 + artifacts: + - name: public/build/SHA256SUMMARY + path: /builds/worker/SHA256SUMMARY + type: file + - name: public/build/SHA256SUMS + path: /builds/worker/SHA256SUMS + type: file + - name: public/build/SHA512SUMMARY + path: /builds/worker/SHA512SUMMARY + type: file + - name: public/build/SHA512SUMS + path: /builds/worker/SHA512SUMS + type: file + run: + using: mozharness + config: [] # See extra-config below + actions: [create-virtualenv, collect-individual-checksums, create-big-checksums, create-summary] + options: + - "version={version}" + - "build-number={build_number}" + script: "mozharness/scripts/release/generate-checksums.py" + treeherder: + symbol: Rel(GenChcks) + kind: test + tier: 1 + +jobs: + firefox: + shipping-product: firefox + attributes: + build_platform: firefox-release + build_type: opt + run: + extra-config: + by-release-level: + production: + stage_product: "firefox" + bucket_name: "moz-fx-productdelivery-pr-38b5-productdelivery" + staging: + stage_product: "firefox" + bucket_name: "moz-fx-productdelivery-no-7d6a-productdelivery" + treeherder: + platform: firefox-release/opt + + devedition: + shipping-product: devedition + attributes: + build_platform: devedition-release + build_type: opt + run: + extra-config: + by-release-level: + production: + stage_product: "devedition" + bucket_name: "moz-fx-productdelivery-pr-38b5-productdelivery" + staging: + stage_product: "devedition" + bucket_name: "moz-fx-productdelivery-no-7d6a-productdelivery" + treeherder: + platform: devedition-release/opt diff --git a/taskcluster/ci/release-mark-as-shipped/kind.yml b/taskcluster/ci/release-mark-as-shipped/kind.yml new file mode 100644 index 0000000000..48f64fc5c9 --- /dev/null +++ b/taskcluster/ci/release-mark-as-shipped/kind.yml @@ -0,0 +1,43 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_mark_as_shipped:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-balrog-scheduling + - release-bouncer-aliases + - release-version-bump + +job-defaults: + description: mark release as shipped in Ship-It + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-shipit + staging: scriptworker-k8s/gecko-1-shipit + worker: + implementation: shipit-shipped + scopes: + by-release-level: + production: + - project:releng:ship-it:server:production + - project:releng:ship-it:action:mark-as-shipped + staging: + - project:releng:ship-it:server:staging + - project:releng:ship-it:action:mark-as-shipped + run-on-projects: [] + shipping-phase: ship + +jobs: + firefox: + name: release-firefox_mark_as_shipped + shipping-product: firefox + + devedition: + name: release-devedition_mark_as_shipped + shipping-product: devedition diff --git a/taskcluster/ci/release-msix-push/kind.yml b/taskcluster/ci/release-msix-push/kind.yml new file mode 100644 index 0000000000..3009c74df2 --- /dev/null +++ b/taskcluster/ci/release-msix-push/kind.yml @@ -0,0 +1,45 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_msix_push:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-shippable-l10n-msix + +job-defaults: + description: Pushes msix archives to Microsoft Store + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [beta, release, release-rc] + shipping-phase: ship # note override in transform + treeherder: + platform: win32-shippable/opt + kind: build + tier: 2 + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-pushmsix + staging: scriptworker-k8s/gecko-1-pushmsix + worker: + implementation: push-msix + channel: + by-release-type: + beta: beta + release.*: release + default: mock + publish-mode: + by-release-type: + beta: Immediate + default: Manual + +jobs: + firefox: + shipping-product: firefox + treeherder: + symbol: MSIX(push) diff --git a/taskcluster/ci/release-notify-av-announce/kind.yml b/taskcluster/ci/release-notify-av-announce/kind.yml new file mode 100644 index 0000000000..c9f53efc78 --- /dev/null +++ b/taskcluster/ci/release-notify-av-announce/kind.yml @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - post-beetmover-dummy + +job-defaults: + name: notify-av-announce + description: Sends email to antivirus vendors telling them that the release is available for scanning. + run-on-projects: [] + shipping-phase: push + worker-type: succeed + worker: + implementation: succeed + notifications: + # !t is a custom format option that calls .title() on the string. + subject: "{task[shipping-product]!t} {release_config[version]} build{release_config[build_number]} release" + message: | + Company Name: Mozilla + Contact Department: Release Engineering + Contact email address: release@mozilla.com + Product information: {task[shipping-product]} {release_config[version]} + Product location: https://releases.mozilla.org/pub/{task[shipping-product]}/candidates/{release_config[version]}-candidates/build{release_config[build_number]}/ + emails: + by-project: + mozilla-(beta|release|esr.*): ["av-vendor-release-announce@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox: + shipping-product: firefox + devedition: + shipping-product: devedition diff --git a/taskcluster/ci/release-notify-promote/kind.yml b/taskcluster/ci/release-notify-promote/kind.yml new file mode 100644 index 0000000000..eee09b18b9 --- /dev/null +++ b/taskcluster/ci/release-notify-promote/kind.yml @@ -0,0 +1,38 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - post-beetmover-dummy + - release-generate-checksums-beetmover + - release-bouncer-sub + +job-defaults: + name: notify-release-drivers-promote + description: Sends email to release-drivers telling release was promoted. + run-on-projects: [] + shipping-phase: promote + worker-type: succeed + worker: + implementation: succeed + notifications: + subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory" + message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory" + emails: + by-project: + mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox: + shipping-product: firefox + devedition: + shipping-product: devedition diff --git a/taskcluster/ci/release-notify-push/kind.yml b/taskcluster/ci/release-notify-push/kind.yml new file mode 100644 index 0000000000..cc235a4fbc --- /dev/null +++ b/taskcluster/ci/release-notify-push/kind.yml @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-beetmover-push-to-release + +job-defaults: + name: notify-release-drivers-push + description: Sends email to release-drivers telling release was pushed. + run-on-projects: [] + shipping-phase: push + worker-type: succeed + worker: + implementation: succeed + notifications: + subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest" + message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest" + emails: + by-project: + mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox: + shipping-product: firefox + devedition: + shipping-product: devedition diff --git a/taskcluster/ci/release-notify-ship/kind.yml b/taskcluster/ci/release-notify-ship/kind.yml new file mode 100644 index 0000000000..7bf5df977b --- /dev/null +++ b/taskcluster/ci/release-notify-ship/kind.yml @@ -0,0 +1,43 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-balrog-scheduling + - release-bouncer-aliases + - release-version-bump + - release-mark-as-shipped + +job-defaults: + name: notify-release-drivers-ship + description: Sends email to release-drivers telling release was shipped. + run-on-projects: [] + shipping-phase: ship + worker-type: succeed + worker: + implementation: succeed + notifications: + emails: + by-project: + mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox: + shipping-product: firefox + notifications: + subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!" + message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!" + devedition: + shipping-product: devedition + notifications: + subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!" + message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!" diff --git a/taskcluster/ci/release-notify-started/kind.yml b/taskcluster/ci/release-notify-started/kind.yml new file mode 100644 index 0000000000..e7c7b8c144 --- /dev/null +++ b/taskcluster/ci/release-notify-started/kind.yml @@ -0,0 +1,32 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_started:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: notify-release-drivers-started + description: Sends email to release-drivers telling release was started. + run-on-projects: [] + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: "debian11-base"} + max-run-time: 600 + emails: + by-project: + mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox: + shipping-product: firefox + devedition: + shipping-product: devedition diff --git a/taskcluster/ci/release-partner-attribution-beetmover/kind.yml b/taskcluster/ci/release-partner-attribution-beetmover/kind.yml new file mode 100644 index 0000000000..ad6bc65c9f --- /dev/null +++ b/taskcluster/ci/release-partner-attribution-beetmover/kind.yml @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.partner_attribution_beetmover:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-attribution + +job-template: + shipping-product: firefox + shipping-phase: promote + partner-bucket-scope: + by-release-level: + production: beetmover:bucket:partner + staging: beetmover:bucket:dep-partner + partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}" + partner-private-path: "{partner}/{version}-{build_number}/{subpartner}/{platform}/{locale}" diff --git a/taskcluster/ci/release-partner-attribution/kind.yml b/taskcluster/ci/release-partner-attribution/kind.yml new file mode 100644 index 0000000000..1da2656150 --- /dev/null +++ b/taskcluster/ci/release-partner-attribution/kind.yml @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.partner_attribution:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-signing + - repackage-signing-l10n + +# move this into the single job ?? +job-defaults: + name: partner-attribution + description: Release Promotion partner attribution + run-on-projects: [] # to make sure this never runs as part of CI + shipping-product: firefox + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "partner-repack" + chain-of-trust: true + max-run-time: 1800 + run: + using: mach + mach: python python/mozrelease/mozrelease/attribute_builds.py + +jobs: + partner-attribution: + attributes: + build_platform: linux-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true diff --git a/taskcluster/ci/release-partner-repack-beetmover/kind.yml b/taskcluster/ci/release-partner-repack-beetmover/kind.yml new file mode 100644 index 0000000000..7da1f2bb15 --- /dev/null +++ b/taskcluster/ci/release-partner-repack-beetmover/kind.yml @@ -0,0 +1,31 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.beetmover_repackage_partner:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack-repackage-signing + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + +job-template: + shipping-phase: promote + partner-bucket-scope: + by-release-level: + production: beetmover:bucket:partner + staging: beetmover:bucket:dep-partner + partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}" + partner-private-path: "{partner}/{version}-{build_number}/{subpartner}/{platform}/{locale}" diff --git a/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml b/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml new file mode 100644 index 0000000000..98fa149810 --- /dev/null +++ b/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml @@ -0,0 +1,41 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.bouncer_submission_partners:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + description: release partners bouncer submission job + worker-type: bouncer + worker: + implementation: bouncer-submission + scopes: + by-release-level: + production: + - project:releng:bouncer:action:submission + - project:releng:bouncer:server:production + staging: + - project:releng:bouncer:action:submission + - project:releng:bouncer:server:staging + run-on-projects: [] + shipping-phase: promote + locales-file: browser/locales/shipped-locales + treeherder: + symbol: Rel(BncSub-P) + kind: test + tier: 1 + +jobs: + firefox: + bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64'] + bouncer-products: + by-release-type: + default: ['installer', 'stub-installer'] + esr.*: [] + shipping-product: firefox + treeherder: + platform: firefox-release/opt diff --git a/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml b/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml new file mode 100644 index 0000000000..26aa2afa51 --- /dev/null +++ b/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + # This transform sets build_platform to the same thing as the upstream task. + # We'd do it here, except single_dep doesn't pay attention to any + # per platform things that we set. + - gecko_taskgraph.transforms.copy_attributes_from_dependent_task:transforms + # This transform is needed because task.py doesn't allow "primary-dependency" to be + # set, but the single_dep loader sets it (and we need it for chunk_partners, + # name_sanity, and copy_build_platform_from_dependent_task to work). + - gecko_taskgraph.transforms.strip_dependent_task:transforms + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + +job-template: + shipping-phase: promote + shipping-product: firefox + name: release-partner-repack-chunking-dummy + description: Dummy task to deal with fanning out Linux partner repacks + run-on-projects: [] + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml b/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml new file mode 100644 index 0000000000..6857fcf67a --- /dev/null +++ b/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: partner-repack-ids + +transforms: + - gecko_taskgraph.transforms.mac_notarization:transforms + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.partner_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack-mac-signing + +only-for-build-platforms: + - macosx64-shippable/opt + +job-template: + shipping-product: firefox + shipping-phase: promote + max-run-time: 1800 + copy-repack-ids: true diff --git a/taskcluster/ci/release-partner-repack-mac-signing/kind.yml b/taskcluster/ci/release-partner-repack-mac-signing/kind.yml new file mode 100644 index 0000000000..66a51a8eac --- /dev/null +++ b/taskcluster/ci/release-partner-repack-mac-signing/kind.yml @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: partner-repack-ids + +transforms: + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.partner_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack + +only-for-build-platforms: + - macosx64-shippable/opt + +job-template: + shipping-product: firefox + shipping-phase: promote + repacks-per-chunk: 5 diff --git a/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml b/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml new file mode 100644 index 0000000000..41a08df1bb --- /dev/null +++ b/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing_partner:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack-chunking-dummy # Linux + - release-partner-repack-repackage # Windows, Mac + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt diff --git a/taskcluster/ci/release-partner-repack-repackage/kind.yml b/taskcluster/ci/release-partner-repack-repackage/kind.yml new file mode 100644 index 0000000000..6b0b1fd2c3 --- /dev/null +++ b/taskcluster/ci/release-partner-repack-repackage/kind.yml @@ -0,0 +1,57 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms + - gecko_taskgraph.transforms.chunk_partners:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_partner:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-partner-repack + - release-partner-repack-mac-signing + - release-partner-repack-mac-notarization + - toolchain + +only-for-build-platforms: + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + +job-template: + upstream-mac-kind: + by-build-type: + debug: release-partner-repack-mac-signing + default: + by-project: + mozilla-(central|beta|release|esr.*): release-partner-repack-mac-notarization + default: release-partner-repack-mac-signing + mozharness: + config: + by-build-platform: + macosx64-.*: + - repackage/base.py + - repackage/osx_partner.py + win32-.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_partner.py + win64-(?!aarch64).*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_partner.py + win64-aarch64-.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_partner.py + package-formats: + by-build-platform: + macosx64\b.*: [dmg] + win32\b.*: [installer] + win64\b.*: [installer] diff --git a/taskcluster/ci/release-partner-repack/kind.yml b/taskcluster/ci/release-partner-repack/kind.yml new file mode 100644 index 0000000000..2a5d2fc996 --- /dev/null +++ b/taskcluster/ci/release-partner-repack/kind.yml @@ -0,0 +1,87 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.partner_repack:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + - build-mac-signing + - build-mac-notarization + - shippable-l10n-signing + - shippable-l10n-mac-signing + - shippable-l10n-mac-notarization + +job-defaults: + name: partner-repack + description: Release Promotion partner repacks + run-on-projects: [] # to make sure this never runs as part of CI + shipping-product: firefox + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "partner-repack" + chain-of-trust: true + max-run-time: 7200 + run: + using: mozharness + config: + - partner_repacks/release_mozilla-release_desktop.py + script: mozharness/scripts/desktop_partner_repacks.py + job-script: taskcluster/scripts/builder/repackage.sh + tooltool-downloads: false + extra: + limit-locales: + by-release-level: + staging: true + production: false + +jobs: + linux-shippable: + attributes: + build_platform: linux-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + linux64-shippable: + attributes: + build_platform: linux64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + macosx64-shippable: + attributes: + build_platform: macosx64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + win32-shippable: + attributes: + build_platform: win32-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + win64-shippable: + attributes: + build_platform: win64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true + + win64-aarch64-shippable: + attributes: + build_platform: win64-aarch64-shippable + build_type: opt + artifact_prefix: releng/partner + shippable: true diff --git a/taskcluster/ci/release-push-langpacks/kind.yml b/taskcluster/ci/release-push-langpacks/kind.yml new file mode 100644 index 0000000000..cd46683bbb --- /dev/null +++ b/taskcluster/ci/release-push-langpacks/kind.yml @@ -0,0 +1,50 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.release_sign_and_push_langpacks:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - shippable-l10n + + +only-for-build-platforms: + - linux64-shippable/opt # addons.mozilla.org only support 1 platform per locale. That's why we use linux64 + - linux64-devedition/opt + - macosx64-shippable/opt # Although, we need the special locale "ja-JP-Mac" from this platform + - macosx64-devedition/opt + + +job-template: + description: Sends {locales} XPIs for platform to addons.mozilla.org + worker-type: addon + worker: + channel: + by-project: + mozilla-release: + by-platform: + # ja-JP-mac is only langpack on mac, and is unlisted always + macosx64.*: unlisted + default: listed + mozilla-beta: + by-platform: + # ja-JP-mac is only langpack on mac, and is unlisted always + macosx64-shippable.*: unlisted + macosx64-devedition.*: unlisted + linux.*-devedition.*: unlisted + default: listed + default: unlisted + upstream-artifacts: # See transforms + run-on-projects: [] + scopes: + by-release-level: + production: + - project:releng:addons.mozilla.org:server:production + staging: + - project:releng:addons.mozilla.org:server:staging + shipping-phase: promote diff --git a/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml b/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml new file mode 100644 index 0000000000..9a230639b9 --- /dev/null +++ b/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml @@ -0,0 +1,41 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - post-balrog-dummy + - post-beetmover-dummy + - release-secondary-balrog-submit-toplevel + +job-defaults: + run-on-projects: [] + shipping-phase: ship + worker-type: balrog + worker: + implementation: balrog + balrog-action: schedule + +jobs: + firefox-secondary-rc: + description: Schedule Beta Firefox publishing in balrog + name: release-firefox_schedule_publishing_in_balrog + shipping-product: firefox + worker: + product: firefox + release-eta: '' + channel-names: ["beta", "beta-localtest", "beta-cdntest"] + publish-rules: [32] + rules-to-update: ["firefox-beta-cdntest", "firefox-beta-localtest"] + pin-channels: ["beta"] + treeherder: + platform: firefox-release/opt + symbol: Rel(BSFxRC) + tier: 1 + kind: build diff --git a/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml b/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml new file mode 100644 index 0000000000..cc3312ecbe --- /dev/null +++ b/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml @@ -0,0 +1,46 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes + - gecko_taskgraph.transforms.balrog_toplevel:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + run-on-projects: [] # to make sure this never runs in CI + shipping-phase: promote + worker-type: balrog + worker: + implementation: balrog + balrog-action: v2-submit-toplevel + require-mirrors: false + platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"] + archive-domain: + by-release-level: + production: archive.mozilla.org + staging: ftp.stage.mozaws.net + download-domain: + by-release-level: + production: download.mozilla.org + staging: bouncer-bouncer-releng.stage.mozaws.net + whats-new-config: browser/config/whats_new_page.yml + +jobs: + firefox: + name: submit-toplevel-rc-firefox-release-to-balrog + description: submit toplevel RC Firefox release to balrog + shipping-product: firefox + worker: + product: firefox + channel-names: ["beta", "beta-localtest", "beta-cdntest"] + rules-to-update: ["firefox-beta-cdntest", "firefox-beta-localtest"] + pin-channels: ["beta-localtest", "beta-cdntest"] + treeherder: + platform: firefox-release/opt + symbol: Rel(BPFxRC) + tier: 1 + kind: build diff --git a/taskcluster/ci/release-secondary-final-verify/kind.yml b/taskcluster/ci/release-secondary-final-verify/kind.yml new file mode 100644 index 0000000000..0d2e58d01d --- /dev/null +++ b/taskcluster/ci/release-secondary-final-verify/kind.yml @@ -0,0 +1,38 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - post-balrog-dummy + - post-beetmover-dummy + - release-secondary-balrog-submit-toplevel + - release-secondary-update-verify-config + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.final_verify:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: secondary-final-verify + run-on-projects: [] # to make sure this never runs as part of CI + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "update-verify" + max-run-time: 7200 + retry-exit-status: [1] + +jobs: + firefox: + description: secondary final verify + shipping-phase: promote + shipping-product: firefox + treeherder: + platform: firefox-release/opt + kind: test + symbol: Rel(FVS) + tier: 1 diff --git a/taskcluster/ci/release-secondary-flatpak-push/kind.yml b/taskcluster/ci/release-secondary-flatpak-push/kind.yml new file mode 100644 index 0000000000..379f2326dd --- /dev/null +++ b/taskcluster/ci/release-secondary-flatpak-push/kind.yml @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_flatpak_push:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-flatpak-repackage + +job-defaults: + description: Pushes Flatpaks onto Flathub + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [release-rc] + shipping-phase: ship # ship-rc phase + treeherder: + platform: linux64/opt + kind: build + tier: 2 + worker-type: + by-release-level: + production: scriptworker-k8s/gecko-3-pushflatpak + staging: scriptworker-k8s/gecko-1-pushflatpak + worker: + implementation: push-flatpak + channel: beta + +jobs: + firefox-rc: + shipping-product: firefox + treeherder: + symbol: Flatpak(push-beta) diff --git a/taskcluster/ci/release-secondary-notify-ship/kind.yml b/taskcluster/ci/release-secondary-notify-ship/kind.yml new file mode 100644 index 0000000000..ec70aa13ac --- /dev/null +++ b/taskcluster/ci/release-secondary-notify-ship/kind.yml @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-secondary-balrog-scheduling + +job-defaults: + name: notify-release-drivers-ship + description: Sends email to release-drivers telling release was shipped. + run-on-projects: [] + shipping-phase: ship + worker-type: succeed + worker: + implementation: succeed + notifications: + emails: + by-project: + mozilla-beta: ["release-signoff@mozilla.org"] + mozilla-release: ["release-signoff@mozilla.org"] + try: ["{config[params][owner]}"] + default: [] + +jobs: + firefox-rc: + shipping-product: firefox + notifications: + subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} RC updates are ready!" + message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} RC updates are ready!" diff --git a/taskcluster/ci/release-secondary-update-verify-config/kind.yml b/taskcluster/ci/release-secondary-update-verify-config/kind.yml new file mode 100644 index 0000000000..7e28131a5e --- /dev/null +++ b/taskcluster/ci/release-secondary-update-verify-config/kind.yml @@ -0,0 +1,124 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.update_verify_config:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: secondary-update-verify-config + run-on-projects: [] # to make sure this never runs as part of CI + shipping-product: firefox + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "update-verify" + max-run-time: 3600 + artifacts: + - name: public/build/update-verify.cfg + path: /builds/worker/checkouts/gecko/update-verify.cfg + type: file + run: + sparse-profile: mozharness + extra: + app-name: browser + branch-prefix: mozilla + product: firefox + archive-prefix: + by-release-level: + staging: "http://ftp.stage.mozaws.net/pub" + production: "https://archive.mozilla.org/pub" + previous-archive-prefix: + by-release-level: + staging: "https://archive.mozilla.org/pub" + production: null + aus-server: + by-release-level: + staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net" + production: "https://aus5.mozilla.org" + override-certs: + by-release-level: + staging: dep + production: null + include-version: beta + last-watershed: "72.0.2" + mar-channel-id-override: beta + channel: "beta-localtest" + +jobs: + firefox-secondary-linux: + treeherder: + symbol: UVCS + platform: linux-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: linux-shippable + extra: + platform: linux-i686 + updater-platform: linux-x86_64 + + firefox-secondary-linux64: + treeherder: + symbol: UVCS + platform: linux64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: linux64-shippable + extra: + platform: linux-x86_64 + updater-platform: linux-x86_64 + + firefox-secondary-macosx64: + treeherder: + symbol: UVCS + platform: macosx64/opt + kind: test + tier: 1 + attributes: + build_platform: macosx64-shippable + extra: + platform: mac + updater-platform: linux-x86_64 + + firefox-secondary-win32: + treeherder: + symbol: UVCS + platform: windows2012-32-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win32-shippable + extra: + platform: win32 + updater-platform: linux-x86_64 + + firefox-secondary-win64: + treeherder: + symbol: UVCS + platform: windows2012-64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win64-shippable + extra: + platform: win64 + updater-platform: linux-x86_64 + + firefox-secondary-win64-aarch64: + treeherder: + symbol: UVCS + platform: windows2012-aarch64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win64-aarch64-shippable + extra: + platform: win64-aarch64 + updater-platform: linux-x86_64 diff --git a/taskcluster/ci/release-secondary-update-verify/kind.yml b/taskcluster/ci/release-secondary-update-verify/kind.yml new file mode 100644 index 0000000000..f567cf7ae3 --- /dev/null +++ b/taskcluster/ci/release-secondary-update-verify/kind.yml @@ -0,0 +1,77 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - post-balrog-dummy + - post-beetmover-dummy + - release-secondary-balrog-submit-toplevel + - release-secondary-update-verify-config + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.update_verify:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: secondary-update-verify + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: promote + worker-type: b-linux-gcp + worker: + artifacts: + - name: 'public/build/diff-summary.log' + path: '/builds/worker/tools/release/updates/diff-summary.log' + type: file + docker-image: + in-tree: "update-verify" + max-run-time: 7200 + retry-exit-status: + - 255 + treeherder: + symbol: UV(UVS) + kind: test + extra: + chunks: 16 + +jobs: + firefox-secondary-linux64: + description: linux64 secondary channel update verify + shipping-product: firefox + attributes: + build_platform: linux64-shippable + + firefox-secondary-linux: + description: linux secondary channel update verify + shipping-product: firefox + attributes: + build_platform: linux-shippable + + firefox-secondary-win64: + description: win64 secondary channel update verify + shipping-product: firefox + attributes: + build_platform: win64-shippable + + firefox-secondary-win64-aarch64: + description: win64 secondary channel update verify + shipping-product: firefox + attributes: + build_platform: win64-aarch64-shippable + + firefox-secondary-win32: + description: win32 secondary channel update verify + shipping-product: firefox + attributes: + build_platform: win32-shippable + + firefox-secondary-macosx64: + description: macosx64 secondary channel update verify + shipping-product: firefox + attributes: + build_platform: macosx64-shippable + extra: + chunks: 30 diff --git a/taskcluster/ci/release-snap-repackage/kind.yml b/taskcluster/ci/release-snap-repackage/kind.yml new file mode 100644 index 0000000000..73d9d8a410 --- /dev/null +++ b/taskcluster/ci/release-snap-repackage/kind.yml @@ -0,0 +1,60 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_snap_repackage:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - post-beetmover-dummy + - post-langpack-dummy + +job-defaults: + description: Generates snap image + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: promote + scopes: [] + treeherder: + platform: linux64-shippable/opt + kind: build + tier: 2 + worker-type: b-linux-gcp + worker: + implementation: docker-worker + os: linux + max-run-time: 7200 + docker-image: {in-tree: firefox-snap} + artifacts: + - name: public/build + type: directory + path: /home/worker/artifacts/ + command: + - /bin/bash + - -cx + - ./runme.sh + env: + VERSION: "{release_config[version]}" + BUILD_NUMBER: "{release_config[build_number]}" + CANDIDATES_DIR: + by-release-level: + staging: + https://ftp.stage.mozaws.net/pub/{task[shipping-product]}/candidates + production: + https://archive.mozilla.org/pub/{task[shipping-product]}/candidates + LC_ALL: C.UTF-8 + LANG: C.UTF-8 + L10N_CHANGESETS: "{config_params[head_repository]}/raw-file/{config_params[head_rev]}/browser/locales/l10n-changesets.json" + chain-of-trust: true + +jobs: + firefox: + shipping-product: firefox + attributes: + build_platform: linux64-shippable + build_type: opt + treeherder: + symbol: Snap(r) diff --git a/taskcluster/ci/release-source-checksums-signing/kind.yml b/taskcluster/ci/release-source-checksums-signing/kind.yml new file mode 100644 index 0000000000..379aff10bc --- /dev/null +++ b/taskcluster/ci/release-source-checksums-signing/kind.yml @@ -0,0 +1,16 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.source_checksums_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - beetmover-source + +job-template: + shipping-phase: promote diff --git a/taskcluster/ci/release-source-signing/kind.yml b/taskcluster/ci/release-source-signing/kind.yml new file mode 100644 index 0000000000..2b6c3376ab --- /dev/null +++ b/taskcluster/ci/release-source-signing/kind.yml @@ -0,0 +1,17 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.build_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-source + +job-template: + shipping-phase: promote diff --git a/taskcluster/ci/release-source/kind.yml b/taskcluster/ci/release-source/kind.yml new file mode 100644 index 0000000000..6b550e9d7e --- /dev/null +++ b/taskcluster/ci/release-source/kind.yml @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + + +job-defaults: + shipping-phase: promote + treeherder: + symbol: Src + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + env: + PKG_SRCPACK_BASENAME: source + attributes: + shippable: true + run: + using: mozharness + actions: [package-source] + script: "mozharness/scripts/fx_desktop_build.py" + config: + - builds/releng_sub_linux_configs/64_source.py + options: [] + tooltool-downloads: public + run-on-projects: [] + # The build_attrs transform defaults to setting a `skip-unlles-schedules' + # optimization based on the task label. The tasks here don't have corresponding + # schedules defined in mozbuild. + optimization: null + +jobs: + firefox-source/opt: + description: "Firefox source builder" + treeherder: + platform: firefox-release/opt + shipping-product: firefox + + devedition-source/opt: + description: "Devedition source builder" + treeherder: + platform: devedition-release/opt + shipping-product: devedition diff --git a/taskcluster/ci/release-update-verify-config-next/kind.yml b/taskcluster/ci/release-update-verify-config-next/kind.yml new file mode 100644 index 0000000000..959d0afb9a --- /dev/null +++ b/taskcluster/ci/release-update-verify-config-next/kind.yml @@ -0,0 +1,98 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.update_verify_config:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: update-verify-config-next + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [esr115] + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "update-verify" + max-run-time: 3600 + artifacts: + - name: public/build/update-verify.cfg + path: /builds/worker/checkouts/gecko/update-verify.cfg + type: file + run: + sparse-profile: mozharness + treeherder: + symbol: UVCnext + kind: test + tier: 1 + extra: + app-name: browser + branch-prefix: mozilla + archive-prefix: + by-release-level: + staging: "http://ftp.stage.mozaws.net/pub" + production: "https://archive.mozilla.org/pub" + previous-archive-prefix: + by-release-level: + staging: "https://archive.mozilla.org/pub" + production: null + aus-server: + by-release-level: + staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net" + production: "https://aus5.mozilla.org" + override-certs: + by-release-level: + staging: dep + production: null + updater-platform: linux-x86_64 + product: firefox + channel: "esr-localtest-next" + include-version: esr115-next + last-watershed: "68.0esr" + +jobs: + firefox-next-linux: + shipping-product: firefox + treeherder: + platform: linux32-shippable/opt + attributes: + build_platform: linux-shippable + extra: + platform: linux-i686 + firefox-next-linux64: + shipping-product: firefox + treeherder: + platform: linux64-shippable/opt + attributes: + build_platform: linux64-shippable + extra: + platform: linux-x86_64 + firefox-next-macosx64: + shipping-product: firefox + treeherder: + platform: osx-shippable/opt + attributes: + build_platform: macosx64-shippable + extra: + platform: mac + firefox-next-win32: + shipping-product: firefox + treeherder: + platform: windows2012-32-shippable/opt + attributes: + build_platform: win32-shippable + extra: + platform: win32 + firefox-next-win64: + shipping-product: firefox + treeherder: + platform: windows2012-64-shippable/opt + attributes: + build_platform: win64-shippable + extra: + platform: win64 diff --git a/taskcluster/ci/release-update-verify-config/kind.yml b/taskcluster/ci/release-update-verify-config/kind.yml new file mode 100644 index 0000000000..d4e40cda12 --- /dev/null +++ b/taskcluster/ci/release-update-verify-config/kind.yml @@ -0,0 +1,292 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.update_verify_config:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: update-verify-config + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: "update-verify" + max-run-time: 3600 + artifacts: + - name: public/build/update-verify.cfg + path: /builds/worker/checkouts/gecko/update-verify.cfg + type: file + run: + sparse-profile: mozharness + extra: + app-name: browser + branch-prefix: mozilla + archive-prefix: + by-release-level: + staging: "http://ftp.stage.mozaws.net/pub" + production: "https://archive.mozilla.org/pub" + previous-archive-prefix: + by-release-level: + staging: "https://archive.mozilla.org/pub" + production: null + aus-server: + by-release-level: + staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net" + production: "https://aus5.mozilla.org" + override-certs: + by-release-level: + staging: dep + production: null + include-version: + by-release-type: + beta: beta + release(-rc)?: nonbeta + esr.*: esr + default: beta + last-watershed: + by-release-type: + beta: "72.0" + release(-rc)?: "72.0.2" + esr115: "68.0esr" + default: "default" + +jobs: + firefox-linux: + shipping-product: firefox + treeherder: + symbol: UVC + platform: linux32-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: linux-shippable + extra: + product: firefox + platform: linux-i686 + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + firefox-linux64: + shipping-product: firefox + treeherder: + symbol: UVC + platform: linux64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: linux64-shippable + extra: + product: firefox + platform: linux-x86_64 + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + firefox-macosx64: + shipping-product: firefox + treeherder: + symbol: UVC + platform: osx-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: macosx64-shippable + extra: + product: firefox + platform: mac + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + firefox-win32: + shipping-product: firefox + treeherder: + symbol: UVC + platform: windows2012-32-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win32-shippable + extra: + product: firefox + platform: win32 + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + firefox-win64: + shipping-product: firefox + treeherder: + symbol: UVC + platform: windows2012-64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win64-shippable + extra: + product: firefox + platform: win64 + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + firefox-win64-aarch64: + shipping-product: firefox + treeherder: + symbol: UVC + platform: windows2012-aarch64-shippable/opt + kind: test + tier: 1 + attributes: + build_platform: win64-aarch64-shippable + extra: + product: firefox + platform: win64-aarch64 + updater-platform: linux-x86_64 + channel: + by-release-type: + beta: "beta-localtest" + release(-rc)?: "release-localtest" + esr.*: "esr-localtest" + default: "default" + mar-channel-id-override: + by-release-type: + beta: beta + default: null + + devedition-linux: + shipping-product: devedition + treeherder: + symbol: UVC + platform: linux32-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: linux-devedition + extra: + product: firefox + platform: linux-i686 + updater-platform: linux-x86_64 + channel: "aurora-localtest" + + devedition-linux64: + shipping-product: devedition + treeherder: + symbol: UVC + platform: linux64-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: linux64-devedition + extra: + product: firefox + platform: linux-x86_64 + updater-platform: linux-x86_64 + channel: "aurora-localtest" + + devedition-macosx64: + shipping-product: devedition + treeherder: + symbol: UVC + platform: osx-cross-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: macosx64-devedition + extra: + product: firefox + platform: mac + updater-platform: linux-x86_64 + channel: "aurora-localtest" + + devedition-win32: + shipping-product: devedition + treeherder: + symbol: UVC + platform: windows2012-32-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: win32-devedition + extra: + product: firefox + platform: win32 + updater-platform: linux-x86_64 + channel: "aurora-localtest" + + devedition-win64: + shipping-product: devedition + treeherder: + symbol: UVC + platform: windows2012-64-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: win64-devedition + extra: + product: firefox + platform: win64 + updater-platform: linux-x86_64 + channel: "aurora-localtest" + + devedition-win64-aarch64: + shipping-product: devedition + treeherder: + symbol: UVC + platform: windows2012-aarch64-devedition/opt + kind: test + tier: 1 + attributes: + build_platform: win64-aarch64-devedition + extra: + product: firefox + platform: win64-aarch64 + updater-platform: linux-x86_64 + channel: "aurora-localtest" diff --git a/taskcluster/ci/release-update-verify-next/kind.yml b/taskcluster/ci/release-update-verify-next/kind.yml new file mode 100644 index 0000000000..ad72e9b118 --- /dev/null +++ b/taskcluster/ci/release-update-verify-next/kind.yml @@ -0,0 +1,73 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - post-balrog-dummy + - post-beetmover-dummy + - release-balrog-submit-toplevel + - release-update-verify-config-next + +transforms: + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.update_verify:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: update-verify-next + run-on-projects: [] # to make sure this never runs as part of CI + run-on-releases: [esr115] + shipping-phase: promote + worker-type: b-linux-gcp + worker: + artifacts: + - name: 'public/build/diff-summary.log' + path: '/builds/worker/tools/release/updates/diff-summary.log' + type: file + docker-image: + in-tree: "update-verify" + max-run-time: 7200 + retry-exit-status: + - 255 + env: + CHANNEL: "esr-localtest-next" + treeherder: + symbol: UVnext() + kind: test + extra: + chunks: 12 + +jobs: + firefox-next-linux64: + description: linux64 esr-next update verify + shipping-product: firefox + attributes: + build_platform: linux64-shippable + + firefox-next-linux: + description: linux esr-next update verify + shipping-product: firefox + attributes: + build_platform: linux-shippable + + firefox-next-win64: + description: win64 esr-next update verify + shipping-product: firefox + attributes: + build_platform: win64-shippable + + firefox-next-win32: + description: win32 esr-next update verify + shipping-product: firefox + attributes: + build_platform: win32-shippable + + firefox-next-macosx64: + description: macosx64 esr-next update verify + shipping-product: firefox + attributes: + build_platform: macosx64-shippable diff --git a/taskcluster/ci/release-update-verify/kind.yml b/taskcluster/ci/release-update-verify/kind.yml new file mode 100644 index 0000000000..ec7f9874da --- /dev/null +++ b/taskcluster/ci/release-update-verify/kind.yml @@ -0,0 +1,115 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - post-balrog-dummy + - post-beetmover-dummy + - release-balrog-submit-toplevel + - release-update-verify-config + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.update_verify:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: update-verify + run-on-projects: [] # to make sure this never runs as part of CI + shipping-phase: promote + worker-type: b-linux-gcp + worker: + artifacts: + - name: 'public/build/diff-summary.log' + path: '/builds/worker/checkouts/gecko/diff-summary.log' + type: file + docker-image: + in-tree: "update-verify" + max-run-time: 5400 + retry-exit-status: + - 255 + treeherder: + symbol: UV() + kind: test + extra: + chunks: 16 + +jobs: + firefox-linux64: + description: linux64 update verify + shipping-product: firefox + attributes: + build_platform: linux64-shippable + + firefox-linux: + description: linux update verify + shipping-product: firefox + attributes: + build_platform: linux-shippable + + firefox-win64: + description: win64 update verify + shipping-product: firefox + attributes: + build_platform: win64-shippable + + firefox-win64-aarch64: + description: win64-aarch64 update verify + shipping-product: firefox + attributes: + build_platform: win64-aarch64-shippable + + firefox-win32: + description: win32 update verify + shipping-product: firefox + attributes: + build_platform: win32-shippable + + firefox-macosx64: + description: macosx64 update verify + shipping-product: firefox + attributes: + build_platform: macosx64-shippable + extra: + chunks: 30 + + devedition-linux64: + description: linux64 update verify + shipping-product: devedition + attributes: + build_platform: linux64-devedition + + devedition-linux: + description: linux update verify + shipping-product: devedition + attributes: + build_platform: linux-devedition + + devedition-win64: + description: win64 update verify + shipping-product: devedition + attributes: + build_platform: win64-devedition + + devedition-win64-aarch64: + description: win64-aarch64 update verify + shipping-product: devedition + attributes: + build_platform: win64-aarch64-devedition + + devedition-win32: + description: win32 update verify + shipping-product: devedition + attributes: + build_platform: win32-devedition + + devedition-macosx64: + description: macosx64 update verify + shipping-product: devedition + attributes: + build_platform: macosx64-devedition + extra: + chunks: 30 diff --git a/taskcluster/ci/release-version-bump/kind.yml b/taskcluster/ci/release-version-bump/kind.yml new file mode 100644 index 0000000000..be1d9cd85f --- /dev/null +++ b/taskcluster/ci/release-version-bump/kind.yml @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.release_deps:transforms + - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - release-beetmover-push-to-release + +job-defaults: + description: Release Promotion version bump/tag + run-on-projects: [] + shipping-phase: ship + worker-type: tree + worker: + implementation: treescript + dontbuild: true + tags: ['release'] + bump: true + bump-files: + by-project: + default: ["browser/config/version_display.txt"] + mozilla-(release|esr.*): + - "browser/config/version.txt" + - "browser/config/version_display.txt" + - "config/milestone.txt" + maple: + - "browser/config/version.txt" + - "browser/config/version_display.txt" + - "config/milestone.txt" + push: + by-project: + mozilla-(beta|release|esr.*): true + maple: true + default: false + +jobs: + firefox: + name: firefox-version-bump + shipping-product: firefox + treeherder: + platform: firefox-release/opt + symbol: Rel(VerBump) + tier: 1 + kind: build + + devedition: + name: devedition-version-bump + shipping-product: devedition + treeherder: + platform: devedition-release/opt + symbol: Rel(VerBump) + tier: 1 + kind: build diff --git a/taskcluster/ci/repackage-deb-l10n/kind.yml b/taskcluster/ci/repackage-deb-l10n/kind.yml new file mode 100644 index 0000000000..f1011faea0 --- /dev/null +++ b/taskcluster/ci/repackage-deb-l10n/kind.yml @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.repackage_l10n:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.repackage_routes:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - shippable-l10n-signing + +only-for-build-platforms: + # Langpacks support all CPU architectures. We just need to pick one + - linux64-devedition/opt + - linux64-shippable/opt + +job-template: + worker-type: b-linux-gcp + worker: + docker-image: {"in-tree": "debian11-repackage"} + max-run-time: 600 + mozharness: + run-as-root: true + use-caches: false + config: + by-build-platform: + linux64\b.*: + - repackage/base.py + - repackage/linux64_signed.py + package-formats: + by-build-platform: + linux.*: [deb-l10n] + treeherder-group: deb-L10n diff --git a/taskcluster/ci/repackage-deb/kind.yml b/taskcluster/ci/repackage-deb/kind.yml new file mode 100644 index 0000000000..02955cffdb --- /dev/null +++ b/taskcluster/ci/repackage-deb/kind.yml @@ -0,0 +1,49 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.repackage_routes:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + - toolchain + +only-for-build-platforms: + - linux-shippable/opt + - linux-devedition/opt + - linux64-shippable/opt + - linux64-devedition/opt + +only-for-attributes: + - nightly + - shippable + +job-template: + shipping-phase: promote + worker-type: b-linux-gcp + worker: + docker-image: + in-tree: debian11-repackage + mozharness: + run-as-root: true + use-caches: false + config: + by-build-platform: + linux\b.*: + - repackage/base.py + - repackage/linux32_signed.py + linux64\b.*: + - repackage/base.py + - repackage/linux64_signed.py + treeherder: + symbol: Rpk-deb + package-formats: + by-build-platform: + linux.*: [deb] diff --git a/taskcluster/ci/repackage-l10n/kind.yml b/taskcluster/ci/repackage-l10n/kind.yml new file mode 100644 index 0000000000..35bda48d85 --- /dev/null +++ b/taskcluster/ci/repackage-l10n/kind.yml @@ -0,0 +1,78 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms + - gecko_taskgraph.transforms.repackage_l10n:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - shippable-l10n-signing + - shippable-l10n-mac-signing + - shippable-l10n-mac-notarization + - toolchain + +only-for-build-platforms: + - linux-shippable/opt + - linux64-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - linux-devedition/opt + - linux64-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + +job-template: + upstream-mac-kind: + by-build-type: + debug: shippable-l10n-mac-signing + default: + by-project: + mozilla-(central|beta|release|esr.*): shippable-l10n-mac-notarization + default: shippable-l10n-mac-signing + worker-type: b-linux-gcp + mozharness: + config: + by-build-platform: + linux-.*: + - repackage/base.py + - repackage/linux32_signed.py + linux64-.*: + - repackage/base.py + - repackage/linux64_signed.py + macosx64-.*: + - repackage/base.py + - repackage/osx_signed.py + win32\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_signed.py + win64(?!-aarch64)\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_signed.py + win64-aarch64\b.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_signed.py + package-formats: + by-build-platform: + linux.*: [mar] + macosx64\b.*: [mar, dmg, pkg] + win32\b.*: [mar, installer] + win64\b.*: [mar, installer] + fetches: + toolchain: + - linux64-mar-tools + - linux64-upx + treeherder-group: L10n-Rpk diff --git a/taskcluster/ci/repackage-msi/kind.yml b/taskcluster/ci/repackage-msi/kind.yml new file mode 100644 index 0000000000..0a43b0762b --- /dev/null +++ b/taskcluster/ci/repackage-msi/kind.yml @@ -0,0 +1,45 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-signing + - repackage-signing-l10n + - fetch + +only-for-build-platforms: + - win32-shippable/opt + - win64-shippable/opt + - win32-devedition/opt + - win64-devedition/opt + +job-template: + worker-type: 'b-win2012' + mozharness: + use-magic-mh-args: false + config: + by-build-platform: + win32\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_signed.py + win64(?!-aarch64)\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_signed.py + win64-aarch64\b.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_signed.py + package-formats: [msi] + fetches: + fetch: + - wix-3.14.0 diff --git a/taskcluster/ci/repackage-msix/kind.yml b/taskcluster/ci/repackage-msix/kind.yml new file mode 100644 index 0000000000..3beb75e292 --- /dev/null +++ b/taskcluster/ci/repackage-msix/kind.yml @@ -0,0 +1,105 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + # We're going to generate tasks based on this. We `depend` on and fetch the package from this. + - build-signing + - toolchain + +group-by: platform + +only-for-build-platforms: + - win32/opt + - win64/opt + - win64/debug + - win32-shippable/opt + - win64-shippable/opt + - win32-devedition/opt + - win64-devedition/opt + +job-template: + worker-type: b-linux-gcp + worker: + max-run-time: 2700 + # This is for fast try iteration; `repackage-shippable-l10n-msix` is the "real one". + run-on-projects: [] + mozharness: + config: + by-build-platform: + win32\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_signed.py + win64(?!-aarch64)\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_signed.py + win64-aarch64\b.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_signed.py + package-formats: [msix, msix-store] + fetches: + toolchain: + - linux64-msix-packaging + msix: + vendor: Mozilla + channel: + by-shipping-product: + devedition: aurora + default: + by-release-type: + beta.*: beta + release.*: official + esr.*: official + default: nightly + identity-name: + by-shipping-product: + devedition: + by-package-format: + msix: MozillaFirefoxDevedition + msix-store: FirefoxDevedition + default: + by-package-format: + msix: + by-release-type: + beta.*: MozillaFirefoxBeta + release.*: MozillaFirefox + esr.*: MozillaFirefox + default: MozillaFirefoxNightly + msix-store: + by-release-type: + beta.*: FirefoxBeta + release.*: Firefox + esr.*: Firefox + default: FirefoxNightly + publisher: + by-package-format: + msix-store: "CN=082E9164-EE6C-4EC8-B62C-441FAE7BEFA1" + msix: + by-level: + "1": "CN=Mozilla Fake SPC" + "2": "CN=Mozilla Fake SPC" + default: + # This value needs to line up with the signing certificate + # we're going to sign with. We only sign potential release + # or nightly builds with proper certificates, so even on + # level 3 repositories, some build types are expected to + # be signed with our fake certificate. + by-build-platform: + .*-shippable: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US" + .*-devedition: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US" + default: "CN=Mozilla Fake SPC" + publisher-display-name: + by-package-format: + msix: "Mozilla Corporation" + msix-store: "Mozilla" diff --git a/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml b/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml new file mode 100644 index 0000000000..cc4936f8ec --- /dev/null +++ b/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml @@ -0,0 +1,106 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + # We're going to generate tasks based on this. We `depend` on and fetch the package from this. + - build-signing + # We're not going to generate tasks based on these. But we are going to `depend` on and fetch + # langpacks from these. + - shippable-l10n-signing + - toolchain + +not-for-kind-dependencies: + - shippable-l10n-signing + +group-by: platform + +only-for-build-platforms: + - win32-shippable/opt + - win64-shippable/opt + - win32-devedition/opt + - win64-devedition/opt + +job-template: + worker-type: b-linux-gcp + worker: + max-run-time: 2700 + mozharness: + config: + by-build-platform: + win32\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_signed.py + win64(?!-aarch64)\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_signed.py + win64-aarch64\b.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_signed.py + package-formats: [msix, msix-store] + fetches: + toolchain: + - linux64-msix-packaging + msix: + vendor: Mozilla + channel: + by-shipping-product: + devedition: aurora + default: + by-release-type: + beta.*: beta + release.*: official + esr.*: official + default: nightly + identity-name: + by-shipping-product: + devedition: + by-package-format: + msix: MozillaFirefoxDevedition + msix-store: FirefoxDevedition + default: + by-package-format: + msix: + by-release-type: + beta.*: MozillaFirefoxBeta + release.*: MozillaFirefox + esr.*: MozillaFirefox + default: MozillaFirefoxNightly + msix-store: + by-release-type: + beta.*: FirefoxBeta + release.*: Firefox + esr.*: Firefox + default: FirefoxNightly + publisher: + by-package-format: + msix-store: "CN=082E9164-EE6C-4EC8-B62C-441FAE7BEFA1" + msix: + by-level: + "1": "CN=Mozilla Fake SPC" + "2": "CN=Mozilla Fake SPC" + default: + # This value needs to line up with the signing certificate + # we're going to sign with. We only sign potential release + # or nightly builds with proper certificates, so even on + # level 3 repositories, some build types are expected to + # be signed with our fake certificate. + by-build-platform: + .*-shippable: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US" + .*-devedition: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US" + default: "CN=Mozilla Fake SPC" + publisher-display-name: + by-package-format: + msix: "Mozilla Corporation" + msix-store: "Mozilla" diff --git a/taskcluster/ci/repackage-signing-l10n/kind.yml b/taskcluster/ci/repackage-signing-l10n/kind.yml new file mode 100644 index 0000000000..a80d79fa51 --- /dev/null +++ b/taskcluster/ci/repackage-signing-l10n/kind.yml @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing:transforms + - gecko_taskgraph.transforms.repackage_routes:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-l10n + +only-for-build-platforms: + - win32-shippable/opt + - win32-devedition/opt + - win32/opt + - win64-shippable/opt + - win64-devedition/opt + - win64/opt + - win64-aarch64-shippable/opt + - win64-aarch64-devedition/opt + - win64-asan-reporter-shippable/opt diff --git a/taskcluster/ci/repackage-signing-msi/kind.yml b/taskcluster/ci/repackage-signing-msi/kind.yml new file mode 100644 index 0000000000..149c54e8c2 --- /dev/null +++ b/taskcluster/ci/repackage-signing-msi/kind.yml @@ -0,0 +1,21 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-msi + +only-for-build-platforms: + - win32-shippable/opt + - win32-devedition/opt + - win32/opt + - win64-shippable/opt + - win64-devedition/opt + - win64/opt diff --git a/taskcluster/ci/repackage-signing-msix/kind.yml b/taskcluster/ci/repackage-signing-msix/kind.yml new file mode 100644 index 0000000000..38604e8375 --- /dev/null +++ b/taskcluster/ci/repackage-signing-msix/kind.yml @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-msix diff --git a/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml b/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml new file mode 100644 index 0000000000..e4e1fd841f --- /dev/null +++ b/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage-shippable-l10n-msix diff --git a/taskcluster/ci/repackage-signing/kind.yml b/taskcluster/ci/repackage-signing/kind.yml new file mode 100644 index 0000000000..239f3fdc11 --- /dev/null +++ b/taskcluster/ci/repackage-signing/kind.yml @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage_signing:transforms + - gecko_taskgraph.transforms.repackage_routes:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - repackage + +only-for-build-platforms: + - win32-devedition/opt + - win32-shippable/opt + - win64-devedition/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - win64-aarch64-devedition/opt + - win64-asan-reporter-shippable/opt diff --git a/taskcluster/ci/repackage/kind.yml b/taskcluster/ci/repackage/kind.yml new file mode 100644 index 0000000000..a7feed7fdb --- /dev/null +++ b/taskcluster/ci/repackage/kind.yml @@ -0,0 +1,90 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.repackage:transforms + - gecko_taskgraph.transforms.repackage_routes:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build-signing + - build-mac-signing + - build-mac-notarization + - toolchain + +only-for-build-platforms: + - linux-shippable/opt + - linux-devedition/opt + - linux/opt + - linux64-shippable/opt + - linux64-devedition/opt + - linux64-asan-reporter-shippable/opt + - linux64/opt + - macosx64-shippable/opt + - macosx64-devedition/opt + - macosx64/opt + - macosx64/debug + - win32-shippable/opt + - win32-devedition/opt + - win32/opt + - win64-shippable/opt + - win64-devedition/opt + - win64-aarch64-shippable/opt + - win64-aarch64-devedition/opt + - win64/opt + - win64-asan-reporter-shippable/opt + +job-template: + upstream-mac-kind: + by-build-type: + debug: build-mac-signing + default: + by-project: + mozilla-(central|beta|release|esr.*): build-mac-notarization + default: build-mac-signing + worker-type: b-linux-gcp + worker: + max-run-time: + by-build-platform: + .*asan.*: 2700 + default: 900 + mozharness: + config: + by-build-platform: + linux\b.*: + - repackage/base.py + - repackage/linux32_signed.py + linux64\b.*: + - repackage/base.py + - repackage/linux64_signed.py + macosx64\b.*: + - repackage/base.py + - repackage/osx_signed.py + win32\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win32_signed.py + win64(?!-aarch64)\b.*: + - repackage/base.py + - repackage/win32_sfx_stub.py + - repackage/win64_signed.py + win64-aarch64\b.*: + - repackage/base.py + - repackage/win64-aarch64_sfx_stub.py + - repackage/win64_signed.py + package-formats: + by-build-platform: + linux.*: [mar] + macosx64\b.*: [mar, dmg, pkg] + win32\b.*: [mar, installer] + win64\b.*: [mar, installer] + fetches: + toolchain: + - linux64-mar-tools + - linux64-upx diff --git a/taskcluster/ci/repo-update/kind.yml b/taskcluster/ci/repo-update/kind.yml new file mode 100644 index 0000000000..4c14c1ea42 --- /dev/null +++ b/taskcluster/ci/repo-update/kind.yml @@ -0,0 +1,70 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.repo_update:transforms + - gecko_taskgraph.transforms.task:transforms + + +job-defaults: + worker: + env: + DO_HSTS: + by-project: + mozilla-(central|beta|esr.*): "1" + default: "" + DO_HPKP: + by-project: + mozilla-(central|beta|esr.*): "1" + default: "" + DO_REMOTE_SETTINGS: + by-project: + mozilla-(central|beta|release|esr.*): "1" + default: "" + DO_SUFFIX_LIST: + by-project: + mozilla-(central|beta|esr.*): "1" + default: "" + USE_MOZILLA_CENTRAL: + by-project: + mozilla-central: "1" + default: "" + + +jobs: + hsts-hpkp-blocklist: + name: periodic_file_update + description: HSTS, HPKP and remote settings update + run-on-projects: [] # Only run via cron + treeherder: + kind: build + platform: linux64/opt + symbol: pfu + tier: 1 + worker-type: b-linux-xlarge-gcp + worker: + implementation: docker-worker + os: linux + docker-image: {in-tree: periodic-updates} + max-run-time: 14400 # Takes up to 4 hours + env: + PRODUCT: firefox + REVIEWERS: "#release-managers" + command: + - /runme.sh + taskcluster-proxy: true + artifacts: + - name: 'public/build/nsSTSPreloadList.diff' + path: '/home/worker/artifacts/nsSTSPreloadList.diff' + type: file + - name: 'public/build/StaticHPKPins.h.diff' + path: '/home/worker/artifacts/StaticHPKPins.h.diff' + type: file + - name: 'public/build/remote-settings.diff' + path: '/home/worker/artifacts/remote-settings.diff' + type: file + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/arc-phabricator-token diff --git a/taskcluster/ci/scriptworker-canary/kind.yml b/taskcluster/ci/scriptworker-canary/kind.yml new file mode 100644 index 0000000000..a1ee225b89 --- /dev/null +++ b/taskcluster/ci/scriptworker-canary/kind.yml @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.scriptworker_canary:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + treeherder: + platform: firefox-release/opt + tier: 1 + kind: build + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: push-to-try} + max-run-time: 1800 + env: + MOZBUILD_STATE_PATH: /builds/worker/workspace + run: + sparse-profile: push-to-try + +jobs: + push: + description: Push scriptworker canary tasks. + treeherder: + symbol: Rel(push-scriptworker-canary) + run-on-projects: [mozilla-central] + addresses: ['release+scriptworker-canary@mozilla.com'] + ssh-key-secret: project/releng/scriptworker/scriptworker-canary-sshkey diff --git a/taskcluster/ci/searchfox/kind.yml b/taskcluster/ci/searchfox/kind.yml new file mode 100644 index 0000000000..0cc84b8716 --- /dev/null +++ b/taskcluster/ci/searchfox/kind.yml @@ -0,0 +1,184 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - fetch + +transforms: + - gecko_taskgraph.transforms.build:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + index: + product: firefox + treeherder: + symbol: Searchfox(idx) + kind: build + tier: 2 + run-on-projects: ['mozilla-central'] + optimization: null + use-system-python: false + +jobs: + linux64-searchfox/debug: + description: "Linux64 Debug Searchfox" + index: + job-name: linux64-searchfox-debug + treeherder: + platform: linux64/debug + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + PERFHERDER_EXTRA_OPTIONS: searchfox + MOZSEARCH_PLATFORM: "linux" + run: + using: mozharness + actions: [build] + config: + - builds/releng_base_firefox.py + - builds/releng_sub_linux_configs/64_searchfox_and_debug.py + script: "mozharness/scripts/fx_desktop_build.py" + tooltool-downloads: public + keep-artifacts: false + fetches: + toolchain: + - linux64-clang + - linux64-nasm + - linux64-node + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + macosx64-searchfox/debug: + description: "MacOS X x64 Debug Cross-compile Searchfox" + index: + job-name: macosx64-searchfox-debug + treeherder: + platform: osx-cross/debug + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + PERFHERDER_EXTRA_OPTIONS: searchfox + MOZSEARCH_PLATFORM: "macosx" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_firefox.py + - builds/releng_base_mac_64_cross_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + custom-build-variant-cfg: cross-debug-searchfox + secrets: true + keep-artifacts: false + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang + - linux64-hfsplus + - linux64-libdmg + - linux64-nasm + - linux64-node + - linux64-rust-cross-beta + - linux64-cbindgen + - linux64-dump_syms + - macosx64-sdk + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + win64-searchfox/debug: + description: "Win64 Searchfox Debug (clang-cl)" + index: + job-name: win64-searchfox-debug + treeherder: + platform: windows2012-64/debug + worker-type: b-linux-gcp + worker: + max-run-time: 10800 + env: + PERFHERDER_EXTRA_OPTIONS: searchfox + MOZSEARCH_PLATFORM: "windows" + run: + using: mozharness + options: [append-env-variables-from-configs] + actions: [get-secrets, build] + script: mozharness/scripts/fx_desktop_build.py + secrets: true + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + - builds/taskcluster_sub_win64/searchfox_debug.py + extra-config: + mozconfig_platform: win64 + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust-cross-beta + - linux64-rust-size + - linux64-nasm + - linux64-node + - linux64-cbindgen + - linux64-sccache + - linux64-dump_syms + - linux64-wine + - linux64-winchecksec + - nsis + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + - vs + fetch: + - upx-3.95-win + + android-armv7-searchfox/debug: + description: "Android ARMv7 Debug Searchfox" + index: + job-name: android-armv7-searchfox-debug + treeherder: + platform: android-4-1-armv7/debug + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: android-build} + max-run-time: 10800 + env: + PERFHERDER_EXTRA_OPTIONS: searchfox + MOZSEARCH_PLATFORM: "android-armv7" + GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline" + TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest" + run: + using: mozharness + actions: [get-secrets, build] + config: + - builds/releng_base_android_64_builds.py + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + custom-build-variant-cfg: arm-debug-searchfox + tooltool-downloads: internal + use-sccache: true + fetches: + toolchain: + - android-gradle-dependencies + - android-ndk-linux + - android-sdk-linux + - linux64-jdk + - linux64-clang + - linux64-rust-cross-beta + - linux64-rust-size + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi diff --git a/taskcluster/ci/sentry/kind.yml b/taskcluster/ci/sentry/kind.yml new file mode 100644 index 0000000000..bfc3cf07a2 --- /dev/null +++ b/taskcluster/ci/sentry/kind.yml @@ -0,0 +1,34 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.sentry:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + mach-release: + description: Inform Sentry of new revisions (aka Mach releases) + worker-type: b-linux-gcp + worker: + taskcluster-proxy: true + max-run-time: 3600 + docker-image: {in-tree: sentry} + env: + HG_PUSHLOG_URL: "{head_repository}/json-pushes?version=2&changeset={head_rev}" + SENTRY_SECRET: "project/engwf/gecko/{level}/tokens" + scopes: + - "secrets:get:project/engwf/gecko/{level}/tokens" + run: + using: run-task + checkout: false + command: /bin/bash /usr/bin/submit_sentry_release.sh + run-on-projects: ['mozilla-central'] + treeherder: + symbol: Sentry(mach-release) + platform: other/opt + tier: 2 + kind: other diff --git a/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml b/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml new file mode 100644 index 0000000000..7b9ac8912a --- /dev/null +++ b/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: chunk-locales + +transforms: + - gecko_taskgraph.transforms.mac_notarization:transforms + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.upstream_artifact_task:transforms + - gecko_taskgraph.transforms.shippable_l10n_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - shippable-l10n-mac-signing + +only-for-attributes: + - shippable + +job-template: + max-run-time: 1800 + treeherder: + symbol: BMN diff --git a/taskcluster/ci/shippable-l10n-mac-signing/kind.yml b/taskcluster/ci/shippable-l10n-mac-signing/kind.yml new file mode 100644 index 0000000000..19619121c6 --- /dev/null +++ b/taskcluster/ci/shippable-l10n-mac-signing/kind.yml @@ -0,0 +1,28 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: chunk-locales + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.shippable_l10n_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - shippable-l10n + +only-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + - macosx64/opt + - macosx64/debug + +job-template: + treeherder: + symbol: BMS + attributes: + shipping_phase: promote diff --git a/taskcluster/ci/shippable-l10n-signing/kind.yml b/taskcluster/ci/shippable-l10n-signing/kind.yml new file mode 100644 index 0000000000..9497873270 --- /dev/null +++ b/taskcluster/ci/shippable-l10n-signing/kind.yml @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: chunk-locales + +transforms: + - gecko_taskgraph.transforms.name_sanity:transforms + - gecko_taskgraph.transforms.upstream_artifact_task:transforms + - gecko_taskgraph.transforms.shippable_l10n_signing:transforms + - gecko_taskgraph.transforms.signing:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - shippable-l10n + +primary-dependency: + - shippable-l10n + +only-for-attributes: + - shippable + - nightly + +not-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + - macosx64/opt + - macosx64/debug diff --git a/taskcluster/ci/shippable-l10n/kind.yml b/taskcluster/ci/shippable-l10n/kind.yml new file mode 100644 index 0000000000..24e53cf98b --- /dev/null +++ b/taskcluster/ci/shippable-l10n/kind.yml @@ -0,0 +1,199 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: platform + +transforms: + - gecko_taskgraph.transforms.l10n:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - build-signing + - fetch + - repackage + - toolchain + +primary-dependency: build + +only-for-build-platforms: + - linux64-shippable/opt + - linux-shippable/opt + - macosx64-shippable/opt + - win32-shippable/opt + - win64-shippable/opt + - win64-aarch64-shippable/opt + - linux64-devedition/opt + - linux-devedition/opt + - macosx64-devedition/opt + - win32-devedition/opt + - win64-devedition/opt + - win64-aarch64-devedition/opt + +job-template: + description: Localization + locales-file: browser/locales/l10n-changesets.json + locales-per-chunk: 5 + run-on-projects: ['release'] + attributes: + shipping_phase: promote + ignore-locales: + by-build-platform: + # OSX has a special locale for japanese + macosx64.*: [ja] + default: [ja-JP-mac] + run-time: 1800 + fetches: + toolchain: + by-build-platform: + default: [] + macosx64.*: + - linux64-libdmg + - linux64-hfsplus + win.*: + - linux64-wine + - nsis + fetch: + by-build-platform: + default: [] + win.*: + - upx-3.95-win + tooltool: + by-build-platform: + default: internal + linux.*: public + index: + type: shippable-l10n + product: + by-build-platform: + default: firefox + .*-devedition: devedition + job-name: + by-build-platform: + linux-shippable: linux-opt + linux64-shippable: linux64-opt + macosx64-shippable: macosx64-opt + win32-shippable: win32-opt + win64-shippable: win64-opt + win64-aarch64-shippable: win64-aarch64-opt + linux-devedition: linux-devedition-opt + linux64-devedition: linux64-devedition-opt + macosx64-devedition: macosx64-devedition-opt + win32-devedition: win32-devedition-opt + win64-devedition: win64-devedition-opt + win64-aarch64-devedition: win64-aarch64-devedition-opt + worker-type: b-linux-gcp + treeherder: + symbol: L10n(B) + tier: 1 + platform: + by-build-platform: + linux64-shippable: linux64-shippable/opt + linux-shippable: linux32-shippable/opt + macosx64-shippable: osx-shippable/opt + win32-shippable: windows2012-32-shippable/opt + win64-shippable: windows2012-64-shippable/opt + win64-aarch64-shippable: windows2012-aarch64-shippable/opt + linux64-devedition: linux64-devedition/opt + linux-devedition: linux32-devedition/opt + macosx64-devedition: osx-cross-devedition/opt + win32-devedition: windows2012-32-devedition/opt + win64-devedition: windows2012-64-devedition/opt + win64-aarch64-devedition: windows2012-aarch64-devedition/opt + env: + by-build-platform: + linux.*: # linux64 and 32 get same treatment here + EN_US_PACKAGE_NAME: target.tar.bz2 + EN_US_BINARY_URL: + artifact-reference: + macosx64.*: + EN_US_PACKAGE_NAME: target.dmg + EN_US_BINARY_URL: + artifact-reference: + win.*: + EN_US_PACKAGE_NAME: target.zip + EN_US_BINARY_URL: + artifact-reference: + mozharness: + config: + by-build-platform: + linux-shippable: + - single_locale/firefox.py + - single_locale/linux32.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + - taskcluster_nightly.py + linux64-shippable: + - single_locale/firefox.py + - single_locale/linux64.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + - taskcluster_nightly.py + macosx64-shippable: + - single_locale/firefox.py + - single_locale/macosx64.py + - single_locale/tc_common.py + - single_locale/tc_macosx64.py + - taskcluster_nightly.py + win32-shippable: + - single_locale/firefox.py + - single_locale/win32.py + - single_locale/tc_common.py + - single_locale/tc_win32.py + - taskcluster_nightly.py + win64-shippable: + - single_locale/firefox.py + - single_locale/win64.py + - single_locale/tc_common.py + - single_locale/tc_win64.py + - taskcluster_nightly.py + win64-aarch64-shippable: + - single_locale/firefox.py + - single_locale/win64-aarch64.py + - single_locale/tc_common.py + - single_locale/tc_win64.py + - taskcluster_nightly.py + linux-devedition: + - single_locale/devedition.py + - single_locale/linux32.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + - taskcluster_nightly.py + linux64-devedition: + - single_locale/devedition.py + - single_locale/linux64.py + - single_locale/tc_common.py + - single_locale/tc_linux_common.py + - taskcluster_nightly.py + macosx64-devedition: + - single_locale/devedition.py + - single_locale/macosx64.py + - single_locale/tc_common.py + - single_locale/tc_macosx64.py + - taskcluster_nightly.py + win32-devedition: + - single_locale/devedition.py + - single_locale/win32.py + - single_locale/tc_common.py + - single_locale/tc_win32.py + - taskcluster_nightly.py + win64-devedition: + - single_locale/devedition.py + - single_locale/win64.py + - single_locale/tc_common.py + - single_locale/tc_win64.py + - taskcluster_nightly.py + win64-aarch64-devedition: + - single_locale/devedition.py + - single_locale/win64-aarch64.py + - single_locale/tc_common.py + - single_locale/tc_win64.py + - taskcluster_nightly.py + # no default, so we fail on new entries + actions: ['clone-locales', 'list-locales', 'setup', 'repack', + 'summary'] + script: mozharness/scripts/desktop_l10n.py diff --git a/taskcluster/ci/source-test/clang.yml b/taskcluster/ci/source-test/clang.yml new file mode 100644 index 0000000000..f513ec8dc0 --- /dev/null +++ b/taskcluster/ci/source-test/clang.yml @@ -0,0 +1,116 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + # Run only on try and code-review tasks + # to avoid running clang tools on the whole codebase + run-on-projects: [] + platform: linux64/debug + worker-type: t-linux-xlarge-source + attributes: + code-review: true + worker: + docker-image: {in-tree: static-analysis-build} + max-run-time: 5400 + treeherder: + kind: other + tier: 2 + run: + using: run-task + tooltool-downloads: public + fetches: + toolchain: + - linux64-cbindgen + - linux64-nasm + - linux64-node + when: + files-changed: + - '**/*.c' + - '**/*.cpp' + - '**/*.cc' + - '**/*.cxx' + - '**/*.m' + - '**/*.mm' + +tidy: + description: Run static-analysis (clang-tidy) on C/C++ patches + treeherder: + symbol: cpp(clang-tidy) + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times static-analysis check --outgoing --output $HOME/clang-tidy.json --format json + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + worker: + artifacts: + - type: file + name: public/code-review/clang-tidy.json + path: /builds/worker/clang-tidy.json + +format: + description: Run clang-format on C/C++ patches + treeherder: + symbol: cpp(clang-format) + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.json --format json && + ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.diff --format diff + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + when: + files-changed: + - '**/*.c' + - '**/*.cpp' + - '**/*.cc' + - '**/*.cxx' + - '**/*.m' + - '**/*.mm' + - '**/*.h' + - '**/*.hh' + - '**/*.hpp' + - '**/*.hxx' + worker: + artifacts: + - type: file + name: public/code-review/clang-format.json + path: /builds/worker/clang-format.json + - type: file + name: public/code-review/clang-format.diff + path: /builds/worker/clang-format.diff + +external: + description: Run static-analysis (clang-tidy) on C/C++ patches with external checks + treeherder: + symbol: cpp(clang-tidy-external) + run: + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-clang-setup.sh && + ./mach --log-no-times static-analysis check --checks="-*,mozilla-civet-*" --outgoing --output $HOME/clang-tidy.json --format json + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy-external + - linux64-rust + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + worker: + artifacts: + - type: file + name: public/code-review/clang-tidy.json + path: /builds/worker/clang-tidy.json diff --git a/taskcluster/ci/source-test/cram.yml b/taskcluster/ci/source-test/cram.yml new file mode 100644 index 0000000000..6e29e7c6a6 --- /dev/null +++ b/taskcluster/ci/source-test/cram.yml @@ -0,0 +1,21 @@ +--- +tryselect: + description: tools/tryselect integration tests + platform: linux1804-64/opt + treeherder: + symbol: cram(try) + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + mach: cramtest tools/tryselect + always-target: true + when: + files-changed: + - testing/mach_commands.py + - third_party/python/cram/** + - tools/tryselect/** diff --git a/taskcluster/ci/source-test/doc.yml b/taskcluster/ci/source-test/doc.yml new file mode 100644 index 0000000000..a3529aaf9e --- /dev/null +++ b/taskcluster/ci/source-test/doc.yml @@ -0,0 +1,72 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +generate: + description: Generate the Sphinx documentation + platform: doc/opt + treeherder: + symbol: doc(generate) + kind: test + tier: 1 + run-on-projects: ['trunk'] + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + artifacts: + - type: file + name: public/docs.tar.gz + path: /builds/worker/checkouts/gecko/docs-out/main.tar.gz + - type: file + name: public/trees.json + path: /builds/worker/artifacts/trees.json + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach doc --outdir docs-out --no-open --no-serve --archive --fatal-warnings --check-num-warnings --dump-trees=/builds/worker/artifacts/trees.json + sparse-profile: sphinx-docs + optimization: + skip-unless-schedules: [docs] + +upload: + description: Generate and upload the Sphinx documentation + platform: doc/opt + attributes: + code-review: true + treeherder: + symbol: doc(upload) + kind: test + tier: 2 + run-on-projects: [mozilla-central-only] + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + env: + MOZ_SOURCE_DOCS_USE_GOOGLE: "1" + taskcluster-proxy: true + artifacts: + - type: file + name: public/firefox-source-docs-url.txt + path: /builds/worker/firefox-source-docs-url.txt + - type: file + name: public/trees.json + path: /builds/worker/artifacts/trees.json + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach doc --upload --no-open --no-serve --fatal-warnings --check-num-warnings --write-url /builds/worker/firefox-source-docs-url.txt --dump-trees=/builds/worker/artifacts/trees.json + sparse-profile: sphinx-docs + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-docs-upload + optimization: + skip-unless-schedules: [docs] diff --git a/taskcluster/ci/source-test/file-metadata.yml b/taskcluster/ci/source-test/file-metadata.yml new file mode 100644 index 0000000000..9fee8e9b93 --- /dev/null +++ b/taskcluster/ci/source-test/file-metadata.yml @@ -0,0 +1,123 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: lint/opt + treeherder: + kind: other + tier: 1 + worker-type: t-linux-xlarge-source + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + +bugzilla-components: + description: Generate metadata about source files and Bugzilla + treeherder: + symbol: Bugzilla + tier: 1 + index: + product: source + job-name: source-bugzilla-info + run: + mach: file-info bugzilla-automation /builds/worker/artifacts + worker: + max-run-time: 1800 + run-on-projects: ['autoland', 'mozilla-central'] + +test-info-xorigin: + description: Generate test manifest metadata for tests disabled on cross-origin + treeherder: + symbol: test-info(xorigin) + tier: 2 + index: + product: source + job-name: test-info-xorigin + worker: + docker-image: {in-tree: debian11-amd64-build} + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - linux64-cbindgen + - linux64-nasm + - linux64-node + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + run: + using: run-task + cwd: '{checkout}' + command: >- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?- + source taskcluster/scripts/misc/source-test-common.sh && + ./mach test-info testrun-report --output-file /builds/worker/artifacts/test-run-info.json && + ./mach test-info report --show-tests --show-summary --show-testruns --verbose --output-file /builds/worker/artifacts/test-info-all-tests.json && + ./mach test-info report --show-annotations --output-file /builds/worker/artifacts/test-info-manifest-conditions.json diff --git a/taskcluster/ci/source-test/jsshell.yml b/taskcluster/ci/source-test/jsshell.yml new file mode 100644 index 0000000000..2ce0a846d4 --- /dev/null +++ b/taskcluster/ci/source-test/jsshell.yml @@ -0,0 +1,87 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: linux64-shippable/opt + require-build: + linux64.*: build-linux64-shippable/opt + worker-type: + by-platform: + linux64.*: t-linux-talos-1804 + worker: + by-platform: + linux64.*: + env: + by-shell: + sm: + SHELL: /bin/bash + JSSHELL: js + v8: + SHELL: /bin/bash + JSSHELL: d8/release/d8 + max-run-time: 3600 + treeherder: + kind: test + tier: 2 + run: + using: mach + mach: jsshell-bench --perfherder={shell} --binary=$MOZ_FETCHES_DIR/$JSSHELL {test} + run-on-projects: + by-shell: + sm: + by-test-platform: + (linux|windows|macos)(?!.*shippable).*: [] + default: ['mozilla-central', 'integration'] + default: + by-test-platform: + (linux|windows|macos)(?!.*shippable).*: [] + default: ['mozilla-central'] + fetches: + build: + - target.jsshell.zip + toolchain: + - linux64-custom-v8 + optimization: + skip-unless-expanded: null + +bench-ares6: + description: Ares6 JavaScript shell benchmark suite + shell: ['sm', 'v8'] + test: ares6 + treeherder: + symbol: ares6 + +bench-sixspeed: + description: Six-Speed JavaScript shell benchmark suite + shell: ['sm', 'v8'] + test: six-speed + treeherder: + symbol: 6speed + +bench-sunspider: + description: SunSpider JavaScript shell benchmark suite + shell: ['sm'] + test: sunspider + treeherder: + symbol: sunspider + +bench-web-tooling: + description: Web Tooling shell benchmark suite + shell: ['sm', 'v8'] + test: web-tooling-benchmark + treeherder: + symbol: webtool + fetches: + fetch: + - web-tooling-benchmark + +bench-octane: + description: Octane shell benchmark suite + shell: ['sm', 'v8'] + test: octane + treeherder: + symbol: octane + fetches: + fetch: + - octane diff --git a/taskcluster/ci/source-test/kind.yml b/taskcluster/ci/source-test/kind.yml new file mode 100644 index 0000000000..984f0648d3 --- /dev/null +++ b/taskcluster/ci/source-test/kind.yml @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +transforms: + - gecko_taskgraph.transforms.try_job:transforms + - gecko_taskgraph.transforms.source_test:transforms + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - fetch + - toolchain + - build + +jobs-from: + - clang.yml + - cram.yml + - doc.yml + - file-metadata.yml + - jsshell.yml + - mozlint.yml + - mozlint-android.yml + - node.yml + - puppeteer.yml + - python.yml + - shadow-scheduler.yml + - taskgraph.yml + - vendor.yml + - webidl.yml + - webcompat.yml + - wpt-manifest.yml + - wpt-metadata.yml + +job-defaults: + attributes: + retrigger: true diff --git a/taskcluster/ci/source-test/mozlint-android.yml b/taskcluster/ci/source-test/mozlint-android.yml new file mode 100644 index 0000000000..6602d8c818 --- /dev/null +++ b/taskcluster/ci/source-test/mozlint-android.yml @@ -0,0 +1,106 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- + +# Just one TC job that runs all the lints. There's no real advantage +# to running them separately, and this way we perform the expensive +# clone and somewhat expensive compilation of the Android +# intermediates just once. +lints: + always-target: true + attributes: + build_platform: android + build_type: opt + code-review: true + description: Android lints + platform: lint/opt + treeherder: + symbol: A(lints) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: android-build} + env: + GRADLE_USER_HOME: /builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline + MOZCONFIG: mobile/android/config/mozconfigs/android-arm/nightly-android-lints + MOZ_OBJDIR: obj-firefox + PERFHERDER_EXTRA_OPTIONS: android-lints + TINDERBOX_OUTPUT: '1' + max-run-time: 3600 + artifacts: + - type: file + name: public/code-review/mozlint.json + path: /builds/worker/mozlint.json + - name: public/android/geckoview/api.txt + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt + type: file + - name: public/android/geckoview/api.txt.map + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt.map + type: file + - name: public/android/geckoview/apilint-result.json + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/apilint-result.json + type: file + - name: public/android/geckoview/javadoc-results.json + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/javadoc-results-withGeckoBinariesDebug.json + type: file + - name: public/geckoview/unittest + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/tests + type: directory + - name: public/android/lint/lint-results-officialWithoutGeckoBinariesDebug.html + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.html + type: file + - name: public/android/lint/lint-results-withGeckoBinariesDebug.xml + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.xml + type: file + - name: public/android/checkstyle/checkstyle.html + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.html + type: file + - name: public/android/checkstyle/checkstyle.xml + path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.xml + type: file + run: + using: run-task + command: > + ln -s $MOZ_FETCHES_DIR/android-gradle-dependencies $GECKO_PATH && + ln -s $MOZ_FETCHES_DIR/android-sdk-linux $GECKO_PATH && + ln -s $MOZ_FETCHES_DIR/node $GECKO_PATH && + cd $GECKO_PATH && + ./mach --log-no-times build pre-export export && + ./mach --log-no-times lint -f treeherder -f json:/builds/worker/mozlint.json + --linter android-api-lint + --linter android-format + --linter android-javadoc + --linter android-checkstyle + --linter android-lint + --linter android-test + * + tooltool-downloads: internal # For internal toolchains. + fetches: + toolchain: + # Aliases aren't allowed for toolchains installed by fetch. + - linux64-android-gradle-dependencies + - linux64-android-sdk-linux-repack + - linux64-jdk-repack + - linux64-node + when: + files-changed: + # Source files. + - 'mobile/android/**/*.java' + - 'mobile/android/**/*.kt' + # Resources. + - 'mobile/android/**/*.jpeg' + - 'mobile/android/**/*.jpg' + - 'mobile/android/**/*.png' + - 'mobile/android/**/*.svg' + - 'mobile/android/**/*.xml' + # Build stuff. + - 'mobile/android/**/Makefile.in' + - 'mobile/android/config/**' + - 'mobile/android/gradle.configure' + - 'mobile/android/**/moz.build' + - '**/*.gradle' + # Other misc lint related files. + - 'python/mozlint/**' + - 'tools/lint/**' diff --git a/taskcluster/ci/source-test/mozlint.yml b/taskcluster/ci/source-test/mozlint.yml new file mode 100644 index 0000000000..04d0554faf --- /dev/null +++ b/taskcluster/ci/source-test/mozlint.yml @@ -0,0 +1,574 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + always-target: true + attributes: + code-review: true + treeherder: + kind: test + tier: 1 + platform: lint/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + artifacts: + - type: file + name: public/code-review/mozlint.json + path: /builds/worker/mozlint.json + run: + using: mach + when: + files-changed: + # Other misc lint related files. + - 'python/mozlint/**' + - 'tools/lint/**' + +codespell: + description: Checks for misspellings in text files + treeherder: + symbol: text(spell) + # We don't want patches to be backed out because of a typo, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l codespell -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.js' + - '**/*.jsm' + - '**/*.jxs' + - '**/*.mjs' + - '**/*.xml' + - '**/*.html' + - '**/*.xhtml' + - '**/*.cpp' + - '**/*.c' + - '**/*.h' + - '**/*.configure' + - '**/*.py' + - '**/*.properties' + - '**/*.rst' + - '**/*.ftl' + - 'tools/lint/codespell.yml' + + +rejected-words: + description: Reject some words we don't want to use in the code base + treeherder: + symbol: text(rejected-words) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l rejected-words -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.js' + - '**/*.jsm' + - '**/*.jxs' + - '**/*.mjs' + - '**/*.xml' + - '**/*.html' + - '**/*.xhtml' + - '**/*.cpp' + - '**/*.c' + - '**/*.h' + - '**/*.idl' + - '**/*.webidl' + - '**/*.configure' + - '**/*.py' + - '**/*.properties' + - '**/*.rst' + - '**/*.ftl' + - '**/*.java' + - '**/*.kt' + - 'tools/lint/rejected-words.yml' + +eslint: + description: JS lint check + treeherder: + symbol: js(ES) + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach lint -v -l eslint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # Files that are likely audited. + - '**/*.js' + - '**/*.jsm' + - '**/*.json' + - '**/*.jsx' + - '**/*.mjs' + - '**/*.sjs' + - '**/*.html' + - '**/*.xhtml' + - '**/*.xml' + - 'tools/lint/eslint.yml' + # Run when eslint policies change. + - '**/.eslintignore' + - '**/*eslintrc*' + # The plugin implementing custom checks. + - 'tools/lint/eslint/eslint-plugin-mozilla/**' + - 'tools/lint/eslint/eslint-plugin-spidermonkey-js/**' + +eslint-build: + description: ESLint checks with build data + always-target: false + # Triggered by cron task, don't run on any projects and disable optimization. + run-on-projects: [] + when: null + attributes: + code-review: false + treeherder: + symbol: js(ES-B) + tier: 2 + run: + using: run-task + cwd: '{checkout}' + command: > + export MOZ_XPT_ARTIFACTS_DIR="$MOZ_FETCHES_DIR/$MOZ_XPT_ARTIFACTS_DIRNAME" && + find "$MOZ_XPT_ARTIFACTS_DIR" && + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + ./mach lint -v -l eslint -f treeherder --quiet -f json:/builds/worker/mozlint.json . --rule "mozilla/valid-services-property: error" --rule "mozilla/valid-ci-uses: error" + worker: + env: + MOZ_XPT_ARTIFACTS_DIRNAME: xpt_artifacts + require-build: + .*: build-linux64/opt + fetches: + build: + - artifact: target.xpt_artifacts.zip + dest: xpt_artifacts + +stylelint: + description: CSS lint check + treeherder: + symbol: stylelint + run: + using: run-task + cwd: '{checkout}' + command: > + cp -r /build/node_modules_eslint node_modules && + ./mach lint -v -l stylelint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # Files that are likely audited. + - '**/*.css' + - 'tools/lint/styleint.yml' + # Run when stylelint policies change. + - '**/.stylelintignore' + - '**/*stylelintrc*' + +license: + description: Check for license blocks in source files. + treeherder: + symbol: pedantic(license) + run: + mach: lint -v -l license -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.css' + - '**/*.dtd' + - '**/*.ftl' + - '**/*.h' + - '**/*.html' + - '**/*.js' + - '**/*.jsm' + - '**/*.jsx' + - '**/*.m' + - '**/*.mjs' + - '**/*.mm' + - '**/*.properties' + - '**/*.py' + - '**/*.rs' + - '**/*.svg' + - '**/*.xhtml' + - '**/*.xml' + - '**/*.xul' + - 'tools/lint/license.yml' + +lintpref: + description: Check for duplicates between all.js and StaticPrefList.yaml. + treeherder: + symbol: misc(pref) + run: + mach: lint -v -l lintpref -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - 'modules/libpref/init/all.js' + - 'modules/libpref/init/StaticPrefList.yaml' + - 'browser/app/profile/firefox.js' + - 'mobile/android/app/mobile.js' + - 'devtools/client/preferences/debugger.js' + - 'mobile/android/app/geckoview-prefs.js' + - 'browser/branding/official/pref/firefox-branding.js' + - 'browser/branding/nightly/pref/firefox-branding.js' + - 'browser/branding/unofficial/pref/firefox-branding.js' + - 'browser/branding/aurora/pref/firefox-branding.js' + - 'browser/app/profile/channel-prefs.js' + - 'mobile/android/installer/mobile-l10n.js' + - 'mobile/android/locales/en-US/mobile-l10n.js' + - 'tools/lint/lintpref.yml' + +mingw-cap: + description: lint for MinGW Capitalization issues + treeherder: + symbol: misc(mingw) + run: + mach: lint -v -l mingw-capitalization -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.cc' + - '**/*.c' + - '**/*.h' + - 'tools/lint/mingw-capitalization.yml' + +updatebot: + description: Ensure moz.yaml files are valid per schema + treeherder: + symbol: misc(mozyaml) + run: + mach: lint -v -l updatebot -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/moz.yaml' + +mscom-init: + description: Lint for Microsoft COM initialization + treeherder: + symbol: misc(mscom) + run: + mach: lint -v -l mscom-init -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.cc' + - '**/*.c' + - '**/*.h' + - 'tools/lint/mscom-init.yml' + +py-black: + description: black run over the gecko codebase + treeherder: + symbol: py(black) + run: + mach: lint -v -l black -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + # The list of extensions should match tools/lint/black.yml + - '**/*.py' + - '**/moz.build' + - '**/*.configure' + - '**/*.mozbuild' + - 'pyproject.toml' + - 'tools/lint/black.yml' + +py-ruff: + description: Run ruff over the gecko codebase + treeherder: + symbol: py(ruff) + run: + mach: lint -v -l ruff -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.py' + - '**/*.configure' + - '**/.ruff.toml' + - 'pyproject.toml' + - 'tools/lint/ruff.yml' + - 'tools/lint/python/ruff.py' + - 'tools/lint/python/ruff_requirements.txt' + +test-manifest: + description: lint test manifests + treeherder: + symbol: misc(tm) + run: + mach: lint -v -l test-manifest-alpha -l test-manifest-disable -l test-manifest-skip-if -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.ini' + - 'python/mozlint/**' + - 'tools/lint/**' + - 'tools/lint/test-disable.yml' + +wptlint-gecko: + description: web-platform-tests linter + treeherder: + symbol: misc(W) + run: + mach: lint -v -l wpt -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - 'testing/web-platform/tests/**' + - 'testing/web-platform/mozilla/tests/**' + - 'tools/lint/wpt.yml' + +yaml: + description: yamllint run over the gecko codebase + treeherder: + symbol: pedantic(yaml) + run: + mach: lint -v -l yaml -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.yml' + - '**/*.yaml' + - '**/.ymllint' + +rst: + description: rst lint run over the gecko codebase + treeherder: + symbol: text(rst) + run: + mach: lint -v -l rst -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.rst' + - 'tools/lint/rst.yml' + +shellcheck: + description: shellcheck run over the gecko codebase + treeherder: + symbol: misc(shell) + run: + mach: lint -v -l shellcheck -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.sh' + - 'tools/lint/shellcheck.yml' + + +localization: + description: l10n tests for strings with errors + treeherder: + symbol: l10n(l1nt) + run: + mach: lint -v -l l10n -f treeherder * + attributes: + code-review: false + when: + files-changed: + - '**/locales/en-US/**' + - '**/l10n.toml' + - 'third_party/python/compare-locales/**' + - 'third_party/python/fluent/**' + - 'tools/lint/l10n.yml' + + +l10n-conflicts: + description: l10n tests for strings with errors and conflicts with cross-channel + treeherder: + symbol: l10n(l1nt-conflicts) + always-target: false + run-on-projects: [] + run: + mach: lint -W -l l10n -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/locales/en-US/**' + - '**/l10n.toml' + - 'third_party/python/compare-locales/**' + - 'third_party/python/fluent/**' + - 'tools/lint/l10n.yml' + + +clang-format: + description: clang-format on the C/C++ code + treeherder: + symbol: cpp(clang-format) + run: + mach: lint -v -l clang-format -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.cpp' + - '**/*.c' + - '**/*.cc' + - '**/*.h' + - '**/*.m' + - '**/*.mm' + - 'tools/lint/clang-format.yml' + dependencies: + linux64-clang-tidy: toolchain-linux64-clang-tidy + fetches: + linux64-clang-tidy: + - artifact: clang-tidy.tar.zst + dest: clang-tools + + +rustfmt: + description: rustfmt on the Rust code + treeherder: + symbol: rust(rustfmt) + run: + mach: lint -v -l rustfmt -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.rs' + - 'tools/lint/rustfmt.yml' + fetches: + toolchain: + - linux64-rust + + +clippy: + description: clippy on the Rust code + treeherder: + symbol: rust(clippy) + run: + mach: lint -v -l clippy -f treeherder -f json:/builds/worker/mozlint.json -j 1 . + when: + files-changed: + - '**/*.rs' + - '**/Cargo.toml' + - 'tools/lint/clippy.yml' + fetches: + toolchain: + - linux64-rust + + +file-whitespace: + description: Check for trailing whitespaces and Windows CR + platform: lint/opt + treeherder: + symbol: pedantic(file-whitespace) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l file-whitespace -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.css' + - '**/*.dtd' + - '**/*.idl' + - '**/*.ftl' + - '**/*.h' + - '**/*.html' + - '**/*.md' + - '**/*.properties' + - '**/*.py' + - '**/*.rs' + - '**/*.rst' + - '**/*.webidl' + - '**/*.xhtml' + - 'tools/lint/file-whitespace.yml' + + +file-perm: + description: Check for incorrect permissions on source files + platform: lint/opt + treeherder: + symbol: pedantic(file-perm) + # We don't want patches to be backed out because of this, a follow up bug will be + # good enough + tier: 2 + run: + mach: lint -v -l file-perm -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.build' + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.flac' + - '**/*.h' + - '**/*.html' + - '**/*.idl' + - '**/*.js' + - '**/*.jsm' + - '**/*.jsx' + - '**/*.m' + - '**/*.m4s' + - '**/*.md' + - '**/*.mjs' + - '**/*.mm' + - '**/*.mozbuild' + - '**/*.mp4' + - '**/*.png' + - '**/*.rs' + - '**/*.rst' + - '**/*.svg' + - '**/*.ttf' + - '**/*.wasm' + - '**/*.webidl' + - '**/*.xhtml' + - '**/*.xml' + - '**/*.xul' + - '**/*.yml' + - 'tools/lint/file-perm.yml' + + +perfdocs-verify: + description: Verifies Performance Testing documentation + treeherder: + symbol: text(perfdocs) + run: + mach: lint -v -l perfdocs -f treeherder -f json:/builds/worker/mozlint.json . + worker: + env: + WORKSPACE: /builds/worker/checkouts/gecko/ + DECISION_TASK_ID: {task-reference: } + artifacts: + - type: file + name: public/perfdocs.diff + path: /builds/worker/diff.txt + when: + files-changed: + - 'taskcluster/**' + - '**/perftest.ini' + - 'python/mozperftest/**' + - 'testing/**/*.ini' + - 'testing/**/*.yml' + - 'testing/**/*.rst' + - 'tools/lint/perfdocs.yml' + + +fluent-lint: + description: Check for problems with Fluent files. + platform: lint/opt + treeherder: + symbol: l10n(fluent) + run: + mach: lint --linter fluent-lint -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.ftl' + - 'tools/lint/fluent-lint.yml' + - 'tools/lint/fluent-lint/exclusions.yml' + +trojan-source: + description: Trojan Source attack - CVE-2021-42572 + platform: lint/opt + treeherder: + symbol: misc(trojan-source) + run: + mach: lint -v -l trojan-source --include-third-party -f treeherder -f json:/builds/worker/mozlint.json . + when: + files-changed: + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.h' + - '**/*.py' + - '**/*.rs' + - 'tools/lint/trojan-source.yml' diff --git a/taskcluster/ci/source-test/node.yml b/taskcluster/ci/source-test/node.yml new file mode 100644 index 0000000000..4dcc43f521 --- /dev/null +++ b/taskcluster/ci/source-test/node.yml @@ -0,0 +1,159 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +newtab-unit-tests: + description: newtab unit tests + platform: linux1804-64/opt + treeherder: + symbol: node(newtab) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 1800 + require-build: + by-project: + autoland: + linux1804-64/opt: build-linux64/opt + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + command: > + cd /builds/worker/checkouts/gecko/browser/components/newtab && + npm install && + node bin/try-runner.js + when: + files-changed: + - "browser/components/newtab/**" + +newtab-unit-tests-ccov: + description: newtab unit tests code coverage + platform: linux1804-64/opt + treeherder: + symbol: node(newtab-ccov) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 1800 + artifacts: + - name: public/code-coverage-grcov.zip + path: /builds/worker/checkouts/gecko/browser/components/newtab/logs/coverage/code-coverage-grcov.zip + type: file + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + command: > + cd /builds/worker/checkouts/gecko/browser/components/newtab && + npm install && + node bin/try-runner.js + run-on-projects: ["mozilla-central"] + +devtools-tests: + description: devtools node-based tests (for instance jest) + platform: linux1804-64/opt + attributes: + code-review: true + treeherder: + symbol: node(devtools) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + # Re-use rather than re-installing to avoid hitting/requiring + # nodejs servers for downloads + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + cd devtools/client/bin/ && + node devtools-node-test-runner.js --suite=all --artifact=/builds/worker/issues.json + when: + files-changed: + - 'devtools/client/**' + - 'devtools/shared/**' + +devtools-verify-bundle: + description: devtools bundle checker + platform: linux1804-64/opt + attributes: + code-review: true + treeherder: + symbol: node(devtools-bundle) + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1200 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}' + # Re-use rather than re-installing to avoid hitting/requiring + # nodejs servers for downloads + command: > + cp -r /build/node_modules_eslint node_modules && + cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && + cd devtools/client/debugger && + yarn && + node bin/bundle.js && + cd ../../.. && + ./mach python taskcluster/scripts/misc/verify-devtools-bundle.py --output /builds/worker/issues.json + when: + files-changed: + - 'devtools/**' + +eslint-plugin-mozilla: + description: eslint-plugin-mozilla integration tests + platform: linux1804-64/opt + treeherder: + symbol: node(epm) + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}/tools/lint/eslint/eslint-plugin-mozilla' + command: > + cp -r /build/node_modules_eslint-plugin-mozilla node_modules && + npm run test + when: + files-changed: + - 'tools/lint/eslint/eslint-plugin-mozilla/**' diff --git a/taskcluster/ci/source-test/puppeteer.yml b/taskcluster/ci/source-test/puppeteer.yml new file mode 100644 index 0000000000..b4bd898d1f --- /dev/null +++ b/taskcluster/ci/source-test/puppeteer.yml @@ -0,0 +1,52 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: linux1804-64/opt + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + fetches: + build: + - target.tar.bz2 + toolchain: + - linux64-node + treeherder: + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: ubuntu1804-test} + max-run-time: 3600 + artifacts: + - type: file + name: public/remote/pup_errorsummary.json + path: /builds/worker/pup_errorsummary.json + optimization: + skip-unless-expanded: null + +puppeteer: + description: Puppeteer tests against Firefox CDP-based remote protocol + treeherder: + symbol: Pup(cdp) + run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test + using: run-task + command: > + cd $GECKO_PATH/ && + $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org && + ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json + +puppeteer-with-bidi: + description: Puppeteer tests against Firefox Webdriver BiDi remote protocol + treeherder: + symbol: Pup(wd) + run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test + using: run-task + command: > + cd $GECKO_PATH/ && + $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org && + ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --bidi --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json diff --git a/taskcluster/ci/source-test/python.yml b/taskcluster/ci/source-test/python.yml new file mode 100644 index 0000000000..691a6da6da --- /dev/null +++ b/taskcluster/ci/source-test/python.yml @@ -0,0 +1,622 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: linux1804-64/opt + always-target: + by-platform: + macosx.*: false + default: true + worker-type: + by-platform: + linux1804-64.*: t-linux-xlarge-source + macosx1015-64.*: t-osx-1015-r8 + windows11-64.*: win11-64-2009-source + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "lint"} + max-run-time: 3600 + macosx.*: + max-run-time: 3600 + env: + PATH: "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin" + default: + max-run-time: 3600 + treeherder: + kind: test + tier: 1 + run: + using: mach + when: + files-changed: + - 'config/mozunit/**' + - 'python/mach_commands.py' + +firefox-ci: + description: taskcluster/gecko_taskgraph unit tests + always-target: false + python-version: [3] + treeherder: + symbol: ci + run: + using: python-test + subsuite: ci + when: + files-changed: + - '.taskcluster.yml' + - 'taskcluster/ci/**' + - 'taskcluster/**/*.py' + - 'tools/tryselect/selectors/auto.py' + +fog: + description: Python unit tests for Firefox on Glean + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: fp + run: + using: python-test + subsuite: fog + when: + files-changed: + - 'toolkit/components/glean/**' + +mach: + description: python/mach unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mach + run: + using: python-test + subsuite: mach + when: + files-changed: + - 'python/mach/**' + - 'python/sites/**' + +marionette-harness: + description: testing/marionette/harness unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mnh + run: + using: python-test + subsuite: marionette-harness + when: + files-changed: + - 'testing/marionette/harness/**' + - 'testing/mozbase/mozlog/mozlog/**' + - 'testing/mozbase/mozlog/setup.py' + +mochitest-harness: + description: testing/mochitest unittests + platform: + - linux1804-64/opt + - linux1804-64/debug + - linux1804-64-asan/opt + always-target: false + require-build: + by-project: + try: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64/opt + default: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64-shippable/opt + treeherder: + symbol: py3(mch) + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests && + ./mach python-test --subsuite mochitest + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.mochitest.tests.tar.gz + dest: tests + toolchain: + - linux64-fix-stacks + when: + files-changed: + - 'testing/mochitest/**' + - 'testing/mozbase/mozrunner/mozrunner/**' + - 'testing/mozbase/moztest/moztest/selftest/**' + - 'testing/mozharness/mozharness/base/log.py' + - 'testing/mozharness/mozharness/mozilla/structuredlog.py' + - 'testing/mozharness/mozharness/mozilla/testing/errors.py' + - 'testing/profiles/**' + + +mozbase: + description: testing/mozbase unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mb + run: + using: python-test + subsuite: mozbase + when: + files-changed: + - 'testing/mozbase/**' + +mozharness: + description: mozharness integration tests + treeherder: + symbol: py3(mh) + run: + using: run-task + cache-dotcache: true + cwd: '{checkout}/testing/mozharness' + command: > + /usr/local/bin/tox -e py39-hg5.2 + when: + files-changed: + - 'testing/mozharness/**' + +mozlint: + description: python/mozlint unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mozlint + tier: 2 + run: + using: python-test + subsuite: mozlint + dependencies: + clang-tidy: + by-platform: + linux1804-64/opt: toolchain-linux64-clang-tidy + macosx1015-64/opt: toolchain-macosx64-clang-tidy + windows11-64/opt: toolchain-win64-clang-tidy + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + - linux64-rust + macosx1015-64/opt: + - macosx64-node + - macosx64-rust + windows11-64/opt: + - win64-node + - win64-rust + clang-tidy: + - artifact: clang-tidy.tar.zst + dest: clang-tools + when: + files-changed: + - 'python/mozlint/**' + - 'tools/lint/**' + +mozrelease: + description: python/mozrelease unit tests + python-version: [3] + treeherder: + symbol: release + run: + using: python-test + subsuite: mozrelease + when: + files-changed: + - 'python/mozrelease/**' + +mozterm: + description: python/mozterm unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: term + run: + using: python-test + subsuite: mozterm + when: + files-changed: + - 'python/mozterm/**' + +mozversioncontrol: + description: python/mozversioncontrol unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: vcs + run: + using: python-test + subsuite: mozversioncontrol + when: + files-changed: + - 'python/mozversioncontrol/**' + +raptor: + description: testing/raptor unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: rap + run: + using: python-test + subsuite: raptor + when: + files-changed: + - 'testing/raptor/**' + +reftest-harness: + description: layout/tools/reftest unittests + platform: + - linux1804-64/opt + - linux1804-64/debug + - linux1804-64-asan/opt + require-build: + by-project: + try: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64/opt + default: + linux1804-64-asan/opt: build-linux64-asan/opt + linux1804-64/debug: build-linux64/debug + linux1804-64/opt: build-linux64-shippable/opt + always-target: false + treeherder: + symbol: py3(ref) + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests && + ./mach python-test --subsuite reftest + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.reftest.tests.tar.gz + dest: tests + toolchain: + - linux64-fix-stacks + when: + files-changed: + - 'layout/tools/reftest/**' + - 'testing/mozbase/mozrunner/mozrunner/**' + - 'testing/mozbase/moztest/moztest/selftest/**' + - 'testing/mozharness/mozharness/base/log.py' + - 'testing/mozharness/mozharness/mozilla/structuredlog.py' + - 'testing/mozharness/mozharness/mozilla/testing/errors.py' + +taskgraph-tests: + description: taskcluster/gecko_taskgraph unit tests + python-version: [3] + treeherder: + symbol: tg + run: + using: python-test + subsuite: taskgraph + when: + files-changed: + - 'taskcluster/**/*.py' + - 'python/mach/**/*.py' + +tryselect: + description: tools/tryselect unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: try + run: + using: python-test + subsuite: try + when: + files-changed: + - 'taskcluster/ci/config.yml' + - 'taskcluster/ci/test/**' + - 'taskcluster/gecko_taskgraph/transforms/**' + - 'tools/tryselect/**' + +mozbuild: + description: mozbuild unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: mbu + run: + using: python-test + subsuite: mozbuild + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node-12 + macosx1015-64/opt: + - macosx64-node-12 + windows11-64/opt: + - win64-node-12 + - win64-mozmake + when: + files-changed: + - '**/moz.configure' + - 'build/moz.configure/**' + - 'config/tests/**' + - 'dom/bindings/mozwebidlcodegen/**' + - 'modules/libpref/init/**' + - 'modules/libpref/test/**' + - 'python/mach/**' + - 'python/mozboot/**' + - 'python/mozbuild/**' + - 'python/mozterm/**' + - 'python/mozversioncontrol/**' + - 'testing/mozbase/**' + - 'testing/xpcshell/xpcshellcommandline.py' + +mozperftest: + description: mozperftest unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + treeherder: + symbol: mpu + run: + mach: perftest-test + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + macosx1015-64/opt: + - macosx64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'testing/performance/**' + - 'python/mozperftest/**' + +fxms-schemas: + description: > + Ensure messaging-system schemas are up-to-date and run Experimenter + integration tests. + platform: + - linux1804-64/opt + treeherder: + symbol: py3(fxms) + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64/opt + fetches: + build: + - artifact: target.tar.bz2 + - artifact: target.common.tests.tar.gz + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + run: + using: run-task + cwd: '{checkout}' + command: > + cd browser/components/newtab/content-src/asrouter/schemas && + env LD_LIBRARY_PATH=${MOZ_FETCHES_DIR}/firefox \ + ${MOZ_FETCHES_DIR}/bin/xpcshell \ + -g ${MOZ_FETCHES_DIR}/firefox \ + -a ${MOZ_FETCHES_DIR}/firefox/browser \ + extract-test-corpus.js + ../../../../../../mach python -- make-schemas.py --check + when: + files-changed: + - 'browser/components/newtab/content-src/asrouter/schemas/extract-test-corpus.js' + - 'browser/components/newtab/content-src/asrouter/schemas/make-schemas.py' + - 'browser/components/newtab/content-src/**/*.schema.json' + - 'browser/components/newtab/lib/CFRMessageProvider.sys.mjs' + - 'browser/components/newtab/lib/OnboardingMessageProvider.jsm' + - 'browser/components/newtab/lib/PanelTestProvider.sys.mjs' + +condprof: + description: testing/condprofile unit tests + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: condprof + run: + using: python-test + subsuite: condprof + when: + files-changed: + - 'testing/condprofile/condprof**' + - 'testing/condprofile/setup.py' + +featuregates: + description: featuregates Python unit tests + platform: + - linux1804-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: fg + run: + using: python-test + subsuite: featuregates + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'toolkit/components/featuregates/**' + +talos: + description: testing/talos unit tests + platform: windows11-64/opt + python-version: [3] + treeherder: + symbol: tal + run: + using: python-test + subsuite: talos + when: + files-changed: + - 'testing/talos/**' + +telemetry-integration-tests: + description: pytest-based integration tests for Telemetry + always-target: false + platform: + - linux1804-64/opt + worker: + by-platform: + linux1804-64.*: + docker-image: {in-tree: "ubuntu1804-test"} + max-run-time: 3600 + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + treeherder: + symbol: tt(i) + tier: 3 + run-on-projects: [] + run: + using: run-task + cwd: '{checkout}' + command: > + source /builds/worker/scripts/xvfb.sh && + start_xvfb '1600x1200x24' 0 && + export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox && + ./mach python-test --subsuite telemetry-integration-tests + fetches: + build: + - target.tar.bz2 + - artifact: target.common.tests.tar.gz + dest: tests + - artifact: target.reftest.tests.tar.gz + dest: tests + when: + files-changed: + - 'toolkit/components/telemetry/**' + +telemetry-python: + description: Python unit tests for Telemetry + platform: + - linux1804-64/opt + - macosx1015-64/opt + - windows11-64/opt + python-version: [3] + treeherder: + symbol: tp + run: + using: python-test + subsuite: telemetry-python + fetches: + toolchain: + by-platform: + linux1804-64/opt: + - linux64-node + macosx1015-64/opt: + - macosx64-node + windows11-64/opt: + - win64-node + when: + files-changed: + - 'toolkit/components/telemetry/**' + +webext: + description: WebExtensions python utilities unit tests + platform: + - linux1804-64/opt + python-version: [3] + treeherder: + symbol: webext-py + tier: 2 + run: + using: python-test + subsuite: webext-python + when: + files-changed: + - 'toolkit/components/extensions/webidl-api/**' + - 'toolkit/components/extensions/schemas/*.json' + - 'browser/components/extensions/schemas/*.json' + - 'mobile/android/components/extensions/schemas/*.json' + +xpcom: + description: xpcom unit tests + platform: + - linux1804-64/opt + python-version: [3] + treeherder: + symbol: xpcom + run: + using: python-test + subsuite: xpcom + when: + files-changed: + - 'third_party/python/ply/**' + - 'xpcom/components/*.py' + - 'xpcom/components/test/**' + - 'xpcom/ds/tools/**' + - 'xpcom/ds/test/**' + - 'xpcom/idl-parser/**' diff --git a/taskcluster/ci/source-test/shadow-scheduler.yml b/taskcluster/ci/source-test/shadow-scheduler.yml new file mode 100644 index 0000000000..97d1b1f30b --- /dev/null +++ b/taskcluster/ci/source-test/shadow-scheduler.yml @@ -0,0 +1,178 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: gecko-decision/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 3600 + artifacts: + - type: file + name: public/shadow-scheduler/optimized-tasks.json + path: /builds/worker/optimized-tasks.json + env: + DECISION_TASK_ID: {task-reference: } + treeherder: + kind: other + tier: 3 + run-on-projects: ['autoland-only'] + run: + using: mach + mach: taskgraph optimized -v --json -p task-id=$DECISION_TASK_ID --output-file /builds/worker/optimized-tasks.json + sparse-profile: taskgraph + +relevant_tests: + description: Runs the relevant_tests optimization strategy instead of the default. + treeherder: + symbol: SS(relevant_tests) + index: + product: source + job-name: shadow-scheduler-relevant_tests + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.relevant_tests + +bugbug_tasks_medium: + description: Runs the bugbug_tasks_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_tasks_medium) + index: + product: source + job-name: shadow-scheduler-bugbug_tasks_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_medium + +bugbug_tasks_high: + description: Runs the bugbug_tasks_high optimization strategy (with a high confidence threshold) instead of the default. + treeherder: + symbol: SS(bugbug_tasks_high) + index: + product: source + job-name: shadow-scheduler-bugbug_tasks_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_high + +bugbug_debug_disperse: + description: Runs the bugbug_debug_disperse optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_debug_disperse) + index: + product: source + job-name: shadow-scheduler-bugbug_debug_disperse + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_debug_disperse + +bugbug_disperse_low: + description: Runs the bugbug_disperse_low optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_low) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_low + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_low + +bugbug_disperse_medium: + description: Runs the bugbug_disperse_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_med) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium + +bugbug_disperse_reduced_medium: + description: Runs the bugbug_disperse_reduced_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_di_r_med_noun) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_reduced_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_reduced_medium + +bugbug_reduced_manifests_config_selection_low: + description: Runs the bugbug_reduced_manifests_config_selection_low optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_r_c_s_low) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_low + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_low + +bugbug_reduced_manifests_config_selection_medium: + description: Runs the bugbug_reduced_manifests_config_selection_medium optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_r_c_s_med) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_medium + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_medium + +bugbug_disperse_medium_no_unseen: + description: Runs the bugbug_disperse_medium_no_unseen optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disp_med_noun) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium_no_unseen + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_no_unseen + +bugbug_disperse_medium_only_one: + description: Runs the bugbug_disperse_medium_only_one optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disp_med_one) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_medium_only_one + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_only_one + +bugbug_disperse_high: + description: Runs the bugbug_disperse_high optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_disperse_high) + index: + product: source + job-name: shadow-scheduler-bugbug_disperse_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_high + +bugbug_reduced: + description: Runs the bugbug_reduced optimization strategy instead of the default. + treeherder: + symbol: SS(bugbug_reduced) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced + +bugbug_reduced_high: + description: Runs the bugbug_reduced optimization strategy (with a low confidence threshold) instead of the default. + treeherder: + symbol: SS(bugbug_reduced_high) + index: + product: source + job-name: shadow-scheduler-bugbug_reduced_high + worker: + env: + TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_high diff --git a/taskcluster/ci/source-test/taskgraph.yml b/taskcluster/ci/source-test/taskgraph.yml new file mode 100644 index 0000000000..132d5e488c --- /dev/null +++ b/taskcluster/ci/source-test/taskgraph.yml @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +diff: + description: Generates diffs of CI changes + platform: linux1804-64/opt + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + # Uncomment to upload logs of the generations as artifacts. + # env: + # XDG_CACHE_HOME: "/builds/worker/artifacts/cache" + artifacts: + - type: directory + name: public/taskgraph + path: /builds/worker/artifacts + attributes: + code-review: true + always-target: true + treeherder: + kind: test + platform: gecko-decision/opt + symbol: tgdiff + tier: 2 + run: + using: run-task + cwd: '{checkout}' + command: >- + mkdir -p /builds/worker/artifacts/diffs && + ./mach taskgraph target --fast -p "taskcluster/test/params" -o "/builds/worker/artifacts/diffs/diff.txt" --diff {base_rev} && + python taskcluster/scripts/misc/summarize-tgdiff.py /builds/worker/artifacts/diffs/ 20 + when: + files-changed: + - 'taskcluster/ci/**' + - 'taskcluster/**/*.py' diff --git a/taskcluster/ci/source-test/vendor.yml b/taskcluster/ci/source-test/vendor.yml new file mode 100644 index 0000000000..c6594c6f68 --- /dev/null +++ b/taskcluster/ci/source-test/vendor.yml @@ -0,0 +1,44 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: t-linux-xlarge-source + attributes: + code-review: true + worker: + docker-image: {in-tree: static-analysis-build} + max-run-time: 1200 + artifacts: + - type: file + name: public/code-review/issues.json + path: /builds/worker/issues.json + treeherder: + kind: test + tier: 1 + platform: lint/opt + run: + using: run-task + +rust: + description: Rust vendoring validation + treeherder: + symbol: rust(vendor) + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + run: + cwd: '{checkout}' + command: >- + ./mach vendor rust --issues-json /builds/worker/issues.json + fetches: + toolchain: + - linux64-cargo-vet + - linux64-rust + when: + files-changed: + - 'Cargo.lock' + - '**/Cargo.toml' + - 'python/mozbuild/mozbuild/vendor/vendor_rust.py' + - 'supply-chain/**' + - 'third_party/rust/**' diff --git a/taskcluster/ci/source-test/webcompat.yml b/taskcluster/ci/source-test/webcompat.yml new file mode 100644 index 0000000000..66ff7910a6 --- /dev/null +++ b/taskcluster/ci/source-test/webcompat.yml @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: linux1804-64/opt + require-build: + by-project: + try: + linux1804-64/opt: build-linux64/opt + default: + linux1804-64/opt: build-linux64-shippable/opt + fetches: + build: + - target.tar.bz2 + toolchain: + - linux64-geckodriver + run-on-projects: [] + treeherder: + kind: test + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: ubuntu1804-test} + max-run-time: 1800 + optimization: + skip-unless-expanded: null + +interventions: + description: webcompat intervention tests + treeherder: + symbol: wc(I) + tier: 3 + python-version: [3] + run: + using: mach + # Need to start Xvfb if we remove --headless + mach: test-interventions --headless --binary $MOZ_FETCHES_DIR/firefox/firefox --webdriver-binary $MOZ_FETCHES_DIR/geckodriver --log-tbpl - diff --git a/taskcluster/ci/source-test/webidl.yml b/taskcluster/ci/source-test/webidl.yml new file mode 100644 index 0000000000..eec7a75e38 --- /dev/null +++ b/taskcluster/ci/source-test/webidl.yml @@ -0,0 +1,24 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +test: + description: WebIDL parser tests + platform: lint/opt + treeherder: + symbol: Wp + kind: test + tier: 1 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + run: + using: mach + mach: webidl-parser-test --verbose + when: + files-changed: + - 'dom/bindings/parser/runtests.py' + - 'dom/bindings/parser/WebIDL.py' + - 'dom/bindings/parser/tests/**' + - 'other-licenses/ply/**' diff --git a/taskcluster/ci/source-test/wpt-manifest.yml b/taskcluster/ci/source-test/wpt-manifest.yml new file mode 100644 index 0000000000..06b29b60f5 --- /dev/null +++ b/taskcluster/ci/source-test/wpt-manifest.yml @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: linux64/opt + treeherder: + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + +upload: + description: Generate and store the web-platform-tests manifest + treeherder: + symbol: Wm + index: + product: source + job-name: manifest-upload + rank: build_date + run: + using: run-task + cwd: '{checkout}' + command: > + ./mach wpt-manifest-update --config testing/web-platform/wptrunner.ini --no-download + && tar -cvzf manifests.tar.gz -C testing/web-platform/ meta/MANIFEST.json mozilla/meta/MANIFEST.json + worker: + artifacts: + - type: file + path: /builds/worker/checkouts/gecko/manifests.tar.gz + name: public/manifests.tar.gz + + max-run-time: 3600 + when: + files-changed: + - 'testing/web-platform/tests/**' + - 'testing/web-platform/mozilla/tests/**' diff --git a/taskcluster/ci/source-test/wpt-metadata.yml b/taskcluster/ci/source-test/wpt-metadata.yml new file mode 100644 index 0000000000..b2c54d62b9 --- /dev/null +++ b/taskcluster/ci/source-test/wpt-metadata.yml @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + platform: lint/opt + treeherder: + kind: test + tier: 2 + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1800 + +summary: + description: Summarize wpt metadata + treeherder: + symbol: wpt-meta + index: + product: source + job-name: source-wpt-metadata-summary + run: + using: mach + mach: wpt-metadata-summary --out-dir=/builds/worker/artifacts + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + max-run-time: 2700 + when: + files-changed: + - 'testing/web-platform/meta/**' + - 'testing/web-platform/mozilla/meta/**' + - 'testing/web-platform/metasummary.py' + + +fission-regression: + description: Summarize fission regressions in wpt + treeherder: + symbol: wpt-fis + index: + product: source + job-name: source-wpt-fission-regressions + run: + using: mach + mach: wpt-fission-regressions --all-json /builds/worker/artifacts/regressions.json --untriaged /builds/worker/artifacts/untriaged.txt + worker: + artifacts: + - type: directory + path: /builds/worker/artifacts + name: public + max-run-time: 2700 + when: + files-changed: + - 'testing/web-platform/meta/**' + - 'testing/web-platform/mozilla/meta/**' + - 'testing/web-platform/fissionregressions.py' diff --git a/taskcluster/ci/spidermonkey/kind.yml b/taskcluster/ci/spidermonkey/kind.yml new file mode 100644 index 0000000000..5146dd717b --- /dev/null +++ b/taskcluster/ci/spidermonkey/kind.yml @@ -0,0 +1,74 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.spidermonkey:transforms + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + treeherder: + kind: build + tier: 1 + index: + product: firefox + worker-type: b-linux-gcp + run: + using: spidermonkey + when: + files-changed: + # any when.files-changed specified below in a job will be + # appended to this list + - build/** + - config/** + - configure.py + - dom/bindings/** + - intl/icu/** + - js/moz.configure + - js/public/** + - js/src/** + - layout/tools/reftest/reftest/** + - Makefile.in + - media/webrtc/trunk/tools/gyp/** + - memory/** + - mfbt/** + - modules/fdlibm/** + - modules/zlib/src/** + - mozglue/** + - moz.build + - moz.configure + - nsprpub/** + - python/** + - taskcluster/moz.build + - taskcluster/ci/spidermonkey/kind.yml + - testing/mozbase/** + - testing/web-platform/** + - test.mozbuild + - toolkit/mozapps/installer/package-name.mk + - toolkit/mozapps/installer/upload-files.mk + fetches: + toolchain: + by-worker-type: + .*-b-win2012: + - win64-clang + - win64-rust + default: + - linux64-clang + - linux64-gcc + - linux64-rust + - linux64-dump_syms + - sysroot-x86_64-linux-gnu + +jobs-from: + - linux.yml + - windows.yml diff --git a/taskcluster/ci/spidermonkey/linux.yml b/taskcluster/ci/spidermonkey/linux.yml new file mode 100644 index 0000000000..fd144ee7e7 --- /dev/null +++ b/taskcluster/ci/spidermonkey/linux.yml @@ -0,0 +1,543 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker: + max-run-time: 10800 + docker-image: {in-tree: debian11-amd64-build} + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "0" + run: + tooltool-downloads: public + +sm-package-linux64/opt: + description: "Spidermonkey source package and test" + index: + job-name: sm-package-linux64-opt + treeherder: + symbol: SM(pkg) + platform: linux64/opt + run: + using: spidermonkey-package + spidermonkey-variant: plain + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust + - linux64-gcc + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-plain-linux64/debug: + description: "Spidermonkey Plain" + index: + job-name: sm-plain-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(p) + run: + spidermonkey-variant: plaindebug + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-plain-linux64/opt: + description: "Spidermonkey Plain" + index: + job-name: sm-plain-linux64-opt + treeherder: + symbol: SM(p) + platform: linux64/opt + run: + spidermonkey-variant: plain + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust + - linux64-gcc + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-smoosh-linux64/debug: + description: "Spidermonkey SmooshMonkey" + index: + job-name: sm-smoosh-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(smoosh) + tier: 3 + run: + spidermonkey-variant: smooshdebug + run-on-projects: [] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + when: + files-changed: + - 'third_party/rust/jsparagus/**' + - 'js/src/frontend/Frontend2.cpp' + - 'js/src/frontend/Frontend2.h' + - 'js/src/frontend/SourceNotes.h' + - 'js/src/frontend/smoosh/**' + - 'js/public/Symbol.h' + - 'js/src/vm/AsyncFunctionResolveKind.h' + - 'js/src/vm/BytecodeFormatFlags.h' + - 'js/src/vm/CheckIsObjectKind.h' + - 'js/src/vm/FunctionFlags.h' + - 'js/src/vm/FunctionPrefixKind.h' + - 'js/src/vm/GeneratorAndAsyncKind.h' + - 'js/src/vm/GeneratorResumeKind.h' + - 'js/src/vm/Opcodes.h' + - 'js/src/vm/ThrowMsgKind.h' + - 'js/src/vm/StencilEnums.h' + +sm-smoosh-linux64/opt: + description: "Spidermonkey SmooshMonkey" + index: + job-name: sm-smoosh-linux64-opt + treeherder: + symbol: SM(smoosh) + platform: linux64/opt + tier: 3 + run: + spidermonkey-variant: smoosh + run-on-projects: [] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + when: + files-changed: + - 'third_party/rust/jsparagus/**' + - 'js/src/frontend/Frontend2.cpp' + - 'js/src/frontend/Frontend2.h' + - 'js/src/frontend/SourceNotes.h' + - 'js/src/frontend/smoosh/**' + - 'js/public/Symbol.h' + - 'js/src/vm/AsyncFunctionResolveKind.h' + - 'js/src/vm/BytecodeFormatFlags.h' + - 'js/src/vm/CheckIsObjectKind.h' + - 'js/src/vm/FunctionFlags.h' + - 'js/src/vm/FunctionPrefixKind.h' + - 'js/src/vm/GeneratorAndAsyncKind.h' + - 'js/src/vm/GeneratorResumeKind.h' + - 'js/src/vm/Opcodes.h' + - 'js/src/vm/ThrowMsgKind.h' + - 'js/src/vm/StencilEnums.h' + +sm-nojit-linux64/opt: + description: "Spidermonkey no JIT" + index: + job-name: sm-nojit-linux64-opt + treeherder: + symbol: SM(nojit) + platform: linux64/opt + run: + spidermonkey-variant: nojit + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-plain-linux32/debug: + description: "Spidermonkey Plain" + index: + job-name: sm-plain-linux32-debug + treeherder: + platform: linux32/debug + symbol: SM(p) + run: + spidermonkey-variant: plaindebug + spidermonkey-platform: linux + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + +sm-arm-sim-linux32/debug: + description: "Spidermonkey ARM sim" + index: + job-name: sm-arm-sim-linux32-debug + treeherder: + platform: linux32/debug + symbol: SM(arm) + run: + spidermonkey-variant: arm-sim + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-i686-linux-gnu + - sysroot-x86_64-linux-gnu + +sm-arm64-sim-linux64/debug: + description: "Spidermonkey ARM64 sim" + index: + job-name: sm-arm64-sim-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(arm64) + run: + spidermonkey-variant: arm64-sim + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-asan-linux64/opt: + description: "Spidermonkey Address Sanitizer" + index: + job-name: sm-linux64-asan-opt + treeherder: + symbol: SM(asan) + platform: linux64/opt + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + run: + spidermonkey-variant: asan + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-compacting-linux64/debug: + description: "Spidermonkey Compacting" + index: + job-name: sm-compacting-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(cgc) + run: + spidermonkey-variant: compacting + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-linux64-wasi/opt: + description: "Spidermonkey WASI opt build" + index: + job-name: sm-linux64-wasi-opt + treeherder: + platform: linux64/opt + symbol: SM(wasi) + tier: 2 + run: + spidermonkey-variant: wasi + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +# Like sm-linux64-wasi/opt but with Intl/ICU enabled. +sm-linux64-wasi-intl/opt: + description: "Spidermonkey WASI Intl opt build" + index: + job-name: sm-linux64-wasi-intl-opt + treeherder: + platform: linux64/opt + symbol: SM(wasi-intl) + tier: 2 + run: + spidermonkey-variant: wasi-intl + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + +sm-wasm-no-experimental-linux64/debug: + description: "Spidermonkey WebAssembly No experimental features" + index: + job-name: sm-wasm-no-experimental-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(wasm-no-experimental) + tier: 2 + run: + spidermonkey-variant: wasm-noexperimental + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust + - linux64-gcc + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-msan-linux64/opt: + description: "Spidermonkey Memory Sanitizer" + index: + job-name: sm-linux64-msan-opt + treeherder: + symbol: SM(msan) + platform: linux64/opt + tier: 3 + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + run: + spidermonkey-variant: msan + # Disable by default by allow try pushes to explicitly request. + run-on-projects: [] + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-tsan-linux64/opt: + description: "Spidermonkey Thread Sanitizer" + index: + job-name: sm-linux64-tsan-opt + treeherder: + symbol: SM(tsan) + platform: linux64/opt + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + run: + spidermonkey-variant: tsan + fetches: + toolchain: + - linux64-clang + - linux64-gcc + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust-dev + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-rootanalysis-linux64/debug: + description: "Spidermonkey Root Analysis" + index: + job-name: sm-rootanalysis-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(r) + run: + spidermonkey-variant: rootanalysis + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-nonunified-linux64/debug: + description: "Spidermonkey Non-Unified Debug" + index: + job-name: sm-nonunified-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(nu) + run: + spidermonkey-variant: nonunified + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-fuzzing-linux64/opt: + description: "Spidermonkey Fuzzing" + index: + job-name: sm-linux64-fuzzing + treeherder: + platform: linux64/opt + symbol: SM(f) + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + run: + spidermonkey-variant: fuzzing + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-fuzzilli-linux64/debug: + description: "Spidermonkey Fuzzilli debug" + index: + job-name: sm-linux64-fuzzilli-debug + treeherder: + platform: linux64/debug + symbol: SM(fuzzilli) + worker: + env: + MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1" + run: + spidermonkey-variant: fuzzilli + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-gdb-linux64/debug: + description: "Spidermonkey GDB Pretty-printers" + index: + job-name: sm-gdb-linux64 + worker: + docker-image: {in-tree: gdb-test} + treeherder: + platform: linux64/debug + tier: 2 + symbol: SM(gdb) + run: + spidermonkey-variant: gdb + fetches: + toolchain: + - linux64-clang + - linux64-gcc + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + +sm-rt-linux64/debug: + description: "SpiderMonkey Records&Tuples" + index: + job-name: sm-rt-linux64-debug + treeherder: + platform: linux64/debug + symbol: SM(rt) + run: + spidermonkey-variant: rtdebug + fetches: + toolchain: + - linux64-clang + - linux64-cbindgen + - linux64-dump_syms + - linux64-breakpad-injector + - linux64-minidump-stackwalk + - linux64-llvm-symbolizer + - linux64-rust + - linux64-pkgconf + - sysroot-x86_64-linux-gnu diff --git a/taskcluster/ci/spidermonkey/windows.yml b/taskcluster/ci/spidermonkey/windows.yml new file mode 100644 index 0000000000..7bdb09281d --- /dev/null +++ b/taskcluster/ci/spidermonkey/windows.yml @@ -0,0 +1,118 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-win2012 + worker: + max-run-time: 10800 + run: + tooltool-downloads: public + +sm-plain-win64/debug: + description: "Spidermonkey Plain win64 debug" + index: + job-name: sm-plain-win64-debug + treeherder: + platform: windows2012-64/debug + symbol: SM(p) + run: + spidermonkey-variant: plaindebug + spidermonkey-platform: win64 + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs + +sm-plain-win32/debug: + description: "Spidermonkey Plain win32 debug" + index: + job-name: sm-plain-win32-debug + treeherder: + platform: windows2012-32/debug + symbol: SM(p) + tier: 2 + run: + spidermonkey-variant: plaindebug + spidermonkey-platform: win32 + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs + +sm-plain-win64/opt: + description: "Spidermonkey Plain win64 opt" + index: + job-name: sm-plain-win64-opt + treeherder: + platform: windows2012-64/opt + symbol: SM(p) + run: + spidermonkey-variant: plain + spidermonkey-platform: win64 + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs + +sm-plain-win32/opt: + description: "Spidermonkey Plain win32 opt" + index: + job-name: sm-plain-win32-opt + treeherder: + platform: windows2012-32/opt + symbol: SM(p) + tier: 2 + run: + spidermonkey-variant: plain + spidermonkey-platform: win32 + run-on-projects: ['mozilla-central'] + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs + +sm-compacting-win64/debug: + description: "Spidermonkey Compacting win64 debug" + index: + job-name: sm-compacting-win64-debug + treeherder: + platform: windows2012-64/debug + symbol: SM(cgc) + run: + spidermonkey-variant: compacting + spidermonkey-platform: win64 + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs + +sm-compacting-win32/debug: + description: "Spidermonkey Compacting win32 debug" + index: + job-name: sm-compacting-win32-debug + treeherder: + platform: windows2012-32/debug + symbol: SM(cgc) + tier: 2 + run: + spidermonkey-variant: compacting + spidermonkey-platform: win32 + run-on-projects: [] + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-mozmake + - vs diff --git a/taskcluster/ci/startup-test/kind.yml b/taskcluster/ci/startup-test/kind.yml new file mode 100644 index 0000000000..f466e25b83 --- /dev/null +++ b/taskcluster/ci/startup-test/kind.yml @@ -0,0 +1,128 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + # We want to test the signed version of a build, to make sure + # any startup problems or crashes caused by signing are caught + # This means we depend on a different kind depending on the platform + # linux + - build-signing + # mac + - repackage + # windows + - repackage-signing + +transforms: + - gecko_taskgraph.transforms.startup_test:transforms + - gecko_taskgraph.transforms.release:run_on_releases + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + name: startup-test + description: Check whether or not a product crashes on startup + run-on-projects: ['mozilla-central'] + run-on-releases: ['nightly', 'beta', 'release-rc'] + worker: + max-run-time: 3600 + run: + sparse-profile: mozharness + attributes: + build_type: opt + treeherder: + symbol: SUT + kind: test + tier: 1 + +jobs: + linux32: + dependencies: + build-signing: build-signing-linux-shippable/opt + run: + using: run-task + cwd: "{checkout}" + extra-config: + upstream_kind: build-signing + upstream_artifact: target.tar.bz2 + binary: firefox + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: ubuntu1804-test} + shipping-product: firefox + attributes: + build_platform: linux-shippable + treeherder: + platform: linux-shippable/opt + + linux64: + dependencies: + build-signing: build-signing-linux64-shippable/opt + run: + using: run-task + cwd: "{checkout}" + extra-config: + upstream_kind: build-signing + upstream_artifact: target.tar.bz2 + binary: firefox + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: ubuntu1804-test} + shipping-product: firefox + attributes: + build_platform: linux64-shippable + treeherder: + platform: linux64-shippable/opt + + macosx64: + dependencies: + repackage: repackage-macosx64-shippable/opt + run: + using: mach + python-version: 3 + extra-config: + upstream_kind: repackage + upstream_artifact: target.dmg + binary: Contents/MacOS/firefox + worker-type: t-osx-1015-r8 + shipping-product: firefox + attributes: + build_platform: macosx64-shippable + treeherder: + platform: macosx64-shippable/opt + + win32: + dependencies: + repackage-signing: repackage-signing-win32-shippable/opt + run: + using: mach + python-version: 3 + extra-config: + upstream_kind: repackage-signing + upstream_artifact: target.installer.exe + binary: core/firefox.exe + worker-type: win11-64-2009-source + shipping-product: firefox + attributes: + build_platform: win32-shippable + treeherder: + platform: windows2012-32-shippable/opt + + win64: + dependencies: + repackage-signing: repackage-signing-win64-shippable/opt + run: + using: mach + python-version: 3 + extra-config: + upstream_kind: repackage-signing + upstream_artifact: target.installer.exe + binary: core/firefox.exe + worker-type: win11-64-2009-source + shipping-product: firefox + attributes: + build_platform: win64-shippable + treeherder: + platform: windows2012-64-shippable/opt diff --git a/taskcluster/ci/static-analysis-autotest/kind.yml b/taskcluster/ci/static-analysis-autotest/kind.yml new file mode 100644 index 0000000000..ceacc22ce1 --- /dev/null +++ b/taskcluster/ci/static-analysis-autotest/kind.yml @@ -0,0 +1,101 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + index: + product: firefox + worker: + skip-artifacts: true + max-run-time: 3600 + env: + PERFHERDER_EXTRA_OPTIONS: static-analysis-autotest + use-system-python: false + run-on-projects: ['mozilla-central'] + run: + using: mozharness + actions: [static-analysis-autotest] + script: mozharness/scripts/fx_desktop_build.py + treeherder: + symbol: Sa + kind: build + tier: 1 + +jobs: + linux64-st-autotest/debug: + description: "Linux64 Debug Static Analysis Autotest" + index: + job-name: linux64-st-autotest-debug + treeherder: + platform: linux64/debug + worker-type: t-linux-large + worker: + docker-image: {in-tree: static-analysis-build} + env: + # clang-tidy needs a recent libstdc++, which can be found in the clang + # toolchain. + LD_LIBRARY_PATH: /builds/worker/checkouts/gecko/clang/lib + PERFHERDER_EXTRA_OPTIONS: static-analysis-autotest + run: + config: + - builds/releng_base_firefox.py + - builds/releng_sub_linux_configs/64_stat_and_debug.py + tooltool-downloads: public + keep-artifacts: false + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-clang-tidy + - linux64-rust + - linux64-sccache + - linux64-cbindgen + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + + win64-st-autotest/debug: + description: "Win64 Debug Static Analysis Autotest" + index: + job-name: win64-st-autotest-debug + treeherder: + platform: windows2012-64/debug + tier: 2 + worker-type: b-win2012 + run: + config: + - builds/releng_base_firefox.py + - builds/taskcluster_base_windows.py + - builds/taskcluster_base_win64.py + - builds/taskcluster_sub_win64/debug.py + extra-config: + mozconfig_variant: debug + use-sccache: true + fetches: + toolchain: + - win64-clang + - win64-rust + - win64-sccache + - win64-cbindgen + - win64-clang-tidy + - win64-nasm + - win64-node + - win64-dump_syms + - win64-winchecksec + - vs + - sysroot-wasm32-wasi diff --git a/taskcluster/ci/system-symbols-reprocess/kind.yml b/taskcluster/ci/system-symbols-reprocess/kind.yml new file mode 100644 index 0000000000..1cde38d58b --- /dev/null +++ b/taskcluster/ci/system-symbols-reprocess/kind.yml @@ -0,0 +1,46 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +# multi_dep loader will need to group on "build_platform" attribute +group-by: platform + +# we need that to apply grouping only on jobs that have "build_platform", so we +# dont fail for the "fetch" kind that does is a dependency but does not have it +only-for-attributes: + - build_platform + +transforms: + - gecko_taskgraph.transforms.reprocess_symbols:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +primary-dependency: system-symbols + +kind-dependencies: + - system-symbols + - system-symbols-upload + - fetch + +job-template: + description: Reprocess Symbols on Crash-Stats + attributes: + cron: true + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 7200 + env: + # {level} gets replaced in the reprocess_symbols transform + CRASHSTATS_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-reprocess" + DUMP_SYMS: "/bin/false" + run: + using: run-task + command: {artifact-reference: "${MOZ_FETCHES_DIR}/symbol-scrapers/reprocess.sh "} + fetches: + fetch: + - symbol-scrapers + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-reprocess diff --git a/taskcluster/ci/system-symbols-upload/kind.yml b/taskcluster/ci/system-symbols-upload/kind.yml new file mode 100644 index 0000000000..66d7c65f24 --- /dev/null +++ b/taskcluster/ci/system-symbols-upload/kind.yml @@ -0,0 +1,31 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.upload_symbols:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - system-symbols + +job-template: + description: Upload Symbols + attributes: + cron: true + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: "lint"} + max-run-time: 1200 + env: + # {level} gets replaced in the upload_symbols transform + SYMBOL_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-upload" + run: + using: mach + mach: {artifact-reference: "python toolkit/crashreporter/tools/upload_symbols.py --ignore-missing"} + sparse-profile: upload-symbols + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-upload diff --git a/taskcluster/ci/system-symbols/kind.yml b/taskcluster/ci/system-symbols/kind.yml new file mode 100644 index 0000000000..eed2bd6964 --- /dev/null +++ b/taskcluster/ci/system-symbols/kind.yml @@ -0,0 +1,248 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - fetch + +transforms: + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + cron: true + # This enables uploading symbols. + enable-full-crashsymbols: true + fetches: + toolchain: + - linux64-dump_syms + treeherder: + platform: symbols/opt + kind: other + tier: 2 + worker-type: b-linux-gcp + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + +jobs: + mac: + description: Extract macOS system symbols found in crashreports + attributes: + build_platform: macos + index: + product: system-symbols + job-name: mac + type: generic + worker: + env: + PROCESSED_PACKAGES_INDEX: gecko.v2.mozilla-central.latest.system-symbols.mac + PROCESSED_PACKAGES_PATH: public/build/processed-packages.gz + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-mac} + max-run-time: 28800 + run: + using: run-task + command: >- + ./run.sh + treeherder: + symbol: system-symbols-mac + fetches: + toolchain: + - linux64-libdmg + win: + description: Extract windows system symbols found in crashreports + attributes: + build_platform: windows + index: + product: system-symbols + job-name: win + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-win} + max-run-time: 3600 + run: + using: run-task + command: >- + ./run.sh + treeherder: + symbol: system-symbols-win + archlinux: + description: Extract ArchLinux system symbols found in crashreports + attributes: + build_platform: archlinux + index: + product: system-symbols + job-name: archlinux + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh arch + treeherder: + symbol: sys-symbols-archlinux + fetches: + fetch: + - symbol-scrapers + debian: + description: Extract Debian system symbols found in crashreports + attributes: + build_platform: debian + index: + product: system-symbols + job-name: debian + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh debian + treeherder: + symbol: sys-symbols-debian + fetches: + fetch: + - symbol-scrapers + firefox-snap: + description: Extract Firefox Snap symbols found in crashreports + attributes: + build_platform: firefox-snap + index: + product: system-symbols + job-name: firefox-snap + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh firefox-snap + treeherder: + symbol: firefox-symbols-snap + fetches: + fetch: + - symbol-scrapers + gnome-sdk-snap: + description: Extract GNOME SDK Snap symbols found in crashreports + attributes: + build_platform: gnome-sdk-snap + index: + product: system-symbols + job-name: gnome-sdk-snap + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh gnome-sdk-snap + treeherder: + symbol: gnome-sdk-symbols-snap + fetches: + fetch: + - symbol-scrapers + fedora: + description: Extract Fedora system symbols found in crashreports + attributes: + build_platform: fedora + index: + product: system-symbols + job-name: fedora + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh fedora + treeherder: + symbol: sys-symbols-fedora + fetches: + fetch: + - symbol-scrapers + opensuse: + description: Extract OpenSUSE system symbols found in crashreports + attributes: + build_platform: opensuse + index: + product: system-symbols + job-name: opensuse + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh opensuse + treeherder: + symbol: sys-symbols-opensuse + fetches: + fetch: + - symbol-scrapers + ubuntu: + description: Extract Ubuntu system symbols found in crashreports + attributes: + build_platform: ubuntu + index: + product: system-symbols + job-name: ubuntu + type: generic + worker: + artifacts: + - name: public/build + type: directory + path: /builds/worker/artifacts/ + docker-image: {in-tree: system-symbols-linux-scraper} + max-run-time: 14400 + run: + using: run-task + command: >- + ./run.sh ubuntu + treeherder: + symbol: sys-symbols-ubuntu + fetches: + fetch: + - symbol-scrapers diff --git a/taskcluster/ci/test/awsy.yml b/taskcluster/ci/test/awsy.yml new file mode 100644 index 0000000000..e730460b35 --- /dev/null +++ b/taskcluster/ci/test/awsy.yml @@ -0,0 +1,75 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: awsy + max-run-time: 7200 + instance-size: xlarge + virtualization: + by-test-platform: + windows.*(?:-shippable)?-qr/.*: virtual-with-gpu + default: virtual + allow-software-gl-layers: false + mozharness: + script: awsy_script.py + config: + by-test-platform: + windows.*: + - awsy/taskcluster_windows_config.py + macosx.*/opt: + - awsy/macosx_config.py + default: + - awsy/linux_config.py + tier: default + test-manifest-loader: null # don't load tests in the taskgraph + + +awsy: + description: Are we slim yet - tp5 pageset + treeherder-symbol: SY(sy) + run-on-projects: [] + +awsy-tp6: + description: Are we slim yet - tp6 pageset + treeherder-symbol: SY(sy-tp6) + run-on-projects: + by-test-platform: + .*-devedition/.*: [] # don't run on devedition + windows.*-32.*/opt: [] + (linux|windows|mac)(?!.*shippable).*/opt: [] + default: [integration, mozilla-central, mozilla-beta, mozilla-release] + mozharness: + extra-options: + - --tp6 + +awsy-dmd: + description: Are we slim yet - dmd enabled + treeherder-symbol: SY(sy-d) + run-on-projects: [] + mozharness: + extra-options: + - --dmd + +awsy-base: + description: Are we slim yet - about:blank base case + treeherder-symbol: SY(ab) + run-on-projects: + by-test-platform: + .*-devedition/.*: [] # don't run on devedition. + windows.*-32.*/opt: [] + (linux|windows|mac)(?!.*shippable).*/opt: [] + default: [integration, mozilla-central, mozilla-beta, mozilla-release] + tier: default + mozharness: + extra-options: + - --base + +awsy-base-dmd: + description: Are we slim yet - about:blank base case - dmd enabled + treeherder-symbol: SY(ab-d) + run-on-projects: [] + mozharness: + extra-options: + - --base + - --dmd diff --git a/taskcluster/ci/test/browsertime-desktop.yml b/taskcluster/ci/test/browsertime-desktop.yml new file mode 100644 index 0000000000..b15fe1ae36 --- /dev/null +++ b/taskcluster/ci/test/browsertime-desktop.yml @@ -0,0 +1,721 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + max-run-time: + by-test-platform: + .*-qr/.*: 2400 + default: 1800 + suite: raptor + run-on-projects: + by-test-platform: + linux.*shippable[^-qr].*: [mozilla-central] + default: [] + limit-platforms: + by-app: + chrome: + - .*shippable.* + chromium: + - .*shippable.* + safari: + - .*macos.*shippable.* + custom-car: + - linux.*shippable.* + - windows10-64.*shippable.* + default: [] + test-manifest-loader: null # don't load tests in the taskgraph + tier: 3 + virtualization: hardware + mozharness: + script: raptor_script.py + config: + by-test-platform: + macosx.*: + - raptor/mac_config.py + windows.*: + - raptor/windows_config.py + default: + - raptor/linux_config.py + extra-options: + - --conditioned-profile=settled + fetches: + toolchain: + by-app: + custom-car: + by-test-platform: + # this satisfied taskgraph for now, but once mac/win is implemented + # then linux will be the default + linux.*: + - linux64-custom-car + - linux64-minidump-stackwalk + - linux64-fix-stacks + windows10-64.*: + - win64-custom-car + - win64-minidump-stackwalk + - win64-fix-stacks + default: [] + default: + by-test-platform: + windows.*-32.*.: + - win32-minidump-stackwalk + - win32-fix-stacks + windows10-64.*: + - win64-minidump-stackwalk + - win64-fix-stacks + macos.*: + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + default: + - linux64-minidump-stackwalk + - linux64-fix-stacks + +browsertime-tp6: + <<: &tp6-defaults + description: Raptor (browsertime) tp6 page-load tests + limit-platforms: + by-app: + chrome: + - .*shippable.* + chromium: + - .*shippable.* + safari: + - .*macos.*shippable.* + custom-car: + - (windows10-64|linux).*shippable.* + default: [] + max-run-time: + by-subtest: + imgur: 4800 + default: 4000 + mozharness: + extra-options: + by-test-platform: + windows10-64.*shippable.*-qr.*: + - --chimera + - --browsertime-no-ffwindowrecorder + - --conditioned-profile=settled + - --extra-profiler-run + - --extra-summary-methods=geomean + default: + - --chimera + - --conditioned-profile=settled + - --extra-profiler-run + - --extra-summary-methods=geomean + run-on-projects: + by-subtest: + netflix: # Bug 1756212 - Disable temporarily due to perma on mac + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + (linux|windows10-64).*shippable-qr.*: [trunk, mozilla-beta, mozilla-release] + macosx1015.*shippable-qr.*: [] + default: [] + default: [] + default: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release] + default: [] + default: [] + treeherder-symbol: Btime(tp6) + raptor: + apps: [firefox, chrome, chromium] + test: tp6 + run-visual-metrics: true + subtests: + - buzzfeed + - ebay + - espn + - expedia + - [facebook, fb] + - [google-docs, gdocs] + - [google-mail, gmail] + - [google-search, gsearch] + - imdb + - imgur + - linkedin + - microsoft + - netflix + - nytimes + - office + - outlook + - paypal + - pinterest + - reddit + - tumblr + - twitch + - wikia + - youtube + tier: + by-app: + firefox: 2 + default: 3 + +browsertime-responsiveness: + <<: *tp6-defaults + raptor: + apps: [firefox, chrome, chromium] + test: tp6 + run-visual-metrics: true + subtests: + - cnn-nav + - [facebook-nav, fbnav] + - [reddit-billgates-ama, rdt-ama] + - [reddit-billgates-post-1, rdt-post-1] + - [reddit-billgates-post-2, rdt-post-2] + mozharness: + extra-options: + by-test-platform: + windows10-.*: + - --cold + - --browsertime-no-ffwindowrecorder + - --conditioned-profile=settled + - --extra-profiler-run + default: + - --cold + - --conditioned-profile=settled + - --extra-profiler-run + run-on-projects: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk] + default: [] + default: [] + tier: + by-app: + firefox: 2 + default: 3 + +browsertime-tp6-essential: + <<: *tp6-defaults + <<: &tp6-essential-defaults + mozharness: + extra-options: + by-test-platform: + windows10-64.*shippable.*-qr.*: + - --chimera + - --browsertime-no-ffwindowrecorder + - --conditioned-profile=settled + - --collect-perfstats + - --extra-profiler-run + - --extra-summary-methods=geomean + default: + - --chimera + - --conditioned-profile=settled + - --extra-profiler-run + - --extra-summary-methods=geomean + raptor: + apps: [firefox, chrome, chromium, custom-car] + test: tp6 + run-visual-metrics: true + subtests: + - amazon + - [bing-search, bing] + - cnn + - fandom + - [google-slides, gslides] + - instagram + - twitter + - wikipedia + - yahoo-mail + run-on-projects: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + macosx1100.*shippable.*: [mozilla-central, mozilla-beta] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release] + default: [] + default: [] + tier: + by-test-platform: + linux1804-64-clang-trunk-qr/opt: 2 + default: + by-app: + firefox: 1 + default: 3 + +browsertime-tp6-bytecode: + <<: *tp6-defaults + <<: *tp6-essential-defaults + raptor: + apps: [firefox] + test: tp6 + run-visual-metrics: true + subtests: + - amazon + - [bing-search, bing] + - cnn + - fandom + - [google-slides, gslides] + - instagram + - twitter + - wikipedia + - yahoo-mail + run-on-projects: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + macosx1100.*shippable.*: [mozilla-central, mozilla-beta] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release] + default: [] + default: [] + mozharness: + extra-options: + by-test-platform: + windows10-64.*shippable.*-qr.*: + - --chimera + - --browsertime + - --browsertime-no-ffwindowrecorder + - --conditioned-profile=settled + - --test-bytecode-cache + - --extra-profiler-run + default: + - --chimera + - --browsertime + - --conditioned-profile=settled + - --test-bytecode-cache + - --extra-profiler-run + tier: + by-app: + firefox: 2 + default: 3 + treeherder-symbol: Btime-cache(tp6) + +browsertime-benchmark: + description: Raptor (browsertime) Benchmark tests + raptor: + apps: [firefox, chrome, chromium, safari, custom-car] + subtests: + by-app: + firefox: + - ares6 + - [assorted-dom, dom] + - [jetstream2, js2] + - [matrix-react-bench, mrb] + - [motionmark-animometer, mm-a] + - [motionmark-htmlsuite, mm-h] + - [speedometer, sp] + - [speedometer3, sp3] + - [stylebench, sb] + - [sunspider, ss] + - [twitch-animation, tw-a] + - [unity-webgl, ugl] + - [webaudio, wa] + safari: + - ares6 + - [assorted-dom, dom] + - [jetstream2, js2] + # - [matrix-react-bench, mrb] (Bug 1802922) + - [motionmark-animometer, mm-a] + - [motionmark-htmlsuite, mm-h] + - [speedometer, sp] + - [speedometer3, sp3] + - [stylebench, sb] + - [sunspider, ss] + - [unity-webgl, ugl] + # - [webaudio, wa] (Bug 1802922) + custom-car: + - [speedometer, sp] + - [speedometer3, sp3] + default: + - ares6 + - [assorted-dom, dom] + - [jetstream2, js2] + - [matrix-react-bench, mrb] + - [motionmark-animometer, mm-a] + - [motionmark-htmlsuite, mm-h] + - [speedometer, sp] + - [speedometer3, sp3] + - [stylebench, sb] + - [sunspider, ss] + - [unity-webgl, ugl] + - [webaudio, wa] + treeherder-symbol: Btime() + tier: + by-app: + firefox: + by-subtest: + motionmark-animometer: + by-test-platform: + linux1804-64-clang-trunk-qr/opt: 2 + default: 1 + unity-webgl: 3 + default: + by-test-platform: + windows10-64-ccov.*/.*: 3 + linux64-ccov.*/.*: 3 + default: 2 + default: + by-subtest: + unity-webgl: 3 + default: 2 + run-on-projects: + by-subtest: + speedometer3: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64.*shippable-qr/.*: [trunk, mozilla-release] + .*nightlyasrelease.*: [autoland] + default: [] + default: [] + unity-webgl: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64.*shippable-qr/.*: [trunk, mozilla-release] + default: [] + default: [] + speedometer: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release] + .*nightlyasrelease.*: [autoland] + default: [] + default: [] + default: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release] + default: [] + default: [] + max-run-time: + by-subtest: + ares6: 1500 + assorted-dom: + by-test-platform: + .*-qr/.*: 2100 + default: 1500 + jetstream2: 8000 + matrix-react-bench: 1500 + motionmark-htmlsuite: 1500 + unity-webgl: 1500 + default: 900 + mozharness: + extra-options: + - --extra-profiler-run + +browsertime-benchmark-wasm: + description: Raptor (browsertime) WASM benchmarks + raptor: + apps: [firefox, chrome, chromium] # Safari depends on Bug 1802922 + subtests: + by-app: + firefox: + - [wasm-godot, godot] + - [wasm-godot-baseline, godot-b] + - [wasm-godot-optimizing, godot-i] + - [wasm-misc, wm] + - [wasm-misc-baseline, wm-b] + - [wasm-misc-optimizing, wm-i] + default: + - [wasm-misc, wm] + - [wasm-godot, godot] + treeherder-symbol: Btime() + tier: 2 + run-on-projects: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central, mozilla-release] + default: [] + default: [] + max-run-time: + by-subtest: + wasm-godot: 1500 + wasm-godot-baseline: 1500 + default: 900 + mozharness: + extra-options: + - --extra-profiler-run + +browsertime-youtube-playback: + description: Browsertime YouTube Playback on Firefox + raptor: + apps: [firefox] + subtests: + by-app: + firefox: + - [youtube-playback-av1-sfr, ytp-av1-sfr] + - [youtube-playback-h264-sfr, ytp-h264-sfr] + - [youtube-playback-hfr, ytp-hfr] + - [youtube-playback-vp9-sfr, ytp-vp9-sfr] + - [youtube-playback-widevine-hfr, ytp-widevine-hfr] + - [youtube-playback-widevine-h264-sfr, ytp-widevine-h264-sfr] + - [youtube-playback-widevine-vp9-sfr, ytp-widevine-vp9-sfr] + treeherder-symbol: Btime() + run-on-projects: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central, mozilla-release] + default: [] + tier: 2 + limit-platforms: + by-subtest: + youtube-playback-av1-sfr: + - macosx1015-64-shippable-qr/opt + default: [] + max-run-time: + by-subtest: + youtube-playback-hfr: 3600 + youtube-playback-widevine.*: 3600 + default: 2700 + +browsertime-youtube-playback-power: + description: Browsertime YouTube Playback on Firefox with power usage tracking + raptor: + apps: [firefox] + subtests: + by-app: + firefox: + + - [youtube-playback-h264-1080p30, ytp-h264-1080p30] + - [youtube-playback-h264-1080p60, ytp-h264-1080p60] + - [youtube-playback-h264-full-1080p30, ytp-h264-full-1080p30] + - [youtube-playback-h264-full-1080p60, ytp-h264-full-1080p60] + - [youtube-playback-v9-1080p30, ytp-v9-1080p30] + - [youtube-playback-v9-1080p60, ytp-v9-1080p60] + - [youtube-playback-v9-full-1080p30, ytp-v9-full-1080p30] + - [youtube-playback-v9-full-1080p60, ytp-v9-full-1080p60] + treeherder-symbol: Btime() + run-on-projects: + by-test-platform: + macosx.*shippable-qr.*: [mozilla-central] + default: [] + tier: 2 + max-run-time: 2700 + +browsertime-tp6-live: + <<: *tp6-defaults + description: Raptor (browsertime) tp6 on live-sites + mozharness: + extra-options: + - --browser-cycles=15 + - --chimera + - --live-sites + - --extra-profiler-run + raptor: + apps: [firefox, chrome, chromium, safari] + test: tp6 + run-visual-metrics: true + subtests: + by-app: + safari: + - amazon + - [bing-search, bing] + - ebay + - [facebook, fb] + # - fandom (Bug 1802922) + - [google-docs, gdocs] + # - [google-mail, gmail] (Bug 1802922) + - [google-search, gsearch] + - [google-slides, gslides] + - imdb + # - imgur (Bug 1802922) + # - instagram (see bug 1736999) + - linkedin + - microsoft + # - netflix (Bug 1802922) + # - office (site loads blank page if not signed in) + - outlook + - paypal + - pinterest + - reddit + - tumblr + - twitch + - twitter + - wikipedia + # - yahoo-mail (Bug 1802922) + - youtube + chrome: + - amazon + - [bing-search, bing] + - ebay + - [facebook, fb] + - fandom + - [google-docs, gdocs] + - [google-mail, gmail] + - [google-search, gsearch] + - [google-slides, gslides] + - imdb + # - imgur (see bugs 1825337 & 1817420) + # - instagram (see bug 1736999) + - linkedin + - microsoft + - netflix + # - office (site loads blank page if not signed in) + - outlook + - paypal + - pinterest + - reddit + - tumblr + - twitch + - twitter + - wikipedia + - yahoo-mail + - youtube + default: + - amazon + - [bing-search, bing] + - ebay + - [facebook, fb] + - fandom + - [google-docs, gdocs] + - [google-mail, gmail] + - [google-search, gsearch] + - [google-slides, gslides] + - imdb + - imgur + # - instagram (see bug 1736999) + - linkedin + - microsoft + - netflix + # - office (site loads blank page if not signed in) + - outlook + - paypal + - pinterest + - reddit + - tumblr + - twitch + - twitter + - wikipedia + - yahoo-mail + - youtube + run-on-projects: [] + tier: 3 + treeherder-symbol: Btime-live(tp6) + +browsertime-tp6-live-sheriffed: + <<: *tp6-defaults + raptor: + apps: [firefox] + test: tp6 + run-visual-metrics: true + subtests: + - cnn + description: Raptor (browsertime) tp6 on live-sites + mozharness: + extra-options: + - --browser-cycles=5 + - --chimera + - --live-sites + - --extra-profiler-run + run-on-projects: + by-test-platform: + (linux|windows10-64|macos)(?!.*shippable).*: [] + (linux|windows|macosx1015)(?!.*-qr).*: [] + windows.*-32.*: [] + default: [] + tier: 2 + treeherder-symbol: Btime-live(tp6) + +browsertime-tp6-profiling: + <<: *tp6-defaults + raptor: + apps: [firefox] + test: tp6 + run-visual-metrics: true + subtests: [amazon] + description: Raptor (browsertime) tp6 page-load tests with Gecko Profiling + mozharness: + extra-options: + - --chimera + - --gecko-profile + run-on-projects: + by-test-platform: + (linux|windows|macosx1015).*shippable-qr.*: [mozilla-central] + default: [] + tier: 2 + treeherder-symbol: Btime-Prof(tp6) + +browsertime-custom: + raptor: + apps: [firefox] + run-visual-metrics: true + subtests: [[process-switch, ps]] + description: Raptor (browsertime) custom pageload tests + max-run-time: 2700 + mozharness: + extra-options: + - --chimera + - --extra-profiler-run + run-on-projects: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central] + default: [] + tier: 1 + treeherder-symbol: Btime(ps) + +browsertime-first-install: + raptor: + apps: [firefox] + run-visual-metrics: true + subtests: [welcome] + description: Raptor (browsertime) custom pageload tests + max-run-time: 2700 + mozharness: + extra-options: + - --chimera + - --extra-profiler-run + run-on-projects: + by-test-platform: + windows.*-32.*: [] + .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk] + default: [] + tier: 1 + treeherder-symbol: Btime(welcome) + +browsertime-regression-tests: + raptor: + apps: [firefox] + subtests: [[constant-regression, regress-c]] + description: Raptor (browsertime) tests for our regression detection system + max-run-time: 700 + run-on-projects: [autoland] + limit-platforms: + - .*linux(?!.*shippable)(?!.*clang).* + mozharness: + extra-options: + by-test-platform: + windows10-64.*shippable.*-qr.*: [] + default: [] + tier: 2 + treeherder-symbol: Btime(regressor) + +browsertime-upload: + raptor: + apps: [firefox, chrome, chromium, safari] + subtests: + - [upload, upload-h2] + - upload-h3 + description: Raptor (browsertime) http2, http3 file upload performance test + max-run-time: 2700 + run-on-projects: + by-app: + firefox: + by-test-platform: + windows.*-32.*: [] + .*64.*shippable-qr/.*: [autoland, mozilla-central] + default: [] + default: [] + tier: 3 + treeherder-symbol: Btime(upload) + fetches: + fetch: + - upload-speed-test-file diff --git a/taskcluster/ci/test/browsertime-mobile.yml b/taskcluster/ci/test/browsertime-mobile.yml new file mode 100644 index 0000000000..7340fca083 --- /dev/null +++ b/taskcluster/ci/test/browsertime-mobile.yml @@ -0,0 +1,380 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + max-run-time: 3600 + suite: raptor + variants: + - geckoview-no-fission + run-on-projects: [] + tier: 3 + test-manifest-loader: null # don't load tests in the taskgraph + target: + by-app: + fenix: + by-test-platform: + android-hw.*-aarch64.*/.*: + index: mobile.v3.firefox-android.apks.fenix-nightly.latest.arm64-v8a + name: build/fenix/arm64-v8a/target.apk + default: + index: mobile.v3.firefox-android.apks.fenix-nightly.latest.armeabi-v7a + name: build/fenix/armeabi-v7a/target.apk + refbrow: + by-test-platform: + android-hw.*-aarch64.*/.*: + index: mobile.v2.reference-browser.raptor.latest.arm64-v8a + name: target.arm64-v8a.apk + default: + index: mobile.v2.reference-browser.raptor.latest.armeabi-v7a + name: target.armeabi-v7a.apk + default: geckoview_example.apk + virtualization: hardware + raptor: + activity: + by-app: + fenix: org.mozilla.fenix.IntentReceiverActivity + geckoview: org.mozilla.geckoview_example.GeckoViewActivity + refbrow: org.mozilla.reference.browser.BrowserTestActivity + default: None + binary-path: + by-app: + fenix: org.mozilla.fenix + geckoview: org.mozilla.geckoview_example + refbrow: org.mozilla.reference.browser.raptor + default: None + mozharness: + script: raptor_script.py + config: + - raptor/android_hw_config.py + extra-options: + # Bug 1635749, disable window recorder temporarily + - --browsertime-no-ffwindowrecorder + - --conditioned-profile=settled + optimization: + skip-unless-backstop: null + limit-platforms: + by-app: + chrome-m: + - .*shippable-qr.* + default: [] + +browsertime-tp6m: + <<: &tp6m-defaults + description: Raptor (browsertime) tp6 page-load tests on android + max-run-time: + by-subtest: + reddit: + by-app: + geckoview: 7200 + default: 3600 + imdb: + by-app: + geckoview: 7200 + default: 3600 + default: 3600 + mozharness: + extra-options: + - --chimera + - --extra-summary-methods=geomean + tier: + by-app: + geckoview: 1 + refbrow: 2 + default: 3 + treeherder-symbol: Btime(tp6m) + raptor: + apps: [geckoview, fenix, chrome-m, refbrow] + run-visual-metrics: true + test: tp6m + subtests: + - amazon + - bing + - [bing-search-restaurants, bing-s-r] + - booking + - cnn + - [cnn-ampstories, cnn-amp] + - dailymail + - [ebay-kleinanzeigen, ebay-k] + - [ebay-kleinanzeigen-search, ebay-k-s] + - [facebook-cristiano, fb-cris] + - [google-maps, gmaps] + - [google-search-restaurants, gsearch-r] + - instagram + - imdb + - reddit + - sina + - [stackoverflow, stacko] + - web-de + - wikipedia + - youtube + run-on-projects: + by-app: + geckoview: + by-variant: + geckoview-no-fission: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [trunk-only] + default: [] + default: + by-subtest: + wikipedia: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [] + default: [] + google-search-restaurants: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [] + default: [] + default: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [] + default: [] + default: [] + +browsertime-tp6m-essential: + <<: *tp6m-defaults + run-without-variant: false + raptor: + apps: [geckoview, fenix, chrome-m, refbrow] + run-visual-metrics: true + test: tp6m + subtests: + - allrecipes + - [amazon-search, amazon-s] + - espn + - facebook + - google + - [microsoft-support, micros-sup] + - [youtube-watch, youtube-w] + run-on-projects: + by-app: + geckoview: + by-subtest: + allrecipes: + by-test-platform: + android-hw-(g5|a51).*shippable.*: [trunk] + default: [] + default: + by-test-platform: + android-hw-(g5|a51).*shippable.*: [trunk-only] + default: [] + default: [] + tier: + by-app: + geckoview: 1 + refbrow: 2 + default: 3 + +browsertime-youtube-playback-mobile: + description: Browsertime YouTube Playback on Android + treeherder-symbol: Btime(ytp) + run-without-variant: false + raptor: + apps: [fenix, geckoview, refbrow] + subtests: + by-test-platform: + android-hw-(g5|a51).*: + - [youtube-playback-h264-sfr, ytp-h264-sfr] + - [youtube-playback-hfr, ytp-hfr] + # Bug 1699469 - Disabled until a crash is fixed. + # - [youtube-playback-widevine-h264-sfr, ytp-widevine-h264-sfr] + # - [youtube-playback-widevine-hfr, ytp-widevine-hfr] + test-url-param: + by-subtest: + youtube-playback-h264-sfr: # remove high resolution tests + exclude=1,2, + 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 + youtube-playback-hfr: + by-test-platform: + android-hw-(g5|a51).*: # remove VP9(1-34) and AV1(51-74) tests + exclude=1,2, + 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, + 51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74 + default: "" + youtube-playback-widevine-hfr: + by-test-platform: + android-hw-(g5|a51).*: # remove VP9(1-34) tests + exclude=1,2, + 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 + default: "" + default: "" + run-on-projects: + by-app: + geckoview: + by-test-platform: + android-hw-(g5|a51).*shippable.*: [mozilla-central] + default: [] + default: [] + max-run-time: 3600 + +browsertime-tp6m-live: + <<: *tp6m-defaults + run-without-variant: false + raptor: + apps: [chrome-m, fenix, geckoview] + run-visual-metrics: true + test: tp6m + subtests: + - allrecipes + - amazon + - [amazon-search, amazon-s] + - bing + - [bing-search-restaurants, bing-s-r] + - booking + - booking-sf + - cnn + - [cnn-ampstories, cnn-amp] + - dailymail + - discord + - [ebay-kleinanzeigen, ebay-k] + - [ebay-kleinanzeigen-search, ebay-k-s] + - espn + - expedia + - facebook + - [facebook-cristiano, fb-cris] + - [fashionbeans, fashbea] + - google + - [google-accounts, gacc] + - [google-maps, gmaps] + - [google-search-restaurants, gsearch-r] + - instagram + - imdb + - [imdb-firefox, imdb-f] + - [medium-article, medium] + - [microsoft-support, micros-sup] + - nytimes + - [people-article, people] + - reddit + - [reddit-thread, reddit-thr] + - rumble-fox + - [stackoverflow, stacko] + - [stackoverflow-question, stack-q] + - [urbandictionary-define, urbict-def] + - web-de + - [wikia-marvel, wikia-m] + - wikipedia + - youtube + - [youtube-watch, youtube-w] + mozharness: + extra-options: + - --live-sites + - --chimera + run-on-projects: + by-subtest: + cnn-ampstories: + by-app: + geckoview: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [autoland] + default: [] + default: [] + default: [] + tier: 3 + treeherder-symbol: Btime-live(tp6m) + +browsertime-tp6m-profiling: + description: Raptor (browsertime) tp6 page-load tests on android with Gecko profiling + run-without-variant: false + raptor: + apps: [geckoview] + test: tp6m + subtests: [amazon, youtube] + treeherder-symbol: Btime-Prof(tp6m) + mozharness: + script: raptor_script.py + config: + - raptor/android_hw_config.py + extra-options: + - --chimera + - --gecko-profile + run-on-projects: + by-test-platform: + android-hw-(a51).*aarch64-shippable-qr/opt: [mozilla-central] + default: [] + +browsertime-speedometer-mobile: + description: Browsertime Speedometer on Android + run-without-variant: false + raptor: + apps: [geckoview, fenix, chrome-m] + tier: + by-app: + fenix: 1 + default: 3 + run-on-projects: + by-app: + refbrow: [] + geckoview: + by-test-platform: + android-hw-(g5|a51).*shippable-qr.*: [trunk] + default: [] + default: [] + treeherder-symbol: Btime(sp) + mozharness: + extra-options: + - --test=speedometer + +browsertime-speedometer3-mobile: + description: Browsertime Speedometer 3 on Android + run-without-variant: false + raptor: + apps: [geckoview, fenix, chrome-m] + tier: + by-app: + fenix: 2 + geckoview: 2 + default: 3 + run-on-projects: + by-app: + refbrow: [] + geckoview: + by-test-platform: + android-hw-a51.*shippable-qr.*: [trunk-only] + default: [] + default: [] + treeherder-symbol: Btime(sp3) + mozharness: + extra-options: + - --test=speedometer3 + +browsertime-unity-webgl-mobile: + description: Browsertime Unity WebGL on Android + run-without-variant: false + raptor: + apps: [geckoview, refbrow, fenix, chrome-m] + treeherder-symbol: Btime(ugl) + run-on-projects: + by-app: + refbrow: [] + geckoview: + by-test-platform: + android-hw-a51-.*aarch64-shippable-qr.*: [trunk-only] + default: [] + default: + by-test-platform: + android-hw-a51-.*aarch64-shippable-qr.*: [mozilla-central] + default: [] + max-run-time: + by-test-platform: + anrdroid-hw-a51.*: 1500 + default: 900 + mozharness: + extra-options: + - --test=unity-webgl + +browsertime-power: + description: Browsertime Power Usage Tests on Android + run-without-variant: false + raptor: + apps: [geckoview, fenix, refbrow] + subtests: + - idle + - idle-bg + - [speedometer, sp] + tier: 2 + run-on-projects: [] + treeherder-symbol: Btime-P(power) + mozharness: + extra-options: + - --power-test diff --git a/taskcluster/ci/test/compiled.yml b/taskcluster/ci/test/compiled.yml new file mode 100644 index 0000000000..864e1ca6c4 --- /dev/null +++ b/taskcluster/ci/test/compiled.yml @@ -0,0 +1,138 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + test-manifest-loader: null # don't load tests in the taskgraph + run-without-variant: false + variants: + - 1proc + virtualization: virtual + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + android-hw.*: android_hardware_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + android-hw.*: + - android/android_common.py + - android/android_hw.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + supports-artifact-builds: false + +cppunit: + description: "CPP Unit Tests" + suite: cppunittest + treeherder-symbol: cppunit + target: + by-test-platform: + android-em-7.*: geckoview-test_runner.apk + default: null + tier: default + run-on-projects: + by-variant: + 1proc: + by-test-platform: + .*wayland.*: [] + default: built-projects + default: [] + +gtest: + description: "GTests run" + suite: gtest + treeherder-symbol: GTest + instance-size: xlarge + run-on-projects: + by-variant: + 1proc: + by-test-platform: + .*android.*: built-projects + .*(devedition|tsan|wayland).*: [] + linux1804-32-qr/opt: [] # try only, shippable on m-c + linux1804-32-qr/debug: ['mozilla-central'] # try and m-c + linux1804-32-shippable-qr/opt: ['mozilla-central'] # try and m-c + default: built-projects + default: [] + target: + by-test-platform: + android-em-7.*: geckoview-test_runner.apk + default: null + tier: default + +jittest: + description: "JIT Test run" + suite: jittest + treeherder-symbol: Jit + run-on-projects: + by-variant: + 1proc: + by-test-platform: + android-hw-.*-aarch64-qr/debug: ['mozilla-central', 'release'] + android-hw-.*-arm7-qr/debug: ['mozilla-central', 'release'] + default: built-projects + default: [] + chunks: + by-test-platform: + windows.*-ccov-qr/opt: 8 + windows.*: 1 + macosx.*/opt: 1 + macosx.*/debug: 3 + android.*: 10 + default: 6 + max-run-time: + by-test-platform: + windows.*-ccov.*/.*: 7200 + macosx.*-ccov.*/.*: 7200 + android-hw.*: 5400 + default: 3600 + mozharness: + chunked: + by-test-platform: + windows.*: false + macosx.*: false + default: true + target: + by-test-platform: + android-.*: geckoview-test_runner.apk + default: null + tier: + by-test-platform: + android-hw.*: 2 + default: default + +jittest-all: + description: "JIT Test run with all flags for android arm7 opt" + suite: jittest + treeherder-symbol: Jit + run-on-projects: + by-test-platform: + android-hw-.*-arm7(?:-shippable)?-qr/.*: ['mozilla-central', 'release'] + default: [] + chunks: 10 + max-run-time: 3600 + mozharness: + chunked: true + extra-options: + by-test-platform: + android.*: + - --jittest-flags=all + default: None + target: + by-test-platform: + android-.*: geckoview-test_runner.apk + default: null + tier: + by-test-platform: + android-hw.*: 2 + default: default diff --git a/taskcluster/ci/test/firefox-ui.yml b/taskcluster/ci/test/firefox-ui.yml new file mode 100644 index 0000000000..b295ec94d4 --- /dev/null +++ b/taskcluster/ci/test/firefox-ui.yml @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: + category: firefox-ui + max-run-time: 5400 + test-manifest-loader: null # don't load tests in the taskgraph + run-on-projects: + by-test-platform: + .*wayland.*: [] + default: built-projects + mozharness: + script: firefox_ui_tests.py + config: + by-test-platform: + windows.*: + - firefox_ui_tests/taskcluster_windows.py + macosx.*: + - firefox_ui_tests/taskcluster.py + - firefox_ui_tests/taskcluster_mac.py + linux.*: + - firefox_ui_tests/taskcluster.py + - remove_executables.py + +firefox-ui-functional: + description: "Firefox-ui-tests functional run" + treeherder-symbol: Fxfn(en-US) + tier: 2 diff --git a/taskcluster/ci/test/kind.yml b/taskcluster/ci/test/kind.yml new file mode 100644 index 0000000000..5c0a5671b5 --- /dev/null +++ b/taskcluster/ci/test/kind.yml @@ -0,0 +1,82 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.test:loader + +kind-dependencies: + - build + - build-signing + - repackage-signing-shippable-l10n-msix + - repackage-signing-msix + - repackage-signing + - repackage + - fetch + - toolchain + +transforms: + - gecko_taskgraph.transforms.test:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +# Each stanza in a file pointed to by 'jobs-from' describes a particular test +# suite or sub-suite. These are processed through the transformations described +# above to produce a bunch of tasks. See the schema in +# `taskcluster/gecko_taskgraph/transforms/test/__init__.py` for a description of the fields +# used in these files. + +# Adding a new test type or running tests on a new platform? Be sure to review +# https://wiki.mozilla.org/Sheriffing/Job_Visibility_Policy + +jobs-from: + - awsy.yml + - browsertime-desktop.yml + - browsertime-mobile.yml + - compiled.yml + - firefox-ui.yml + - marionette.yml + - misc.yml + - mochitest.yml + - reftest.yml + - talos.yml + - web-platform.yml + - xpcshell.yml + +job-defaults: + attributes: + retrigger: true + require-signed-extensions: + by-release-type: + release|esr.*: true + beta: + by-test-platform: + .*-devedition/.*: false + default: true + default: false + mozharness: + requires-signed-builds: + by-test-platform: + macosx1100.*: true + windows1.*: + by-variant: + msix: true + default: false + default: false + fetches: + toolchain: + by-test-platform: + win.*: + - win32-minidump-stackwalk + - win32-fix-stacks + macosx.*: + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + android-em-7.*: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-minidump-stackwalk + - linux64-fix-stacks + default: + - linux64-minidump-stackwalk + - linux64-fix-stacks diff --git a/taskcluster/ci/test/marionette.yml b/taskcluster/ci/test/marionette.yml new file mode 100644 index 0000000000..b138c806a3 --- /dev/null +++ b/taskcluster/ci/test/marionette.yml @@ -0,0 +1,55 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: marionette + mozharness: + script: marionette.py + config: + by-test-platform: + macosx.*: + - marionette/prod_config.py + - marionette/mac_taskcluster_config.py + windows.*: + - marionette/windows_taskcluster_config.py + default: + - marionette/prod_config.py + - remove_executables.py + extra-options: + - --setpref=toolkit.asyncshutdown.log=true + test-manifest-loader: null # don't load tests in the taskgraph + tier: + by-variant: + headless: 2 + default: default + variants: + - webrender-sw + - headless + run-on-projects: + by-variant: + headless: + by-test-platform: + (linux.*64)(-shippable)?-qr/opt: built-projects + default: [] + webrender-sw: + by-test-platform: + .*/debug: built-projects + default: [] + default: + by-test-platform: + .*(tsan|wayland).*: [] + default: built-projects + virtualization: virtual + +marionette: + description: "Marionette unittest run" + treeherder-symbol: Mn + max-run-time: + by-test-platform: + .*asan.*: 5400 + .*ccov.*: 3600 + .*debug.*: 3600 + default: 2700 + instance-size: default + chunks: 1 diff --git a/taskcluster/ci/test/misc.yml b/taskcluster/ci/test/misc.yml new file mode 100644 index 0000000000..e6a3bbb1c1 --- /dev/null +++ b/taskcluster/ci/test/misc.yml @@ -0,0 +1,272 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + test-manifest-loader: null # don't load tests in the taskgraph + +geckoview-junit: + description: "Geckoview junit run" + suite: geckoview-junit + variants: ["geckoview-fission", "no-fission"] + treeherder-symbol: gv-junit + loopback-video: true + target: geckoview-androidTest.apk + max-run-time: 3600 + run-on-projects: + by-variant: + geckoview-fission: ['trunk'] + no-fission: built-projects + default: [] + tier: default + mozharness: + script: android_emulator_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + extra-options: + - --test-suite=geckoview-junit + +telemetry-tests-client: + description: "Telemetry tests client run" + suite: telemetry-tests-client + treeherder-symbol: tt(c) + run-on-projects: + by-test-platform: + .*wayland.*: [] + default: built-projects + max-run-time: 1200 + tier: default + mozharness: + script: telemetry/telemetry_client.py + config: + by-test-platform: + linux.*: + - remove_executables.py + windows.*: [] + macosx.*: [] + +test-verify: + description: "Extra verification of tests modified on this push" + suite: test-verify + treeherder-symbol: TV + loopback-video: true + max-run-time: 10800 + allow-software-gl-layers: false + variants: + - no-fission + run-on-projects: + by-variant: + no-fission: + by-test-platform: + # do not run on ccov or asan or shippable or wayland + .*(-ccov|-asan|-shippable|-wayland).*: [] + # we prefer -qr platforms with fis, no need to run on both + (?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: [] + # do not run on mozilla-central, beta or release: usually just confirms earlier results + android.*: ['integration'] + default: [] + default: + by-test-platform: + # do not run on ccov or asan or shippable or wayland + .*(-ccov|-asan|-shippable|-wayland).*: [] + # we prefer -qr platforms with fis, no need to run on both + (?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: [] + # do not run on mozilla-central, beta or release: usually just confirms earlier results + android.*: [] + default: ['integration'] + built-projects-only: true + target: + by-test-platform: + android-em-7.*: geckoview-test_runner.apk + default: null + optimization: + test-verify: ["test-verify"] + tier: 2 + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + extra-options: + - --verify + fetches: + toolchain: + by-test-platform: + linux.*: + - linux64-node + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-node + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-64.*: + - win64-node + - win32-minidump-stackwalk + - win32-fix-stacks + win.*32.*: + - win32-node + - win32-minidump-stackwalk + - win32-fix-stacks + android-em-7.*: + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-node + - linux64-minidump-stackwalk + - linux64-fix-stacks + +test-verify-gpu: + description: "Extra verification of tests modified on this push on gpu instances" + suite: + category: test-verify + name: test-verify-gpu + treeherder-symbol: TVg + loopback-video: true + virtualization: virtual-with-gpu + max-run-time: 10800 + allow-software-gl-layers: false + run-on-projects: + by-test-platform: + # do not run on ccov or asan or shippable or wayland + .*(-ccov|-asan|-shippable|-wayland).*: [] + # do not run on mozilla-central, beta or release: usually just confirms earlier results + linux.*: ['integration'] + default: [] + built-projects-only: true + optimization: + test-verify: ["test-verify-gpu"] + tier: 2 + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + extra-options: + - --verify + - --gpu-required + +test-coverage: + description: "Per-test coverage" + suite: test-coverage + treeherder-symbol: TC + loopback-video: true + instance-size: default + max-run-time: 10800 + allow-software-gl-layers: false + run-on-projects: + by-test-platform: + .*-ccov.*/.*: built-projects + default: [] + tier: 2 + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + extra-options: + - --per-test-coverage + fetches: + toolchain: + by-test-platform: + linux.*: + - linux64-node + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-node + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-64.*: + - win64-node + - win32-minidump-stackwalk + - win32-fix-stacks + win.*32.*: + - win32-node + - win32-minidump-stackwalk + - win32-fix-stacks + android-em-7.*: + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-node + - linux64-minidump-stackwalk + - linux64-fix-stacks + +test-coverage-gpu: + description: "Per-test coverage for tests that require gpu instances" + suite: test-coverage + treeherder-symbol: TCg + loopback-video: true + virtualization: virtual-with-gpu + instance-size: default + max-run-time: 10800 + allow-software-gl-layers: false + run-on-projects: + by-test-platform: + # only run on mozilla-central and try. + .*-ccov.*/.*: ['mozilla-central'] + default: [] + tier: + by-test-platform: + windows.*asan.*: 3 + default: 2 + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + extra-options: + - --per-test-coverage + - --gpu-required diff --git a/taskcluster/ci/test/mochitest.yml b/taskcluster/ci/test/mochitest.yml new file mode 100644 index 0000000000..b4439a6e47 --- /dev/null +++ b/taskcluster/ci/test/mochitest.yml @@ -0,0 +1,1090 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: + category: mochitest + target: + by-test-platform: + android-em-7.*: geckoview-test_runner.apk + android-hw.*: geckoview-test_runner.apk + windows11-64-2009.*: + by-variant: + msix: target.installer.msix + default: null + default: null + tier: + by-variant: + xorigin: + by-test-platform: + linux.*64.*-qr/debug: 1 + default: 2 + default: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + default: default + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + android-hw.*: android_hardware_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + android-hw.*: + - android/android_common.py + - android/android_hw.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + +mochitest-plain: + description: "Mochitest plain run" + treeherder-symbol: M() + schedules-component: mochitest-plain + loopback-video: true + virtualization: virtual + variants: + - aab+no-fission + - conditioned_profile + - xorigin + - no-fission + - socketprocess_networking + - webrender-sw+no-fission + - webrender-sw + - headless + - headless+socketprocess_networking + - http3 + - editor-legacy-direction + run-on-projects: + by-variant: + conditioned_profile: + by-test-platform: + .*(asan|ccov|wayland).*: [] + linux1804-64(-shippable)?-qr/opt: ['trunk'] + windows11-64.*(-shippable)?-qr/opt: ['trunk'] + default: [] + xorigin: + by-test-platform: + .*(asan|wayland).*: [] + windows.*ccov.*: [] + (linux.*64|macosx.*64|windows11.*)(-shippable)?-qr/(opt|debug): ['trunk'] + windows.*64-ccov-qr/opt: ['mozilla-central'] + linux.*64-ccov-qr/opt: ['mozilla-central'] + default: [] + socketprocess_networking: + by-test-platform: + .*(asan|ccov|wayland).*: [] + (linux.*64|macosx.*64|windows11-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + default: [] + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux.*asan.*: ['trunk'] + linux.*64(-shippable)?-qr/(opt|debug): ['trunk'] + default: [] + webrender-sw: + by-test-platform: + linux1804-64-qr/debug: built-projects + default: [] + aab+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + default: [] + headless: + by-test-platform: + .*wayland.*: [] + linux1804-64.*: ['mozilla-central'] + default: [] + headless+socketprocess_networking: + by-test-platform: + .*wayland.*: [] + linux1804-64.*: ['mozilla-central'] + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + http3: + by-test-platform: + linux1804-64-qr/debug: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + .*wayland.*: [] + default: built-projects + chunks: + by-test-platform: + android-em-7.*: 4 + linux.*/debug: 16 + linux.*64-asan/opt: 10 + linux.*64-tsan-qr/opt: 20 + linux.*64-.*cov/opt: 10 + windows.*-ccov.*/.*: 10 + macosx.*64-ccov.*/.*: 10 + default: 5 + instance-size: + by-test-platform: + linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB + default: default + max-run-time: 5400 + allow-software-gl-layers: false + mozharness: + mochitest-flavor: plain + extra-options: + by-test-platform: + android-em.*: + - --test-suite=mochitest-plain + default: [] + chunked: + by-test-platform: + android-em.*: false + default: true + fetches: + toolchain: + by-test-platform: + linux.*: + - linux64-node-12 + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-node-12 + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-64.*: + - win64-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + win.*32.*: + - win32-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + android-em-7.*: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-node-12 + - linux64-minidump-stackwalk + +mochitest-a11y: + description: "Mochitest a11y run" + treeherder-symbol: M(a11y) + schedules-component: mochitest-a11y + test-manifest-loader: default # ensure we don't run with manifest-scheduling + loopback-video: true + run-without-variant: false + variants: + - 1proc + - socketprocess_networking+1proc + - webrender-sw+1proc + - editor-legacy-direction + run-on-projects: + by-variant: + socketprocess_networking+1proc: + by-test-platform: + linux.*64-qr/debug: ['autoland', 'mozilla-central'] + default: [] + webrender-sw+1proc: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux.*64-qr/debug: built-projects + default: [] + 1proc: + by-test-platform: + .*wayland.*: [] + default: built-projects + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + mozharness: + mochitest-flavor: a11y + +mochitest-browser-chrome: + description: "Mochitest browser-chrome run" + suite: + name: mochitest-browser-chrome + treeherder-symbol: M(bc) + schedules-component: mochitest-browser-chrome + loopback-video: true + variants: + - webrender-sw + - webrender-sw+a11y-checks + - socketprocess_networking + - msix + - editor-legacy-direction + run-on-projects: + by-variant: + webrender-sw: + by-test-platform: + linux.*64(-asan)?-qr/(opt|debug): ['all'] + linux.*64-tsan-qr/opt: built-projects + linux.*64-shippable-qr/opt: ['release'] + linux.*64(-shippable)?-qr/opt: built-projects + linux.*64-devedition-qr/opt: built-projects + windows1.*-64.*-qr/debug: built-projects + default: [] + webrender-sw+a11y-checks: + by-test-platform: + linux.*64(-shippable)?-qr/opt: ['trunk'] + default: [] + socketprocess_networking: + by-test-platform: + .*asan.*: [] + .*ccov.*: [] + (linux.*64|macosx.*64|windows1.*-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + default: [] + msix: + by-test-platform: + windows11-64-2009-qr/debug: built-projects + windows11-64-2009(-shippable)?-qr/opt: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + linux.*: [] # linux runs M-swr(bc), not M(bc) + default: built-projects + tier: + by-variant: + webrender-sw: + by-test-platform: + linux.*64(-asan|-shippable)?-qr/(opt|debug): 1 + default: default + default: default + chunks: + by-test-platform: + linux.*-qr/debug: 16 + linux.*64-asan-qr/opt: 16 + linux.*64-tsan-qr/opt: 32 + macosx.*64/debug: 16 + windows.*-ccov.*/.*: 14 + windows.*-asan-qr/opt: 14 + windows7-32.*: 20 + windows.*32-qr/debug: 12 + default: 7 + max-run-time: + by-variant: + msix: 5400 + socketprocess_networking: + by-test-platform: + linux.*-qr/debug: 7200 + default: 5400 + default: + by-test-platform: + linux.*64-ccov.*/.*: 9000 + linux.*64-tsan-qr/opt: 10800 + linux.*-qr/opt: 5400 + macosx.*64-ccov.*/.*: 10800 + windows.*-ccov.*/.*: 10800 + windows.*-asan-qr/opt: 5400 + .*/debug: 5400 + default: 3600 + mozharness: + mochitest-flavor: browser + chunked: true + # Bug 1281241: migrating to m3.large instances + instance-size: + by-test-platform: + linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB + default: default + allow-software-gl-layers: false + +mochitest-browser-a11y: + description: "Mochitest browser-a11y run" + suite: + name: mochitest-browser-a11y + treeherder-symbol: M(ba) + schedules-component: mochitest-browser-a11y + loopback-video: true + run-on-projects: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + tier: default + max-run-time: + by-test-platform: + .*tsan.*: 2700 + linux.*/debug: 2700 + default: 1800 + mozharness: + mochitest-flavor: browser + chunked: + by-test-platform: + .*tsan.*: true + default: false + chunks: + by-test-platform: + .*tsan.*: 2 + default: 1 + instance-size: default + allow-software-gl-layers: false + virtualization: virtual + +mochitest-browser-media: + description: "Mochitest browser media" + suite: + name: mochitest-browser-media + treeherder-symbol: M(mda-bc) + schedules-component: mochitest-browser-media + loopback-video: true + test-manifest-loader: null + variants: ["wmf-media-engine"] + run-on-projects: + by-variant: + wmf-media-engine: + by-test-platform: + .*asan.*: [] + windows11-64.*/debug: [] # Bug 1805736 + windows1.*-64.*: ['autoland', 'mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + tier: default + max-run-time: + by-test-platform: + .*tsan.*: 1800 + default: 1200 + mozharness: + mochitest-flavor: browser + instance-size: default + allow-software-gl-layers: false + virtualization: virtual + +browser-screenshots: + description: "Browser Screenshots" + suite: + name: mochitest-browser-chrome-screenshots + treeherder-symbol: M(ss) + loopback-video: true + test-manifest-loader: null # don't load tests in the taskgraph + variants: ["no-fission"] + run-on-projects: + by-test-platform: + linux1804-64.*/opt: ['trunk'] + default: [] + max-run-time: 3600 + mozharness: + mochitest-flavor: browser + allow-software-gl-layers: false + +mochitest-chrome: + description: "Mochitest chrome run" + treeherder-symbol: M(c) + schedules-component: mochitest-chrome + loopback-video: true + run-without-variant: false + variants: + - 1proc + - socketprocess_networking+1proc + - webrender-sw+1proc + - editor-legacy-direction + run-on-projects: + by-variant: + socketprocess_networking+1proc: + by-test-platform: + .*asan.*: [] + .*ccov.*: [] + (linux.*64|macosx.*64|windows11-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + default: [] + webrender-sw+1proc: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux.*64-qr/debug: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + 1proc: + by-test-platform: + .*wayland.*: [] + default: built-projects + chunks: + by-test-platform: + .*tsan.*/opt: 6 + default: 3 + max-run-time: 3600 + mozharness: + mochitest-flavor: chrome + chunked: true + instance-size: + by-test-platform: + linux.*64-tsan-qr/opt: xlarge # runs out of memory otherwise using 8GB + default: default + +mochitest-devtools-chrome: + description: "Mochitest devtools-chrome run" + suite: + name: mochitest-devtools-chrome + schedules-component: mochitest-browser-chrome + treeherder-symbol: M(dt) + loopback-video: true + variants: + - a11y-checks + - socketprocess_networking + - webrender-sw + - devtools-no-eft+no-fission + - http3 + run-on-projects: + by-variant: + a11y-checks: + by-test-platform: + linux.*64(-shippable)?-qr/opt: ['trunk'] + default: [] + devtools-no-eft+no-fission: + by-test-platform: + linux.*64(-shippable)?-qr/opt: ['trunk'] + default: [] + http3: + by-test-platform: + linux1804-64-qr/debug: built-projects + default: [] + socketprocess_networking: + by-test-platform: + .*asan.*: [] + .*ccov.*: [] + (linux.*64|macosx.*64|windows.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + default: [] + webrender-sw: + by-test-platform: + linux.*64-qr/debug: built-projects + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + linux.*64-ccov-qr/opt: [] + default: built-projects + tier: default + max-run-time: + by-test-platform: + windows.*-ccov.*/.*: 10800 + macosx.*64-ccov.*/.*: 9000 + linux.*64-ccov.*/.*: 7200 + linux.*64-tsan-qr/opt: 7200 + default: 5400 + chunks: + by-test-platform: + .*-ccov.*/.*: 12 + linux.*64-qr/debug: 12 + macosx.*64-qr/debug: 8 + .*-asan(-qr)?/opt: 8 + .*-tsan-qr/opt: 16 + default: 5 + mozharness: + mochitest-flavor: chrome + chunked: true + instance-size: + by-test-platform: + linux.*64-[at]san(-qr)?/opt: xlarge # runs out of memory otherwise using 8GB + default: default + # Bug 1296086: high number of intermittents observed with software GL and large instances + allow-software-gl-layers: false + fetches: + toolchain: + by-test-platform: + linux.*: + - linux64-node-12 + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-node-12 + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-64.*: + - win64-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + win.*32.*: + - win32-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + android-em-7.*: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-node-12 + - linux64-minidump-stackwalk + +mochitest-plain-gpu: + description: "Mochitest plain GPU run" + suite: + name: mochitest-plain-gpu + treeherder-symbol: M(gpu) + schedules-component: mochitest-plain + loopback-video: true + variants: + - no-fission + - webrender-sw+no-fission + - webrender-sw + run-on-projects: + by-variant: + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux.*asan.*: ['trunk'] + linux.*64(-shippable)?-qr/(opt|debug): ['trunk'] + default: [] + webrender-sw: + by-test-platform: + linux.*64-qr/debug: built-projects + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + linux.*64-ccov-qr/opt: [] + linux1804-32.*: [] + .*-tsan-qr/opt: [] + .*wayland.*: [] + linux.*: ['trunk'] # linux opt/debug/asan + android.*: built-projects + default: [] + default: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + .*wayland.*: [] + default: built-projects + virtualization: virtual-with-gpu + tier: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + default: default + mozharness: + mochitest-flavor: plain + extra-options: + by-test-platform: + android.*: + # note that Android runs fewer suites than other platforms + - --test-suite=mochitest-plain-gpu + default: + - --mochitest-suite=mochitest-plain-gpu + instance-size: + by-test-platform: + linux.*64-tsan-qr/opt: xlarge # runs out of memory otherwise using 8GB + default: default + +mochitest-chrome-gpu: + description: "Mochitest chrome GPU run" + suite: + name: mochitest-chrome-gpu + treeherder-symbol: M(gpu-c) + loopback-video: true + virtualization: virtual-with-gpu + run-without-variant: false + variants: + - 1proc + - socketprocess_networking+1proc + - webrender-sw+1proc + run-on-projects: + by-variant: + socketprocess_networking+1proc: [] + webrender-sw+1proc: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux.*64-qr/debug: built-projects + default: [] + 1proc: + by-test-platform: + android.*/.*: [] + .*wayland.*: [] + default: built-projects + tier: default + mozharness: + mochitest-flavor: chrome + extra-options: + by-test-platform: + android.*: + # note that Android runs fewer suites than other platforms + - --test-suite=mochitest-chrome-gpu + default: + - --mochitest-suite=mochitest-chrome-gpu + instance-size: + by-test-platform: + linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB of memory + default: default + +mochitest-media: + description: "Mochitest media run" + treeherder-symbol: M(mda) + schedules-component: mochitest-plain + max-run-time: + by-test-platform: + windows.*-ccov.*/.*: 7200 + macosx.*64-ccov.*/.*: 7200 + linux.*64-tsan-qr/opt: 7200 + default: 5400 + variants: + - no-fission + - socketprocess+no-fission + - socketprocess + - webgl-ipc + - webrender-sw+no-fission + - webrender-sw + - wmf-media-engine + - msix + run-on-projects: + by-variant: + webgl-ipc: + by-test-platform: + android.*: [] + windows.*ccov.*: [] + linux.*64(-shippable|-asan)?-qr/opt: ['autoland', 'mozilla-central'] # linux.*-tsan disabled until Bug 1835935 + macosx.*64(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + windows1.*(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central'] + windows.*-asan-qr/opt: ['autoland', 'mozilla-central'] + default: [] + socketprocess+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: ['autoland', 'mozilla-central'] + android-hw-.*-aarch64-qr/debug: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + socketprocess: + by-test-platform: + android.*: [] + windows.*ccov.*: [] + linux.*64(-asan|-devedition|-shippable)?-qr/(opt|debug): built-projects + linux.*64-tsan-qr/opt: [] # Linux TSAN disabled until Bug 1835935 + macosx.*-64(-devedition|-shippable)?-qr/(opt|debug): built-projects + windows1.*(-devedition|-shippable)?-qr/(opt|debug): built-projects + windows.*-asan-qr/opt: ['autoland', 'mozilla-central'] + default: [] + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: ['autoland', 'mozilla-central'] + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + webrender-sw: + by-test-platform: + android.*: [] + linux1804-64-qr/debug: ['autoland', 'mozilla-central'] + default: [] + no-fission: + by-test-platform: + android-hw-.*/opt: [] + android-hw-.*-arm7.*/(?:debug)?: ['trunk', 'mozilla-beta', 'mozilla-release'] + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + wmf-media-engine: + by-test-platform: + windows1.*-64.*: ['autoland', 'mozilla-central'] + default: [] + msix: + by-test-platform: + windows11-64-2009-shippable-qr/opt: built-projects + windows11-64-2009-qr/opt: ['autoland'] + windows11-64-2009-qr/debug: ['autoland'] + default: [] + default: + by-test-platform: + android-hw.*/opt: [] + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + linux.*(asan|ccov)/opt: [] + .*(ccov/|asan/|-32).*: built-projects + linux.*64-tsan.*: [] # linux.*-tsan disabled until Bug 1835935 + (android|linux|windows10-64-2009|windows11-64-2009|macos)(?!.*-qr).*: [] + default: built-projects + loopback-video: true + chunks: + by-variant: + wmf-media-engine: 1 + default: + by-test-platform: + (android|macos).*/opt: 1 + ^(?!.*asan).*windows1.*/opt: 1 + linux.*/debug: 3 + linux.*64-tsan-qr/opt: 5 + default: 2 + mozharness: + mochitest-flavor: plain + chunked: + by-test-platform: + android.*: false + macosx.*64.*: false + windows1.*: false + default: true + extra-options: + by-test-platform: + android-em-7.*: + - --setpref=webgl.out-of-process=false + - --setpref=security.sandbox.content.headless=false + - --setpref=gfx.canvas.accelerated=false + default: + - --setpref=webgl.out-of-process=false + - --setpref=security.sandbox.content.headless=false + tier: + by-test-platform: + .*ccov.*: 2 + android-em.*: 1 + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + android-hw.*: 1 + default: default + +mochitest-valgrind: + description: "Mochitest plain Valgrind run" + suite: + name: mochitest-valgrind-plain + treeherder-symbol: M-V() + run-on-projects: [] + test-manifest-loader: null # don't load tests in the taskgraph + tier: 3 + loopback-video: true + chunks: 40 + max-run-time: 14400 + run-without-variant: false + variants: ["1proc"] + allow-software-gl-layers: false + mozharness: + mochitest-flavor: plain + chunked: true + +mochitest-webgl1-core: + description: "Mochitest webgl1-core run" + treeherder-symbol: M(gl1c) + schedules-component: mochitest-plain + virtualization: virtual-with-gpu + test-manifest-loader: null # don't load tests in the taskgraph + loopback-video: true + max-run-time: + by-test-platform: + macosx.*64-ccov.*/.*: 7200 + default: 1800 + variants: + - no-fission + - webgl-ipc + - webrender-sw+no-fission + - webrender-sw + run-on-projects: + by-variant: + webgl-ipc: + by-test-platform: + .*-(ccov|tsan|wayland).*: [] + linux.*-64.*: ["trunk"] + mac.*: ["trunk"] + win.*: ["trunk"] + default: [] + webrender-sw+no-fission: + by-test-platform: + linux.*64-qr/debug: ['trunk'] + default: [] + webrender-sw: + by-test-platform: + linux.*64-qr/debug: built-projects + default: [] + no-fission: + by-test-platform: + android-hw-.*(?/, where is what Treeherder calls a +# collection. +# +# Each test platform further specifies the set of tests that will be scheduled +# for the platform, referring to tests defined in test-sets.yml. +# +# Note that set does not depend on the tree; tree-dependent job selection +# should be performed in the target task selection phase of task-graph +# generation. + + +## +# Linux platforms (matching /linux.*/) +# Linux1804-64 uses Ubuntu 18.04 and is run on docker + +linux1804-32-qr/debug: + build-platform: linux/debug + test-sets: + - linux32-gtest + +linux1804-32-qr/opt: + build-platform: linux/opt + test-sets: + - linux32-tests + - linux32-gtest + +linux1804-32-shippable-qr/opt: + build-platform: linux-shippable/opt + test-sets: + - linux32-tests + - linux32-gtest + +linux1804-64-qr/opt: + build-platform: linux64/opt + test-sets: + - awsy + - desktop-screenshot-capture + - linux1804-tests + - mochitest-webgpu + - web-platform-tests + - web-platform-tests-backlog + - talos + - browsertime + +linux1804-64-shippable-qr/opt: + build-platform: linux64-shippable/opt + test-sets: + - awsy + - desktop-screenshot-capture + - linux1804-tests + - mochitest-webgpu + - web-platform-tests + - web-platform-tests-backlog + - talos + - talos-profiling + - browsertime + - browsertime-profiling + +linux1804-64-nightlyasrelease-qr/opt: + build-platform: linux64-nightlyasrelease/opt + test-sets: + - browsertime + +linux1804-64-qr/debug: + build-platform: linux64/debug + test-sets: + - linux1804-tests + - mochitest-webgpu + - web-platform-tests + +linux1804-64-asan-qr/opt: + build-platform: linux64-asan/opt + test-sets: + - linux1804-tests + - mochitest-webgpu + - web-platform-tests + +linux1804-64-tsan-qr/opt: + build-platform: linux64-tsan/opt + test-sets: + - linux1804-tests + - mochitest-webgpu + - web-platform-tests + +linux1804-64-ccov-qr/opt: + build-platform: linux64-ccov/opt + test-sets: + - ccov-code-coverage-tests + - linux1804-tests + - linux1804-ccov-tests + - mochitest-webgpu + - web-platform-tests + +linux1804-64-devedition-qr/opt: + build-platform: linux64-devedition/opt + test-sets: + - desktop-screenshot-capture + - linux1804-tests + - web-platform-tests + +linux1804-64-clang-trunk-qr/opt: + build-platform: linux64-plain-clang-trunk/opt + test-sets: + - awsy + - browsertime-clang + +linux2204-64-wayland/opt: + build-platform: linux64/opt + test-sets: + - linux2204-wayland-tests + - web-platform-tests + +linux2204-64-wayland-shippable/opt: + build-platform: linux64-shippable/opt + test-sets: + - linux2204-wayland-tests + - web-platform-tests + +## +# Windows platforms (matching /windows.*/) + +# win32 +windows7-32-qr/opt: + build-platform: win32/opt + build-signing-label: build-signing-win32/opt + test-sets: + - windows-7-tests + +windows7-32-shippable-qr/opt: + build-platform: win32-shippable/opt + build-signing-label: build-signing-win32-shippable/opt + test-sets: + - windows-7-tests + +windows10-32-shippable-qr/opt: + build-platform: win32-shippable/opt + build-signing-label: build-signing-win32-shippable/opt + test-sets: + - browsertime + - windows-talos + +windows10-32-qr/opt: + build-platform: win32/opt + test-sets: + - browsertime + - windows-talos + + +# win11-32 +windows11-32-2009-shippable-qr/opt: + build-platform: win32-shippable/opt + test-sets: + - awsy + - desktop-screenshot-capture + - web-platform-tests + - windows32-2009-tests + + +windows11-32-2009-qr/opt: + build-platform: win32/opt + test-sets: + - awsy + - desktop-screenshot-capture + - web-platform-tests + - windows32-2009-tests + +windows11-32-2009-qr/debug: + build-platform: win32/debug + build-signing-label: build-signing-win32/debug + test-sets: + - web-platform-tests + - windows-7-tests + - windows32-2009-tests + +windows11-32-2009-mingwclang-qr/debug: + build-platform: win32-mingwclang/debug + test-sets: + - mingwclang-win32-tests-debug + +windows11-32-2009-mingwclang-qr/opt: + build-platform: win32-mingwclang/opt + test-sets: + - mingwclang-tests-opt + +# win64 +windows10-64-qr/opt: + build-platform: win64/opt + test-sets: + - windows-talos + - browsertime + +windows10-64-ref-hw-2017-qr/opt: + build-platform: win64-shippable/opt + test-sets: + - talos-ref-hw + +windows10-64-shippable-qr/opt: + build-platform: win64-shippable/opt + test-sets: + - windows-talos + - browsertime + +windows10-64-nightlyasrelease-qr/opt: + build-platform: win64-nightlyasrelease/opt + test-sets: + - browsertime + +# win10-64 2004 +windows10-64-2009-qr/debug: + build-platform: win64/debug + build-signing-label: + by-variant: + msix: repackage-signing-msix-win64/debug + default: build-signing-win64/debug + test-sets: + - windows10-2009-tests + +windows10-64-2009-qr/opt: + build-platform: win64/opt + build-signing-label: + by-variant: + msix: repackage-signing-msix-win64/opt + default: build-signing-win64/opt + test-sets: + - windows10-2009-tests + +windows10-64-2009-shippable-qr/opt: + build-platform: win64-shippable/opt + build-signing-label: + by-variant: + msix: repackage-signing-shippable-l10n-msix-win64-shippable/opt + default: build-signing-win64-shippable/opt + test-sets: + - windows10-2009-tests + +# win11-64 2009 +windows11-64-2009-ccov-qr/opt: + build-platform: win64-ccov/opt + build-signing-label: build-signing-win64-ccov/opt + test-sets: + - desktop-screenshot-capture + - ccov-code-coverage-tests + - windows11-64-2009-ccov-tests + - windows11-2009-tests + +windows11-64-2009-qr/debug: + build-platform: win64/debug + build-signing-label: + by-variant: + msix: repackage-signing-msix-win64/debug + default: build-signing-win64/debug + test-sets: + - web-platform-tests + - windows11-2009-tests + +windows11-64-2009-qr/opt: + build-platform: win64/opt + build-signing-label: + by-variant: + msix: repackage-signing-msix-win64/opt + default: build-signing-win64/opt + test-sets: + - awsy + - desktop-screenshot-capture + - web-platform-tests + - web-platform-tests-backlog + - windows11-2009-tests + - talos-xperf + +windows11-64-2009-shippable-qr/opt: + build-platform: win64-shippable/opt + build-signing-label: + by-variant: + msix: repackage-signing-shippable-l10n-msix-win64-shippable/opt + default: build-signing-win64-shippable/opt + test-sets: + - awsy + - desktop-screenshot-capture + - web-platform-tests + - web-platform-tests-backlog + - windows11-2009-tests + - talos-xperf + +windows11-64-2009-devedition-qr/opt: + build-platform: win64-devedition/opt + build-signing-label: build-signing-win64-devedition/opt + test-sets: + - desktop-screenshot-capture + - web-platform-tests + - windows11-2009-tests + +windows11-64-2009-asan-qr/opt: + build-platform: win64-asan/opt + test-sets: + - windows11-2009-tests + +windows11-64-2009-mingwclang-qr/debug: + build-platform: win64-mingwclang/debug + test-sets: + - mingwclang-tests-debug + +windows11-64-2009-mingwclang-qr/opt: + build-platform: win64-mingwclang/opt + test-sets: + - mingwclang-tests-opt + + +## +# MacOS X platforms (matching /macosx.*/) + +macosx1100-64-qr/debug: + build-platform: macosx64/debug + build-signing-label: repackage-macosx64/debug + test-sets: + - macosx1100-64-jittests + +macosx1100-64-shippable-qr/opt: + build-platform: macosx64-shippable/opt + build-signing-label: repackage-macosx64-shippable/opt + test-sets: + - macosx1100-64-jittests + - macosx1100-64-qr-tests + # - macosx64-talos + # - browsertime-high-priority + +macosx1015-64-shippable-qr/opt: + build-platform: macosx64-shippable/opt + test-sets: + - awsy + - browsertime + - browsertime-profiling + - desktop-screenshot-capture + - macosx1015-64-qr-tests + - macosx64-talos + - talos-profiling + - web-platform-tests + - web-platform-tests-backlog + +macosx1015-64-nightlyasrelease-qr/opt: + build-platform: macosx64-nightlyasrelease/opt + test-sets: + - browsertime + +macosx1015-64-devedition-qr/opt: + build-platform: macosx64-devedition/opt + test-sets: + - macosx1015-64-qr-tests + - web-platform-tests + +macosx1015-64-qr/opt: + build-platform: macosx64/opt + test-sets: + - desktop-screenshot-capture + - macosx1015-64-qr-tests + - web-platform-tests + - web-platform-tests-backlog + +macosx1015-64-qr/debug: + build-platform: macosx64/debug + test-sets: + - macosx1015-64-qr-tests + - web-platform-tests + +macosx1015-64-ccov-qr/opt: + build-platform: macosx64-ccov/opt + test-sets: + - macosx1015-64-qr-tests + +## +# Android platforms (matching /android-em.*/) +# +# android-em test platforms execute on android emulators. + +android-em-7.0-x86_64-qr/opt: + build-platform: android-x86_64/opt + test-sets: + - android-x86_64-tests + - web-platform-tests-backlog + +android-em-7.0-x86_64-lite-qr/opt: + build-platform: android-x86_64-lite/opt + test-sets: + - android-x86_64-tests + - web-platform-tests-backlog + +android-em-7.0-x86_64-shippable-qr/opt: + build-platform: android-x86_64-shippable/opt + test-sets: + - android-x86_64-tests + - web-platform-tests-backlog + +android-em-7.0-x86_64-shippable-lite-qr/opt: + build-platform: android-x86_64-shippable-lite/opt + test-sets: + - android-x86_64-tests + - web-platform-tests-backlog + +android-em-7.0-x86_64-qr/debug: + build-platform: android-x86_64/debug + test-sets: + - android-x86_64-tests + +android-em-7.0-x86_64-qr/debug-isolated-process: + build-platform: android-x86_64/debug-isolated-process + test-sets: + - android-x86_64-tests + +# android-hw test platforms execute on real devices attached to Autophone hosts. + +# android-hw-a51-11-0 Samsung Galaxy A51 Android 11.0 + +android-hw-a51-11-0-aarch64-qr/opt: + build-platform: android-aarch64/opt + test-sets: + - android-hw-browsertime +# - android-hw-browsertime-power + +android-hw-a51-11-0-aarch64-shippable-qr/opt: + build-platform: android-aarch64-shippable/opt + test-sets: + - android-hw-browsertime +# - android-hw-browsertime-power + +# android-hw-p5-13-0 Google Pixel 5 Android 13.0 + +android-hw-p5-13-0-arm7-qr/opt: + build-platform: android-arm/opt + test-sets: + - android-hw-arm7-pgo-unittests + +android-hw-p5-13-0-arm7-shippable-qr/opt: + build-platform: android-arm-shippable/opt + test-sets: + - android-hw-arm7-pgo-unittests + +android-hw-p5-13-0-arm7-qr/debug: + build-platform: android-arm/debug + test-sets: + - android-hw-arm7-debug-unittests + +android-hw-p5-13-0-android-aarch64-qr/debug: + build-platform: android-aarch64/debug + test-sets: + - android-hw-aarch64 + - android-hw-aarch64-debug-unittests + +android-hw-p5-13-0-android-aarch64-qr/opt: + build-platform: android-aarch64/opt + test-sets: + - android-hw-aarch64 + - android-hw-aarch64-opt-unittests + +android-hw-p5-13-0-android-aarch64-shippable-qr/opt: + build-platform: android-aarch64-shippable/opt + test-sets: + - android-hw-aarch64 + - android-hw-aarch64-pgo-unittests diff --git a/taskcluster/ci/test/test-sets.yml b/taskcluster/ci/test/test-sets.yml new file mode 100644 index 0000000000..68c257fb04 --- /dev/null +++ b/taskcluster/ci/test/test-sets.yml @@ -0,0 +1,479 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +# Each key in this file specifies a set of tests to run. Different test sets +# may, for example, be bound to different test platforms. +# +# Note that set does not depend on the tree; tree-dependent job selection +# should be performed in the target task selection phase of task-graph +# generation. +# +# A test set has a name, and a list of tests that it contains. +# +# Test names given here reference tests.yml. + +### Feature-specific test groups + +web-platform-tests: + - web-platform-tests + - web-platform-tests-crashtest + - web-platform-tests-print-reftest + - web-platform-tests-reftest + - web-platform-tests-wdspec + - web-platform-tests-webgpu + +web-platform-tests-backlog: + - web-platform-tests-backlog + - web-platform-tests-reftest-backlog + +mochitest-devtools-chrome: + - mochitest-devtools-chrome + +mochitest-webgpu: + - mochitest-webgpu + +talos: + - talos-bcv + - talos-chrome + - talos-damp-inspector + - talos-damp-webconsole + - talos-damp-other + - talos-dromaeojs + - talos-g1 + - talos-g3 + - talos-g4 + - talos-g5 + - talos-other + - talos-sessionrestore-many-windows + - talos-svgr + - talos-tp5o + - talos-perf-reftest + - talos-perf-reftest-singletons + - talos-tabswitch + - talos-realworld-webextensions + - talos-webgl + # - talos-h1 Bug 1487031 - Disabled for not finding actionable regressions + # - talos-h2 Bug 1487031 - Disabled for not finding actionable regressions + +talos-profiling: + - talos-bcv-profiling + - talos-chrome-profiling + # - talos-damp-profiling - Disabled b/c of Bug 1597734 + - talos-dromaeojs-profiling + - talos-g1-profiling + - talos-g3-profiling + - talos-g4-profiling + - talos-g5-profiling + - talos-motionmark-profiling + - talos-other-profiling + - talos-sessionrestore-many-windows-profiling + - talos-perf-reftest-profiling + - talos-perf-reftest-singletons-profiling + - talos-svgr-profiling + - talos-tp5o-profiling + - talos-tabswitch-profiling + - talos-realworld-webextensions-profiling + - talos-webgl-profiling + +talos-ref-hw: + - talos-webgl + +browsertime: + - browsertime-tp6 + - browsertime-tp6-essential + - browsertime-tp6-bytecode + - browsertime-tp6-live + - browsertime-tp6-live-sheriffed + - browsertime-benchmark + - browsertime-benchmark-wasm + - browsertime-youtube-playback + - browsertime-youtube-playback-power + - browsertime-custom + - browsertime-first-install + - browsertime-responsiveness + - browsertime-regression-tests + - browsertime-upload + +browsertime-clang: + - browsertime-tp6 + - browsertime-tp6-essential + - browsertime-tp6-bytecode + - browsertime-tp6-live + - browsertime-tp6-live-sheriffed + - browsertime-benchmark + - browsertime-benchmark-wasm + - browsertime-youtube-playback + - browsertime-responsiveness + +browsertime-profiling: + - browsertime-tp6-profiling + +browsertime-high-priority: + - browsertime-benchmark + - browsertime-tp6 + +awsy: + - awsy + - awsy-base + - awsy-dmd + - awsy-base-dmd + - awsy-tp6 + +ccov-code-coverage-tests: + - test-coverage + - test-coverage-wpt + +mochitest-valgrind: + - mochitest-valgrind + +desktop-screenshot-capture: + - browser-screenshots + +### Specific platform test sets + +# Linux +linux32-gtest: + - gtest + +linux32-tests: + - web-platform-tests + +linux1804-tests: + - cppunit + - crashtest + - firefox-ui-functional + - gtest + # - jittest # See comment in linux1804-ccov-tests set. + - jsreftest + - marionette + - mochitest-a11y + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-devtools-chrome + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + - mochitest-remote + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - reftest + - reftest-snapshot + - telemetry-tests-client + - test-verify + - test-verify-gpu + - test-verify-wpt + - xpcshell + +linux1804-ccov-tests: + # jittest run on regular linux builds is redundant with SM(p), so we omit it + # from the linux1804-tests and linux1804-qr-tests sets. But, we still want + # to run it on ccov builds, so we have this set that has it and which runs + # on ccov builds. + - jittest + +linux2204-wayland-tests: + - mochitest-plain + - cppunit + - crashtest + - firefox-ui-functional + - gtest + - jsreftest + - marionette + - mochitest-a11y + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-devtools-chrome + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + - mochitest-remote + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - reftest + - reftest-snapshot + - telemetry-tests-client + - test-verify + - test-verify-gpu + - test-verify-wpt + - xpcshell + +# Windows + +windows-7-tests: + - cppunit + - crashtest + - gtest + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-media + - xpcshell + +windows32-2009-tests: + - cppunit + - crashtest + - gtest + - firefox-ui-functional + - jsreftest + - marionette + - mochitest-a11y + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + - mochitest-remote + - mochitest-webgpu + - reftest + - telemetry-tests-client + - test-verify + - test-verify-gpu + - test-verify-wpt + +windows10-2009-tests: + - cppunit + - gtest + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-plain + - mochitest-plain-gpu + - xpcshell + +windows11-64-2009-ccov-tests: + - jittest + - test-coverage + - web-platform-tests + - web-platform-tests-crashtest + - web-platform-tests-print-reftest + - web-platform-tests-reftest + - web-platform-tests-wdspec + +windows11-2009-tests: + - cppunit + - crashtest + - firefox-ui-functional + - gtest + - jsreftest + - marionette + - mochitest-a11y + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-devtools-chrome + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + - mochitest-remote + - mochitest-webgpu + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - reftest + - telemetry-tests-client + - test-verify + - test-verify-gpu + - test-verify-wpt + - xpcshell + +mingwclang-tests-debug: + - cppunit + - firefox-ui-functional + - mochitest-a11y + - mochitest-chrome-gpu + - mochitest-plain-gpu + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - mochitest-webgpu + - reftest + - telemetry-tests-client + +# The following is the same as the above block, minus reftests. +# Reftests were disabled due to frequent hangs; see bug 1642719 +# for re-enabling. +mingwclang-win32-tests-debug: + - cppunit + - firefox-ui-functional + - mochitest-a11y + - mochitest-chrome-gpu + - mochitest-plain-gpu + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - mochitest-webgpu + # - reftest - disabled, see bug 1642719 + - telemetry-tests-client + +mingwclang-tests-opt: + - cppunit + - mochitest-chrome-gpu + - mochitest-plain-gpu + +windows-talos: + - talos-bcv + - talos-chrome + - talos-damp-inspector + - talos-damp-webconsole + - talos-damp-other + - talos-dromaeojs + - talos-g1 + - talos-g4 + - talos-g5 + - talos-other + - talos-sessionrestore-many-windows + - talos-perf-reftest + - talos-perf-reftest-singletons + - talos-svgr + - talos-tp5o + - talos-tabswitch + - talos-realworld-webextensions + - talos-webgl + # - talos-h1 Bug 1487031 - Disabled for not finding actionable regressions + +talos-xperf: + - talos-xperf + +# macOS +macosx1100-64-jittests: + - jittest + +macosx1100-64-qr-tests: + - crashtest + - jsreftest + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-chrome-gpu + - mochitest-media + - mochitest-webgpu + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - reftest + - xpcshell + +macosx1015-64-qr-tests: + - cppunit + - crashtest + - firefox-ui-functional + - gtest + - jittest + - jsreftest + - marionette + - mochitest-a11y + - mochitest-browser-a11y + - mochitest-browser-chrome + - mochitest-browser-media + - mochitest-chrome + - mochitest-chrome-gpu + - mochitest-devtools-chrome + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + - mochitest-remote + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + - mochitest-webgl2-ext + - mochitest-webgpu + - reftest + - telemetry-tests-client + - test-verify + - test-verify-gpu + - test-verify-wpt + - xpcshell + +macosx64-talos: + - talos-bcv + - talos-chrome + - talos-damp-inspector + - talos-damp-webconsole + - talos-damp-other + - talos-dromaeojs + - talos-g1 + - talos-g4 + - talos-g5 + - talos-other + - talos-sessionrestore-many-windows + - talos-svgr + - talos-tp5o + - talos-perf-reftest + - talos-perf-reftest-singletons + - talos-realworld-webextensions + - talos-webgl + # - talos-tabswitch # Bug 1453007 times out + # - talos-h1 # too long to unpack profile- Bug 1442893 + +# Android + +android-x86_64-tests: + - cppunit + - crashtest + - geckoview-junit + - gtest + - mochitest-media + - mochitest-plain + - mochitest-plain-gpu + # - mochitest-webgl1-core # Harness issues? + # - mochitest-webgl1-ext + # - mochitest-webgl2-core # Emulator not creating ES3? + # - mochitest-webgl2-ext + - reftest + - test-verify + - web-platform-tests + - web-platform-tests-crashtest + - web-platform-tests-reftest + - web-platform-tests-wdspec + - xpcshell + +android-hw-aarch64-opt-unittests: + - jittest + +android-hw-arm7-pgo-unittests: + - jittest-all + +android-hw-aarch64-pgo-unittests: + - jittest + +android-hw-arm7-debug-unittests: + - jittest + +android-hw-aarch64-debug-unittests: + - jittest + +android-hw-aarch64: + - crashtest-qr + - reftest-qr + - mochitest-media + - mochitest-webgl1-core + - mochitest-webgl1-ext + - mochitest-webgl2-core + +android-hw-browsertime: + - browsertime-tp6m + - browsertime-tp6m-essential + - browsertime-tp6m-live + - browsertime-speedometer-mobile + - browsertime-speedometer3-mobile + - browsertime-youtube-playback-mobile + - browsertime-unity-webgl-mobile + +android-hw-browsertime-profiling: + - browsertime-tp6m-profiling diff --git a/taskcluster/ci/test/variants.yml b/taskcluster/ci/test/variants.yml new file mode 100644 index 0000000000..9777cc3cec --- /dev/null +++ b/taskcluster/ci/test/variants.yml @@ -0,0 +1,290 @@ +--- +1proc: + description: "{description} with e10s disabled" + component: "Testing::General" + expiration: "never" + suffix: "1proc" + merge: + mozharness: + extra-options: + - "--disable-e10s" + - "--disable-fission" + +headless: + description: "{description} without a window" + component: "Firefox::Headless" + expiration: "never" + suffix: "headless" + replace: + tier: 2 + merge: + mozharness: + extra-options: + - "--headless" + +a11y-checks: + description: "{description} with accessibility checks enabled" + component: "Core::Disability Access APIs" + expiration: "2023-09-01" + suffix: "a11y-checks" + replace: + tier: 2 + merge: + mozharness: + extra-options: + - "--enable-a11y-checks" + +aab: + description: "{description} with aab test_runner" + component: "GeckoView::General" + expiration: "2023-09-01" + when: &gv_e10s_filter + $eval: '"android" in task["test-platform"]' + suffix: "aab" + # Need to add jdk but there isn't a good way to do that + # so we just replace the toolchain list + merge: + fetches: + toolchain: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-minidump-stackwalk + - linux64-fix-stacks + - linux64-jdk + replace: + target: "geckoview-test_runner.aab" + +geckoview-no-fission: + description: "{description} without fission enabled" + component: "Core::DOM: Content Processes" + expiration: "2023-09-01" + when: + <<: *gv_e10s_filter + suffix: "nofis" + merge: + mozharness: + extra-options: + - "--disable-fission" + +geckoview-fission: + description: "{description} with fission enabled" + component: "Core::DOM: Content Processes" + expiration: "2023-09-01" + when: + <<: *gv_e10s_filter + suffix: "fis" + +fission: + description: "{description} with fission enabled" + component: "Core::DOM: Content Processes" + expiration: "2023-09-01" + suffix: "fis" + +no-fission: + description: "{description} without fission enabled" + component: "Core::DOM: Content Processes" + expiration: "2023-09-01" + suffix: "nofis" + merge: + mozharness: + extra-options: + - "--disable-fission" + +xorigin: + description: "{description} with cross-origin" + component: "Core::DOM: Content Processes" + expiration: "2023-09-01" + suffix: "xorig" + replace: + e10s: true + merge: + mozharness: + extra-options: + - "--enable-xorigin-tests" + - "--setpref=privacy.partition.always_partition_third_party_non_cookie_storage=false" + +editor-legacy-direction: + description: "{description} with compatible join/split node direction of editor disabled" + component: "Core::DOM: Editor" + expiration: "2023-09-01" + suffix: "editor-legacy-dir" + replace: + tier: 2 + merge: + mozharness: + extra-options: + - "--setpref=editor.join_split_direction.compatible_with_the_other_browsers=false" + +conditioned_profile: + description: "{description} with conditioned profile" + component: "Testing::General" + expiration: "2023-09-01" + suffix: "condprof" + merge: + mozharness: + extra-options: + - "--conditioned-profile" + replace: + chunks: 8 + +socketprocess: + description: "{description} with socket process enabled" + component: "Core::Networking" + expiration: "2023-08-01" + suffix: "spi" + merge: + mozharness: + extra-options: + - "--setpref=media.peerconnection.mtransport_process=true" + - "--setpref=network.process.enabled=true" + +socketprocess_networking: + description: "{description} with networking on socket process enabled" + component: "Core::Networking" + expiration: "2023-08-01" + suffix: "spi-nw" + merge: + mozharness: + extra-options: + - "--setpref=network.process.enabled=true" + - "--setpref=network.http.network_access_on_socket_process.enabled=true" + +# - +# Webrender DComp variants for Win10 + +webrender-dcomp-disabled: + description: "{description} with dcomp disabled" + component: "Core::Graphics: WebRender" + expiration: "2023-09-01" + suffix: "wr-dc0" + when: + $eval: '"windows1" in task["test-platform"]' + merge: + mozharness: + extra-options: + - "--setpref=gfx.webrender.dcomp-win.enabled=false" + - "--setpref=gfx.webrender.dcomp-video-overlay-win=false" + - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=false" + - "--setpref=gfx.webrender.compositor=false" + - "--setpref=gfx.webrender.compositor.force-enabled=false" + +webrender-dcomp-present: # Default variant ends up like this. + description: "{description} with dcomp present but not overlays" + component: "Core::Graphics: WebRender" + expiration: "2023-09-01" + suffix: "wr-dc1-p" + when: + $eval: '"windows1" in task["test-platform"]' + merge: + mozharness: + extra-options: + - "--setpref=gfx.webrender.dcomp-win.enabled=true" + - "--setpref=gfx.webrender.dcomp-video-overlay-win=false" + - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=false" + - "--setpref=gfx.webrender.compositor=false" + - "--setpref=gfx.webrender.compositor.force-enabled=false" + +webrender-dcomp-overlays: + description: "{description} with dcomp overlays but not compositing" + component: "Core::Graphics: WebRender" + expiration: "2023-09-01" + suffix: "wr-dc2-o" + when: + $eval: '"windows1" in task["test-platform"]' + merge: + mozharness: + extra-options: + - "--setpref=gfx.webrender.dcomp-win.enabled=true" + - "--setpref=gfx.webrender.dcomp-video-overlay-win=true" + - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=true" + - "--setpref=gfx.webrender.compositor=false" + - "--setpref=gfx.webrender.compositor.force-enabled=false" + +webrender-dcomp-compositing: + description: "{description} with dcomp compositing" + component: "Core::Graphics: WebRender" + expiration: "2023-09-01" + suffix: "wr-dc3-c" + when: + $eval: '"windows1" in task["test-platform"]' + merge: + mozharness: + extra-options: + - "--setpref=gfx.webrender.dcomp-win.enabled=true" + - "--setpref=gfx.webrender.dcomp-video-overlay-win=true" + - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=true" + - "--setpref=gfx.webrender.compositor=true" + - "--setpref=gfx.webrender.compositor.force-enabled=true" + +# - + +webrender-sw: + description: "{description} with software webrender enabled" + component: "Core::Graphics: WebRender" + expiration: "2023-09-01" + suffix: "swr" + merge: + webrender: true + mozharness: + extra-options: + - "--setpref=gfx.webrender.software=true" + +webgl-ipc: + description: "{description} with WebGL IPC process enabled" + component: "Core::Graphics: CanvasWebGL" + expiration: "2023-09-01" + suffix: "gli" + merge: + mozharness: + extra-options: + - "--setpref=webgl.out-of-process=true" + - "--setpref=security.sandbox.content.headless=true" + +devtools-no-eft: + description: "{description} with DevTools EFT disabled" + component: "DevTools::Framework" + expiration: "2023-09-01" + suffix: "dt-no-eft" + merge: + mozharness: + extra-options: + - "--setpref=devtools.every-frame-target.enabled=false" + +wmf-media-engine: + description: "{description} with Windows Media Foundation media engine enabled" + component: "Core::Audio/Video: Playback" + expiration: "2023-10-10" + when: + $eval: '"windows1" in task["test-platform"]' + suffix: "wmfme" + replace: + tier: 2 + merge: + mozharness: + extra-options: + - "--tag=media-engine-compatible" + - "--setpref=media.wmf.media-engine.enabled=true" + - "--setpref=media.wmf.media-engine.channel-decoder.enabled=true" + +msix: + description: "{description} from msix packages" + component: "Firefox:Installer" + expiration: "never" + suffix: "msix" + when: + $eval: '"windows1" in task["test-platform"] && "-64" in task["test-platform"] && ("opt" in task["test-platform"] || "debug" in task["test-platform"]) && !("asan" in task["test-platform"]) && !("ccov" in task["test-platform"])' + merge: + mozharness: + extra-options: + - "--installer-path installer.msix" + +http3: + description: "{description} with http3 server" + component: "Testing::General" + expiration: "2023-09-01" + suffix: "http3" + merge: + mozharness: + extra-options: + - "--use-http3-server" diff --git a/taskcluster/ci/test/web-platform.yml b/taskcluster/ci/test/web-platform.yml new file mode 100644 index 0000000000..cea5f5e3e6 --- /dev/null +++ b/taskcluster/ci/test/web-platform.yml @@ -0,0 +1,494 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: + category: web-platform-tests + instance-size: xlarge + max-run-time: + by-test-platform: + android-em-7.0-x86_64/debug: 7200 + default: 5400 + mozharness: + script: web_platform_tests.py + config: + by-test-platform: + windows.*: + - web_platform_tests/prod_config_windows_taskcluster.py + macosx.*: + - web_platform_tests/prod_config_mac.py + android-em.*: + - android/android-x86_64.py + - web_platform_tests/prod_config_android.py + default: + - web_platform_tests/prod_config.py + - remove_executables.py + target: + by-test-platform: + android-em-7.0-x86_64-shippable(-lite)?-qr/opt: geckoview-test_runner.apk + android-em-7.0-x86_64(-lite)?-qr/opt: geckoview-test_runner.apk + android-em-7.0-x86_64(-lite)?-qr/debug(-isolated-process)?: geckoview-test_runner.apk + default: null + +web-platform-tests: + description: "Web platform test run" + suite: web-platform-tests + treeherder-symbol: W(wpt) + virtualization: virtual + tier: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + default: default + chunks: + by-test-platform: + android.*/debug: 32 + android.*: 24 + linux.*64-tsan-qr/opt: 32 + linux.*64-asan(-qr)?/opt: 22 + linux.*64-ccov.*/opt: 20 + linux.*/debug: 16 + macosx.*/debug: 18 + windows.*32.*/opt: 12 + windows.*/debug: 16 + windows.*-ccov.*/opt: 14 + default: 10 + max-run-time: + by-test-platform: + .*-ccov.*/.*: 10800 + linux.*64(-tsan|-asan)-qr/opt: 14400 + linux.*64(-qr)?/debug: 10800 + macosx.*/debug: 10800 + android-em.*/.*: 10800 + default: 7200 + variants: + - no-fission + - webrender-sw+no-fission + - webrender-sw + - editor-legacy-direction + run-on-projects: + by-variant: + webrender-sw: + by-test-platform: + .*-32.*/.*: [] + linux.*64-qr/debug: built-projects + windows.*-qr/debug: built-projects + android-em-7.0-x86_64-qr/debug: [] + default: [] + webrender-sw+no-fission: + by-test-platform: + .*-32.*/.*: [] + android-em-7.0-x86_64-qr/debug: built-projects + linux.*64-qr/debug: built-projects + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + mozharness: + chunked: true + extra-options: + - --test-type=testharness + - --skip-implementation-status=backlog + - --skip-implementation-status=not-implementing + # Because we have a separate job for them, don't run the (core) + # webgpu/* tests in the main WPT runs. (but still run tests in dirs + # other than webgpu/* that are tagged webgpu, e.g. canvas tests) + - --exclude=webgpu + # Remove after webgpu tests move back to upstream WPT repo: + - --exclude=_mozilla/webgpu + +web-platform-tests-backlog: + description: "Web platform test (backlog) run" + treeherder-symbol: W-b(wpt) + variants: + - no-fission + chunks: + by-test-platform: + android.*: 3 + default: 1 + max-run-time: + by-test-platform: + android.*/opt: 7200 + default: 3600 + run-on-projects: + by-variant: + no-fission: + by-test-platform: + android.*: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: ['mozilla-central'] + test-manifest-loader: null # don't load tests in the taskgraph + tier: 2 + mozharness: + chunked: true + extra-options: + - --test-type=testharness + - --skip-implementation-status=implementing + - --skip-implementation-status=not-implementing + - --backlog + +web-platform-tests-reftest: + description: "Web platform reftest run" + schedules-component: web-platform-tests-reftest + treeherder-symbol: W(Wr) + virtualization: + by-test-platform: + windows.*-64.*-qr/.*: virtual-with-gpu + default: virtual + chunks: + by-test-platform: + .*-ccov.*/.*: 8 + linux.*64-tsan-qr/opt: 16 + linux1804-64(-asan)?-qr/.*: 6 + macosx10.*-64/debug: 6 + macosx10.*-64/opt: 3 + windows.*-(32|64)(-qr)?/debug: 5 + android.*: 6 + default: 4 + variants: + - no-fission + - webrender-sw+no-fission + - webrender-sw + - editor-legacy-direction + run-on-projects: + by-variant: + webrender-sw: + by-test-platform: + .*-32.*/.*: [] + linux.*64-qr/debug: built-projects + windows.*-qr/debug: built-projects + default: [] + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + android.*: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + tier: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + default: default + mozharness: + extra-options: + - --test-type=reftest + - --skip-implementation-status=backlog + - --skip-implementation-status=not-implementing + +web-platform-tests-webgpu: + description: "Web platform WebGPU test run" + suite: web-platform-tests + treeherder-symbol: W(webgpu) + virtualization: virtual + tier: default + chunks: 2 + max-run-time: 7200 + variants: [] # We don't need sw or nofis testing. + run-on-projects: + by-test-platform: + android.*: [] + macos.*: [] + .*wayland.*: [] + default: ['trunk'] + mozharness: + chunked: true + extra-options: + - --test-type=testharness + - --default-exclude + - --tag=webgpu + +web-platform-tests-reftest-backlog: + description: "Web platform reftest (backlog) run" + schedules-component: web-platform-tests-reftest + treeherder-symbol: W-b(Wr) + virtualization: virtual + chunks: 1 + variants: + - no-fission + run-on-projects: + by-variant: + no-fission: + by-test-platform: + android.*: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: ['mozilla-central'] + test-manifest-loader: null # don't load tests in the taskgraph + tier: 2 + mozharness: + extra-options: + - --test-type=reftest + - --skip-implementation-status=implementing + - --skip-implementation-status=not-implementing + - --backlog + +web-platform-tests-wdspec: + description: "Web platform webdriver-spec run" + schedules-component: web-platform-tests-wdspec + treeherder-symbol: W(Wd) + chunks: + by-test-platform: + .*-ccov.*/.*: 4 + .*-tsan.*/.*: 8 + default: 3 + mozharness: + extra-options: + by-test-platform: + android-em-7.*: + - --test-type=wdspec + - --setpref=gfx.canvas.accelerated=false + default: + - --test-type=wdspec + variants: + - no-fission + - webrender-sw+no-fission + - webrender-sw + - headless + - editor-legacy-direction + run-on-projects: + by-variant: + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + webrender-sw: + by-test-platform: + android-em-7.0-x86_64-qr/debug: [] + .*-32.*/.*: [] + linux.*64-qr/debug: built-projects + windows.*-qr/debug: built-projects + default: [] + headless: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + no-fission: + by-test-platform: + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + android.*: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + tier: default + fetches: + toolchain: + by-test-platform: + android-em-7.*: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-geckodriver + - linux64-minidump-stackwalk + - linux64-fix-stacks + linux.*64.*: + - linux64-geckodriver + - linux64-minidump-stackwalk + - linux64-fix-stacks + linux.*32.*: + - linux32-geckodriver + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-geckodriver + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-32.*: + - win32-geckodriver + - win32-minidump-stackwalk + - win32-fix-stacks + win.*-64.*: + - win64-geckodriver + - win32-minidump-stackwalk + - win32-fix-stacks + default: + - linux64-minidump-stackwalk + - linux64-fix-stacks + - linux64-geckodriver + +web-platform-tests-crashtest: + description: "Web platform crashtests run" + schedules-component: web-platform-tests-crashtest + treeherder-symbol: W(Wc) + chunks: 1 + mozharness: + extra-options: + - --test-type=crashtest + variants: + - no-fission + - webrender-sw + - webrender-sw+no-fission + - editor-legacy-direction + run-on-projects: + by-variant: + webrender-sw: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + .*-32.*/.*: [] + linux.*64-qr/debug: built-projects + macosx101.*64-qr/debug: built-projects + windows.*-qr/debug: built-projects + default: [] + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + android.*: built-projects + default: [] + editor-legacy-direction: + by-test-platform: + linux1804-64-qr/debug: ['mozilla-central'] + default: [] + default: + by-test-platform: + android.*: [] + android-em-7.0-x86_64-qr/debug: built-projects + .*wayland.*: [] + default: built-projects + tier: default + +web-platform-tests-print-reftest: + description: "Web platform print-reftest run" + schedules-component: web-platform-tests-print-reftest + treeherder-symbol: W(Wp) + chunks: 1 + test-manifest-loader: null # don't load tests in the taskgraph + tier: default + variants: + - no-fission + - webrender-sw + - webrender-sw+no-fission + run-on-projects: + by-variant: + webrender-sw: + by-test-platform: + android.*: [] + .*-32.*/.*: [] + linux.*64-qr/debug: built-projects + windows.*-qr/debug: built-projects + default: [] + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + default: [] + no-fission: + by-test-platform: + linux1804-64-qr/debug: ['trunk'] + linux1804-64(-shippable|-asan)?-qr/opt: ['trunk'] + android.*: built-projects + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + default: built-projects + mozharness: + extra-options: + - --test-type=print-reftest + +test-verify-wpt: + description: "Extra verification of web-platform tests modified on this push" + suite: + category: test-verify + name: test-verify-wpt + treeherder-symbol: TVw + max-run-time: 10800 + run-on-projects: + by-test-platform: + # do not run on asan, ccov, shippable or wayland + .*-(asan|ccov|shippable|wayland).*/.*: [] + # do not run on beta or release: usually just confirms earlier results + default: ['integration'] + built-projects-only: true + test-manifest-loader: null # don't load tests in the taskgraph + optimization: + test-verify: ["test-verify-wpt"] + tier: 2 + mozharness: + extra-options: + - --verify + +test-coverage-wpt: + description: "Per web-platform test coverage" + suite: + category: test-coverage + name: test-coverage-wpt + schedules-component: test-coverage-wpt + treeherder-symbol: TCw + max-run-time: 10800 + variants: + - no-fission + - webrender-sw+no-fission + run-on-projects: + by-variant: + webrender-sw+no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug: built-projects + default: [] + default: + by-test-platform: + .*-ccov.*/.*: built-projects + default: [] + test-manifest-loader: null # don't load tests in the taskgraph + tier: 2 + mozharness: + extra-options: + - --per-test-coverage diff --git a/taskcluster/ci/test/xpcshell.yml b/taskcluster/ci/test/xpcshell.yml new file mode 100644 index 0000000000..583155eb25 --- /dev/null +++ b/taskcluster/ci/test/xpcshell.yml @@ -0,0 +1,186 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + suite: + category: xpcshell + name: + by-variant: + msix: xpcshell-msix + default: xpcshell + target: + by-test-platform: + android-em-7.*: geckoview-test_runner.apk + windows11-64-2009.*: + by-variant: + msix: target.installer.msix + default: null + default: null + mozharness: + script: + by-test-platform: + android-em.*: android_emulator_unittest.py + default: desktop_unittest.py + config: + by-test-platform: + android-em-7.*: + - android/android_common.py + - android/android-x86_64.py + linux.*: + - unittests/linux_unittest.py + - remove_executables.py + macosx.*: + - unittests/mac_unittest.py + windows.*: + - unittests/win_unittest.py + requires-signed-builds: + by-test-platform: + macosx1100.*: true + windows.*-asan-qr/opt: false # No XPCShell on ASAN yet + windows.*-mingwclang-qr/.*: false + windows.*: true + default: false + +xpcshell: + description: "xpcshell test run" + treeherder-symbol: X(X) + variants: + - conditioned_profile + - socketprocess_networking+no-fission + - socketprocess_networking + - no-fission + - msix + run-on-projects: + by-variant: + conditioned_profile: + by-test-platform: + .*asan.*: [] + .*ccov.*: [] + (linux1804-64|windows11-64.*)(-shippable)?-qr/opt: ['trunk'] + default: [] + socketprocess_networking+no-fission: + by-test-platform: + linux1804-64.*: ['trunk'] + default: [] + socketprocess_networking: + by-test-platform: + (linux1804-64|macosx).*: ['trunk'] # All Linux & Mac variants + windows7-32.*: ['trunk'] + ^(?!.*asan).*windows11.*: ['trunk'] # All Windows11 except ASAN + default: [] + no-fission: + by-test-platform: + android-em-7.0-x86_64-qr/debug-isolated-process: [] + android.*: built-projects + linux1804-64.*: ['trunk'] + default: [] + msix: + by-test-platform: + windows11-64-2009(-shippable)?-qr/opt: built-projects + windows11-64-2009-qr/debug: built-projects + default: [] + default: + by-test-platform: + android.*: [] + .*wayland.*: [] + windows.*-asan-qr/opt: [] # No XPCShell on ASAN yet + default: built-projects + chunks: + by-test-platform: + .*-asan-qr/opt: 4 + .*-ccov.*/.*: 8 + .*-tsan-qr/opt: 8 + (android-em-7.*|macosx.*|linux1804-64.*/opt): 2 + default: 4 + max-run-time: + by-variant: + msix: 7200 + conditioned_profile: 7200 + default: + by-test-platform: + .*-ccov(-qr)?/.*: 7200 + .*-tsan-qr/opt: 7200 + default: 5400 + allow-software-gl-layers: false + tier: + by-test-platform: + windows.*-asan.*: 3 + android-em-7.0-x86_64-qr/debug-isolated-process: 3 + default: default + mozharness: + extra-options: + by-test-platform: + windows1.*: + - --threads=2 + default: [] + fetches: + toolchain: + by-test-platform: + # xpcshell-tests are limited to *-node-12 as node 14+ dropped + # support for Windows 7. Once support for Windows 7 is dropped + # (bug 1594270) we should be able to revert these to the latest + # node version (*-node). + linux.*: + - linux64-node-12 + - linux64-minidump-stackwalk + - linux64-fix-stacks + macosx.*: + - macosx64-node-12 + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*-64.*: + - win64-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + win.*32.*: + - win32-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks + android-em-7.*: + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - android-emulator-linux + - linux64-node-12 + - linux64-minidump-stackwalk + +xpcshell-failures: + description: "xpcshell specific failures test run" + treeherder-symbol: X-f(X) + run-on-projects: ["mozilla-central"] + chunks: 2 + max-run-time: 2700 + allow-software-gl-layers: false + tier: 3 + mozharness: + script: + by-test-platform: + macos.*: mac_unittest.py + windows1.*: desktop_unittest.py + config: + by-test-platform: + macos.*: + - unittests/mac_unittest.py + windows1.*: + - unittests/win_unittest.py + extra-options: + by-test-platform: + macosx1100.*: + - --run-failures=apple_silicon + - --timeout-as-pass + - --crash-as-pass + fetches: + toolchain: + by-test-platform: + # xpcshell-tests are limited to *-node-12 as node 14+ dropped + # support for Windows 7. Once support for Windows 7 is dropped + # (bug 1594270) we should be able to revert these to the latest + # node version (*-node). + macosx.*: + - macosx64-node-12 + - macosx64-minidump-stackwalk + - macosx64-fix-stacks + win.*32.*: + - win32-node-12 + - win32-minidump-stackwalk + - win32-fix-stacks diff --git a/taskcluster/ci/toolchain/android.yml b/taskcluster/ci/toolchain/android.yml new file mode 100644 index 0000000000..44d9af81bb --- /dev/null +++ b/taskcluster/ci/toolchain/android.yml @@ -0,0 +1,205 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: android-build} + max-run-time: 1800 + +# In automation, we generate the AVD using the linux64-android-avd jobs. On +# developers' machines, bootstrap will download the artifact from the avd job +# instead of generating it. +# +# The Android AVD needs the corresponding system image generated in the +# linux64-android-system-image TL job. System images are not redistributable, +# so locally bootstrap will use sdkmanager to download the corresponding system +# images. +linux64-android-avd-x86_64-repack: + attributes: + local-toolchain: true + description: "Android AVD (Linux) repack toolchain build" + treeherder: + symbol: TL(avd-x86_64-linux) + run: + script: repack-android-avd-linux.sh + arguments: + - 'python/mozboot/mozboot/android-avds/x86_64.json' + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: public/build/android-avd-linux.tar.zst + toolchain-alias: android-avd-x86_64-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-android-avd-arm-repack: + attributes: + local-toolchain: true + description: "Android AVD (Linux) repack toolchain build" + treeherder: + symbol: TL(avd-arm-linux) + run: + script: repack-android-avd-linux.sh + arguments: + - 'python/mozboot/mozboot/android-avds/arm.json' + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: public/build/android-avd-linux.tar.zst + toolchain-alias: android-avd-arm-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-android-avd-arm64-repack: + attributes: + local-toolchain: true + description: "Android AVD (Linux) repack toolchain build" + treeherder: + symbol: TL(avd-arm64-linux) + run: + script: repack-android-avd-linux.sh + arguments: + - 'python/mozboot/mozboot/android-avds/arm64.json' + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: public/build/android-avd-linux.tar.zst + toolchain-alias: android-avd-arm64-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-android-system-image-x86_64-repack: + description: "Android System Images (Linux) repack toolchain build" + treeherder: + symbol: TL(x86_64-avd-img-linux) + run: + script: repack-android-system-images-linux.sh + arguments: + - 'python/mozboot/mozboot/android-avds/x86_64.json' + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: project/gecko/android-system-images/android-system-images-linux.tar.zst + toolchain-alias: android-system-image-x86_64-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-jdk-repack: + description: "Java JDK (Linux) repack toolchain build" + treeherder: + symbol: TL(jdk) + run: + script: repack-jdk-linux.sh + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: project/gecko/jdk/jdk-linux.tar.zst + toolchain-alias: linux64-jdk + toolchain-env: + JAVA_HOME: "/builds/worker/fetches/jdk/jdk-17.0.7+7" + +linux64-android-sdk-linux-repack: + description: "Android SDK (Linux) repack toolchain build" + treeherder: + symbol: TL(android-sdk-linux) + run: + script: repack-android-sdk-linux.sh + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: project/gecko/android-sdk/android-sdk-linux.tar.zst + toolchain-alias: android-sdk-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-android-emulator-linux-repack: + description: "Android Emulator (Linux) repack toolchain build" + treeherder: + symbol: TL(android-emulator-linux) + run: + script: repack-android-emulator-linux.sh + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: project/gecko/android-emulator/android-emulator-linux.tar.zst + toolchain-alias: android-emulator-linux + fetches: + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-jdk-repack + +linux64-android-ndk-linux-repack: + description: "Android NDK (Linux) repack toolchain build" + treeherder: + symbol: TL(android-ndk-linux) + run: + script: repack-android-ndk-linux.sh + resources: + - 'python/mozboot/**/*android*' + toolchain-artifact: project/gecko/android-ndk/android-ndk.tar.zst + toolchain-alias: android-ndk-linux + +linux64-android-gradle-dependencies: + description: "Android Gradle dependencies toolchain task" + treeherder: + symbol: TL(gradle-dependencies) + worker: + env: + GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online" + run: + script: android-gradle-dependencies.sh + sparse-profile: null + resources: + - 'taskcluster/scripts/misc/android-gradle-dependencies/**' + - '*.gradle' + - 'mobile/android/**/*.gradle' + - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**' + - 'mobile/android/config/mozconfigs/common*' + - 'mobile/android/gradle.configure' + toolchain-artifact: public/build/android-gradle-dependencies.tar.zst + toolchain-alias: android-gradle-dependencies + fetches: + fetch: + - sonatype-nexus + # Nexus needs Java 8 + - jdk-8-linux64 + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-android-sdk-linux-repack + - linux64-jdk-repack + - linux64-node + +linux64-android-gradle-dependencies-lite: + description: "Android Lite Gradle dependencies toolchain task" + treeherder: + symbol: TL(gradle-dependencies-lite) + worker: + env: + GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online" + run: + script: android-gradle-dependencies-lite.sh + sparse-profile: null + resources: + - 'taskcluster/scripts/misc/android-gradle-dependencies/**' + - '*.gradle' + - 'mobile/android/**/*.gradle' + - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**' + - 'mobile/android/config/mozconfigs/common*' + - 'mobile/android/gradle.configure' + toolchain-artifact: public/build/android-gradle-dependencies.tar.zst + toolchain-alias: android-gradle-dependencies-lite + fetches: + fetch: + - sonatype-nexus + # Nexus needs Java 8 + - jdk-8-linux64 + toolchain: + # Aliases aren't allowed for toolchains depending on toolchains. + - linux64-android-sdk-linux-repack + - linux64-jdk-repack + - linux64-node diff --git a/taskcluster/ci/toolchain/cargo-vet.yml b/taskcluster/ci/toolchain/cargo-vet.yml new file mode 100644 index 0000000000..3f1cb9756a --- /dev/null +++ b/taskcluster/ci/toolchain/cargo-vet.yml @@ -0,0 +1,61 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "cargo-vet toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/cargo-vet.tar.zst + fetches: + fetch: + - cargo-vet + +linux64-cargo-vet: + treeherder: + symbol: TL(cargo-vet) + run: + arguments: ['x86_64-unknown-linux-gnu', 'reqwest/native-tls-vendored'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-cargo-vet: + treeherder: + symbol: TM(cargo-vet) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-cargo-vet: + treeherder: + symbol: TM(cargo-vet-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +win64-cargo-vet: + treeherder: + symbol: TW64(cargo-vet) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/cbindgen.yml b/taskcluster/ci/toolchain/cbindgen.yml new file mode 100644 index 0000000000..21d7247ab8 --- /dev/null +++ b/taskcluster/ci/toolchain/cbindgen.yml @@ -0,0 +1,65 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "cbindgen toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/cbindgen.tar.zst + fetches: + fetch: + # If you update this, make sure to update the minimum version in + # build/moz.configure/bindgen.configure as well. + - cbindgen-0.24.3 + +linux64-cbindgen: + treeherder: + symbol: TL(cbindgen) + worker: + max-run-time: 1800 + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-cbindgen: + treeherder: + symbol: TM(cbindgen) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-cbindgen: + treeherder: + symbol: TM(cbindgen-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +win64-cbindgen: + treeherder: + symbol: TW64(cbindgen) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/clang-tidy.yml b/taskcluster/ci/toolchain/clang-tidy.yml new file mode 100644 index 0000000000..74783ccd29 --- /dev/null +++ b/taskcluster/ci/toolchain/clang-tidy.yml @@ -0,0 +1,127 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "Clang-tidy build" + attributes: + local-toolchain: true + index: + product: static-analysis + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + toolchain-artifact: public/build/clang-tidy.tar.zst + resources: + - 'build/clang-plugin/**/*.cpp' + - 'build/clang-plugin/**/*.h' + - 'build/clang-plugin/*.inc' + - 'build/clang-plugin/*.py' + - 'build/clang-plugin/*.txt' + - 'build/clang-plugin/moz.build' + - 'build/clang-plugin/Makefile.in' + - 'build/build-clang/build-clang.py' + fetches: + fetch: + - clang-16 + +linux64-clang-tidy: + index: + job-name: linux64-clang-tidy + treeherder: + symbol: TL(clang-tidy) + run: + script: build-clang.sh + arguments: + - 'build/build-clang/clang-tidy-linux64.json' + resources: + - 'build/build-clang/clang-tidy-linux64.json' + fetches: + toolchain: + - linux64-clang-16 + - linux64-toolchain-sysroot + +macosx64-clang-tidy: + index: + job-name: macosx64-clang-tidy + treeherder: + symbol: TM(clang-tidy) + worker-type: b-linux-large-gcp + run: + script: build-clang.sh + arguments: + - 'build/build-clang/clang-tidy-macosx64.json' + - 'build/build-clang/macosx64.json' + resources: + - 'build/build-clang/clang-tidy-macosx64.json' + - 'build/build-clang/macosx64.json' + fetches: + toolchain: + - linux64-clang-16 + - macosx64-sdk-toolchain + +macosx64-aarch64-clang-tidy: + index: + job-name: macosx64-aarch64-clang-tidy + treeherder: + symbol: TM(clang-tidy-aarch64) + worker-type: b-linux-large-gcp + run: + script: build-clang.sh + arguments: + - 'build/build-clang/clang-tidy-macosx64.json' + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + resources: + - 'build/build-clang/clang-tidy-macosx64.json' + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + fetches: + toolchain: + - linux64-clang-16 + - macosx64-sdk-toolchain + +win64-clang-tidy: + description: "Clang-tidy toolchain build" + index: + job-name: win64-clang-tidy + treeherder: + symbol: TW64(clang-tidy) + tier: 2 + worker: + max-run-time: 7200 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/clang-tidy-win64.json' + - 'build/build-clang/win64.json' + resources: + - 'build/build-clang/clang-tidy-win64.json' + - 'build/build-clang/win64.json' + fetches: + toolchain: + - linux64-clang-16 + - vs-toolchain + +linux64-clang-tidy-external: + attributes: + local-toolchain: false + index: + job-name: linux64-clang-tidy-external + treeherder: + symbol: TL(clang-tidy-e) + run: + toolchain-artifact: project/civet/clang-tidy.tar.zst + script: build-clang-tidy-external.sh + arguments: + - 'build/build-clang/clang-tidy-external-linux64.json' + resources: + - 'build/build-clang/clang-tidy-external-linux64.json' + run-on-projects: [] + fetches: + fetch: + - civet-source + toolchain: + - linux64-clang-16 + - linux64-toolchain-sysroot diff --git a/taskcluster/ci/toolchain/clang.yml b/taskcluster/ci/toolchain/clang.yml new file mode 100644 index 0000000000..7c90a517ce --- /dev/null +++ b/taskcluster/ci/toolchain/clang.yml @@ -0,0 +1,903 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-xlarge-gcp + worker: + max-run-time: 7200 + run: + resources: + - 'build/build-clang/build-clang.py' + +linux64-clang-7.0: + description: "Clang 7.0 toolchain build" + treeherder: + symbol: TL(clang-7.0) + worker-type: b-linux-large-gcp + run: + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-7.0.json' + - 'build/build-clang/2stages.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-7.0.json' + - 'build/build-clang/2stages.json' + toolchain-artifact: public/build/clang.tar.zst + toolchain-alias: linux64-clang-base + fetches: + fetch: + - clang-7.0 + toolchain: + - linux64-toolchain-sysroot + +linux64-clang-14-stage1: + description: "Clang 14 toolchain build" + treeherder: + symbol: TL(clang-14-stage1) + run: + using: toolchain-script + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-14.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-14.json' + - 'build/build-clang/1stage.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-14 + toolchain: + - linux64-toolchain-sysroot + +linux64-clang-14: + description: "Clang 14 toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(clang-14) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-clang-14-stage1 + +macosx64-clang-14-raw: + description: "Clang 14 toolchain build" + treeherder: + symbol: TM(clang-14-raw) + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-14.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-14.json' + - 'build/build-clang/1stage.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-14 + toolchain: + - linux64-clang-14-stage1 + - macosx64-sdk-toolchain + +linux64-clang-16-mingw-x86: + description: "MinGW-Clang 16 x86 toolchain build" + treeherder: + symbol: TMW(clang-16-x86) + worker-type: b-linux-gcp + run: + script: build-clang-mingw.sh + arguments: + - 'x86' + resources: + - 'taskcluster/scripts/misc/mingw-*.patch' + toolchain-alias: + by-project: + toolchains: null + default: linux64-clang-mingw-x86 + toolchain-artifact: public/build/clangmingw.tar.zst + fetches: + fetch: + - clang-16 + - mingw-w64 + - llvm-mingw + - gcc-9.5.0 + toolchain: + - linux64-clang-16 + +linux64-clang-16-mingw-x64: + description: "MinGW-Clang 16 x64 toolchain build" + treeherder: + symbol: TMW(clang-16-x64) + tier: 1 + worker-type: b-linux-gcp + run: + script: build-clang-mingw.sh + arguments: + - 'x64' + resources: + - 'taskcluster/scripts/misc/mingw-*.patch' + toolchain-alias: + by-project: + toolchains: null + default: linux64-clang-mingw-x64 + toolchain-artifact: public/build/clangmingw.tar.zst + fetches: + fetch: + - clang-16 + - mingw-w64 + - llvm-mingw + - gcc-9.5.0 + toolchain: + - linux64-clang-16 + +linux64-clang-16-stage1: + description: "Clang 16 toolchain build" + treeherder: + symbol: TL(clang-16-stage1) + run: + using: toolchain-script + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/1stage.json' + toolchain-alias: + by-project: + toolchains: null + default: linux64-clang-toolchain + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-toolchain-sysroot + +linux64-clang-16-profile: + description: "Clang 16 toolchain build" + treeherder: + symbol: TL(clang-16-profile) + run: + using: toolchain-script + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-stage-1.json' + - 'build/build-clang/profile.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-stage-1.json' + - 'build/build-clang/profile.json' + toolchain-artifact: public/build/merged.profdata + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-x64-compiler-rt-16 + - linux64-toolchain-sysroot + +linux64-clang-16-raw: + description: "Clang 16 toolchain build" + treeherder: + symbol: TL(clang-16-raw) + run: + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-clang-16-profile + - linux64-toolchain-sysroot + +linux64-clang-16: + description: "Clang 16 toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(clang-16) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: null + default: linux64-clang + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang-16-raw + - android-aarch64-compiler-rt-16 + - android-aarch64-libunwind-16 + - android-arm-compiler-rt-16 + - android-arm-libunwind-16 + - android-x64-compiler-rt-16 + - android-x64-libunwind-16 + - android-x86-compiler-rt-16 + - android-x86-libunwind-16 + - linux64-aarch64-compiler-rt-16 + - linux64-x64-compiler-rt-16 + - linux64-x86-compiler-rt-16 + - macosx64-aarch64-compiler-rt-16 + - macosx64-x64-compiler-rt-16 + - wasm32-wasi-compiler-rt-16 + - win32-compiler-rt-16 + - win64-compiler-rt-16 + +macosx64-clang-16-raw: + description: "Clang 16 toolchain build" + treeherder: + symbol: TM(clang-16-raw) + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-clang-16-profile + - macosx64-sdk-toolchain + - macosx64-x64-compiler-rt-16 + +macosx64-clang-16: + description: "Clang 16 toolchain repack with MacOS Compiler RT libs" + attributes: + local-toolchain: true + treeherder: + symbol: TM(clang-16) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: null + default: + - macosx64-clang + - macosx64-clang-toolchain + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - macosx64-clang-16-raw + - android-aarch64-compiler-rt-16 + - android-aarch64-libunwind-16 + - android-arm-compiler-rt-16 + - android-arm-libunwind-16 + - android-x64-compiler-rt-16 + - android-x64-libunwind-16 + - android-x86-compiler-rt-16 + - android-x86-libunwind-16 + - linux64-aarch64-compiler-rt-16 + - linux64-x64-compiler-rt-16 + - linux64-x86-compiler-rt-16 + - macosx64-aarch64-compiler-rt-16 + - macosx64-x64-compiler-rt-16 + - wasm32-wasi-compiler-rt-16 + - win32-compiler-rt-16 + - win64-compiler-rt-16 + +macosx64-aarch64-clang-16-raw: + description: "Clang 16 toolchain build" + treeherder: + symbol: TM(clang-16-aarch64-raw) + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-clang-16-profile + - macosx64-sdk-toolchain + - macosx64-aarch64-compiler-rt-16 + +macosx64-aarch64-clang-16: + description: "Clang 16 toolchain repack with MacOS Compiler RT libs" + attributes: + local-toolchain: true + treeherder: + symbol: TM(clang-16-aarch64) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: null + default: macosx64-aarch64-clang + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - macosx64-aarch64-clang-16-raw + - android-aarch64-compiler-rt-16 + - android-aarch64-libunwind-16 + - android-arm-compiler-rt-16 + - android-arm-libunwind-16 + - android-x64-compiler-rt-16 + - android-x64-libunwind-16 + - android-x86-compiler-rt-16 + - android-x86-libunwind-16 + - linux64-aarch64-compiler-rt-16 + - linux64-x64-compiler-rt-16 + - linux64-x86-compiler-rt-16 + - macosx64-aarch64-compiler-rt-16 + - macosx64-x64-compiler-rt-16 + - wasm32-wasi-compiler-rt-16 + - win32-compiler-rt-16 + - win64-compiler-rt-16 + +win64-clang-16-stage1: + description: "Clang-cl 16 toolchain build stage 1" + treeherder: + symbol: TW64(clang-16-stage1) + run: + script: build-clang.sh + arguments: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/1stage.json' + toolchain-alias: + by-project: + toolchains: null + default: win64-clang-toolchain + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - vs-toolchain + +win64-clang-16-raw: + description: "Clang-cl 16 toolchain build" + treeherder: + symbol: TW64(clang-16-raw) + worker-type: b-win2012 + worker: + max-run-time: 9000 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-stage-1-win64.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-16.json' + - 'build/build-clang/skip-stage-1-win64.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-16 + - cmake + - ninja + toolchain: + - win64-clang-16-stage1 + - win64-compiler-rt-16 + - vs-toolchain + +win64-clang-16: + description: "Clang-cl 16 toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(clang-16) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: null + default: win64-clang + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - win64-clang-16-raw + - android-aarch64-compiler-rt-16 + - android-aarch64-libunwind-16 + - android-arm-compiler-rt-16 + - android-arm-libunwind-16 + - android-x64-compiler-rt-16 + - android-x64-libunwind-16 + - android-x86-compiler-rt-16 + - android-x86-libunwind-16 + - linux64-aarch64-compiler-rt-16 + - linux64-x64-compiler-rt-16 + - linux64-x86-compiler-rt-16 + - macosx64-aarch64-compiler-rt-16 + - macosx64-x64-compiler-rt-16 + - wasm32-wasi-compiler-rt-16 + - win32-compiler-rt-16 + - win64-compiler-rt-16 + +linux64-clang-trunk-mingw-x86: + description: "MinGW-Clang trunk x86 toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TMW(clang-trunk-x86) + worker-type: b-linux-gcp + run: + script: build-clang-mingw.sh + arguments: + - 'x86' + resources: + - 'taskcluster/scripts/misc/mingw-*.patch' + toolchain-alias: + by-project: + toolchains: linux64-clang-mingw-x86 + default: null + toolchain-artifact: public/build/clangmingw.tar.zst + fetches: + fetch: + - clang-trunk + - mingw-w64 + - llvm-mingw + - gcc-9.5.0 + toolchain: + - linux64-clang-trunk + +linux64-clang-trunk-mingw-x64: + description: "MinGW-Clang trunk x64 toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TMW(clang-trunk-x64) + tier: 1 + worker-type: b-linux-gcp + run: + script: build-clang-mingw.sh + arguments: + - 'x64' + resources: + - 'taskcluster/scripts/misc/mingw-*.patch' + toolchain-alias: + by-project: + toolchains: linux64-clang-mingw-x64 + default: null + toolchain-artifact: public/build/clangmingw.tar.zst + fetches: + fetch: + - clang-trunk + - mingw-w64 + - llvm-mingw + - gcc-9.5.0 + toolchain: + - linux64-clang-trunk + +linux64-clang-trunk-stage1: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(clang-trunk-stage1) + run: + using: toolchain-script + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/1stage.json' + toolchain-alias: + by-project: + toolchains: linux64-clang-toolchain + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-toolchain-sysroot + +linux64-clang-trunk-profile: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(clang-trunk-profile) + run: + using: toolchain-script + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-stage-1.json' + - 'build/build-clang/profile.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-stage-1.json' + - 'build/build-clang/profile.json' + toolchain-artifact: public/build/merged.profdata + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-x64-compiler-rt-trunk + - linux64-toolchain-sysroot + +linux64-clang-trunk-raw: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(clang-trunk-raw) + run: + script: build-clang.sh + arguments: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/linux64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-clang-trunk-profile + - linux64-toolchain-sysroot + +linux64-clang-trunk: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(clang-trunk) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: linux64-clang + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - linux64-clang-trunk-raw + - android-aarch64-compiler-rt-trunk + - android-aarch64-libunwind-trunk + - android-arm-compiler-rt-trunk + - android-arm-libunwind-trunk + - android-x64-compiler-rt-trunk + - android-x64-libunwind-trunk + - android-x86-compiler-rt-trunk + - android-x86-libunwind-trunk + - linux64-aarch64-compiler-rt-trunk + - linux64-x64-compiler-rt-trunk + - linux64-x86-compiler-rt-trunk + - macosx64-aarch64-compiler-rt-trunk + - macosx64-x64-compiler-rt-trunk + - wasm32-wasi-compiler-rt-trunk + - win32-compiler-rt-trunk + - win64-compiler-rt-trunk + +macosx64-clang-trunk-raw: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TM(clang-trunk-raw) + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-clang-trunk-profile + - macosx64-sdk-toolchain + - macosx64-x64-compiler-rt-trunk + +macosx64-clang-trunk: + description: "Clang trunk toolchain repack with MacOS Compiler RT libs" + attributes: + cached_task: false + treeherder: + symbol: TM(clang-trunk) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: + - macosx64-clang + - macosx64-clang-toolchain + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - macosx64-clang-trunk-raw + - android-aarch64-compiler-rt-trunk + - android-aarch64-libunwind-trunk + - android-arm-compiler-rt-trunk + - android-arm-libunwind-trunk + - android-x64-compiler-rt-trunk + - android-x64-libunwind-trunk + - android-x86-compiler-rt-trunk + - android-x86-libunwind-trunk + - linux64-aarch64-compiler-rt-trunk + - linux64-x64-compiler-rt-trunk + - linux64-x86-compiler-rt-trunk + - macosx64-aarch64-compiler-rt-trunk + - macosx64-x64-compiler-rt-trunk + - wasm32-wasi-compiler-rt-trunk + - win32-compiler-rt-trunk + - win64-compiler-rt-trunk + +macosx64-aarch64-clang-trunk-raw: + description: "Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TM(clang-trunk-aarch64-raw) + worker-type: b-linux-large-gcp + worker: + max-run-time: 3600 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/macosx64.json' + - 'build/build-clang/macosx64-aarch64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-3-stages.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-clang-trunk-profile + - macosx64-sdk-toolchain + - macosx64-aarch64-compiler-rt-trunk + +macosx64-aarch64-clang-trunk: + description: "Clang trunk toolchain repack with MacOS Compiler RT libs" + attributes: + cached_task: false + treeherder: + symbol: TM(clang-trunk-aarch64) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: macosx64-aarch64-clang + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - macosx64-aarch64-clang-trunk-raw + - android-aarch64-compiler-rt-trunk + - android-aarch64-libunwind-trunk + - android-arm-compiler-rt-trunk + - android-arm-libunwind-trunk + - android-x64-compiler-rt-trunk + - android-x64-libunwind-trunk + - android-x86-compiler-rt-trunk + - android-x86-libunwind-trunk + - linux64-aarch64-compiler-rt-trunk + - linux64-x64-compiler-rt-trunk + - linux64-x86-compiler-rt-trunk + - macosx64-aarch64-compiler-rt-trunk + - macosx64-x64-compiler-rt-trunk + - wasm32-wasi-compiler-rt-trunk + - win32-compiler-rt-trunk + - win64-compiler-rt-trunk + +win64-clang-trunk-stage1: + description: "Clang-cl trunk toolchain build stage 1" + attributes: + cached_task: false + treeherder: + symbol: TW64(clang-trunk-stage1) + run: + script: build-clang.sh + arguments: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/1stage.json' + resources: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/1stage.json' + toolchain-alias: + by-project: + toolchains: win64-clang-toolchain + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - vs-toolchain + +win64-clang-trunk-raw: + description: "Clang-cl trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TW64(clang-trunk-raw) + worker-type: b-win2012 + worker: + max-run-time: 9000 + run: + script: build-clang.sh + arguments: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-stage-1-win64.json' + - 'build/build-clang/4stages-pgo.json' + resources: + - 'build/build-clang/win64.json' + - 'build/build-clang/clang-trunk.json' + - 'build/build-clang/skip-stage-1-win64.json' + - 'build/build-clang/4stages-pgo.json' + toolchain-artifact: public/build/clang.tar.zst + fetches: + fetch: + - clang-trunk + - cmake + - ninja + toolchain: + - win64-clang-trunk-stage1 + - win64-compiler-rt-trunk + - vs-toolchain + +win64-clang-trunk: + description: "Clang-cl trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TW64(clang-trunk) + worker-type: b-linux-gcp + worker: + max-run-time: 600 + run: + script: repack-clang.sh + toolchain-alias: + by-project: + toolchains: win64-clang + default: null + toolchain-artifact: public/build/clang.tar.zst + fetches: + toolchain: + - linux64-cctools-port + - win64-clang-trunk-raw + - android-aarch64-compiler-rt-trunk + - android-aarch64-libunwind-trunk + - android-arm-compiler-rt-trunk + - android-arm-libunwind-trunk + - android-x64-compiler-rt-trunk + - android-x64-libunwind-trunk + - android-x86-compiler-rt-trunk + - android-x86-libunwind-trunk + - linux64-aarch64-compiler-rt-trunk + - linux64-x64-compiler-rt-trunk + - linux64-x86-compiler-rt-trunk + - macosx64-aarch64-compiler-rt-trunk + - macosx64-x64-compiler-rt-trunk + - wasm32-wasi-compiler-rt-trunk + - win32-compiler-rt-trunk + - win64-compiler-rt-trunk diff --git a/taskcluster/ci/toolchain/compiler-rt.yml b/taskcluster/ci/toolchain/compiler-rt.yml new file mode 100644 index 0000000000..e75e77daf3 --- /dev/null +++ b/taskcluster/ci/toolchain/compiler-rt.yml @@ -0,0 +1,462 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + using: toolchain-script + script: build-compiler-rt.sh + +android-aarch64-compiler-rt-16: + description: "android aarch64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TA(aarch64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-arm-compiler-rt-16: + description: "android arm Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TA(arm-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-armv7-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-x86-compiler-rt-16: + description: "android x86 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TA(x86-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-x64-compiler-rt-16: + description: "android x64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TA(x64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +linux64-x86-compiler-rt-16: + description: "Linux x86 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TL(x86-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - sysroot-i686-linux-gnu + +linux64-x64-compiler-rt-16: + description: "Linux x64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TL(x64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - sysroot-x86_64-linux-gnu + +linux64-aarch64-compiler-rt-16: + description: "Linux aarch64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TL(aarch64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - sysroot-aarch64-linux-gnu + +macosx64-x64-compiler-rt-16: + description: "macOS x64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TM(x64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-apple-darwin.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - macosx64-sdk-toolchain + +macosx64-aarch64-compiler-rt-16: + description: "macOS aarch64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TM(aarch64-crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-apple-darwin.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - macosx64-sdk-toolchain + +win32-compiler-rt-16: + description: "win32 x86 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TW32(crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-pc-windows-msvc.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - vs-toolchain + +win64-compiler-rt-16: + description: "win64 x64 Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TW64(crt-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-pc-windows-msvc.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - vs-toolchain + +wasm32-wasi-compiler-rt-16: + description: "wasm32-wasi Compiler-rt for Clang 16 toolchain build" + treeherder: + symbol: TL(wasi-crt-16) + worker-type: b-linux-xlarge-gcp + run: + script: build-compiler-rt-wasi.sh + toolchain-artifact: public/build/compiler-rt-wasm32-wasi.tar.zst + toolchain-alias: wasm32-wasi-compiler-rt + fetches: + fetch: + - clang-16 + - wasi-sdk + toolchain: + - linux64-clang-16-stage1 + +android-aarch64-compiler-rt-trunk: + description: "android aarch64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(aarch64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-arm-compiler-rt-trunk: + description: "android arm Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(arm-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-armv7-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-x86-compiler-rt-trunk: + description: "android x86 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(x86-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-x64-compiler-rt-trunk: + description: "android x64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(x64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +linux64-x86-compiler-rt-trunk: + description: "Linux x86 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(x86-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - sysroot-i686-linux-gnu + +linux64-x64-compiler-rt-trunk: + description: "Linux x64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(x64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - sysroot-x86_64-linux-gnu + +linux64-aarch64-compiler-rt-trunk: + description: "Linux aarch64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(aarch64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-unknown-linux-gnu.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - sysroot-aarch64-linux-gnu + +macosx64-x64-compiler-rt-trunk: + description: "macOS x64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TM(x64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-apple-darwin.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - macosx64-sdk-toolchain + +macosx64-aarch64-compiler-rt-trunk: + description: "macOS aarch64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TM(aarch64-crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-aarch64-apple-darwin.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - macosx64-sdk-toolchain + +win32-compiler-rt-trunk: + description: "win32 x86 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TW32(crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-i686-pc-windows-msvc.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - vs-toolchain + +win64-compiler-rt-trunk: + description: "win64 x64 Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TW64(crt-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/compiler-rt-x86_64-pc-windows-msvc.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - vs-toolchain + +wasm32-wasi-compiler-rt-trunk: + description: "wasm32-wasi Compiler-rt for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TL(wasi-crt-trunk) + worker-type: b-linux-xlarge-gcp + run: + script: build-compiler-rt-wasi.sh + toolchain-artifact: public/build/compiler-rt-wasm32-wasi.tar.zst + fetches: + fetch: + - clang-trunk + - wasi-sdk + toolchain: + - linux64-clang-trunk-stage1 diff --git a/taskcluster/ci/toolchain/dist-toolchains.yml b/taskcluster/ci/toolchain/dist-toolchains.yml new file mode 100644 index 0000000000..31b60918e6 --- /dev/null +++ b/taskcluster/ci/toolchain/dist-toolchains.yml @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "sccache-dist toolchain archive build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + run: + using: toolchain-script + script: build-dist-toolchains.sh + +clang-dist-toolchain: + treeherder: + symbol: TL(clang-dist) + worker: + max-run-time: 1800 + run: + arguments: ['clang'] + toolchain-artifact: public/build/clang-dist-toolchain.tar.xz + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-sccache + +rustc-dist-toolchain: + treeherder: + symbol: TL(rustc-dist) + worker: + max-run-time: 1800 + run: + arguments: ['rustc'] + toolchain-artifact: public/build/rustc-dist-toolchain.tar.xz + use-sccache: true + fetches: + toolchain: + - linux64-rust-cross + - linux64-sccache diff --git a/taskcluster/ci/toolchain/dump-syms.yml b/taskcluster/ci/toolchain/dump-syms.yml new file mode 100644 index 0000000000..95e90b5984 --- /dev/null +++ b/taskcluster/ci/toolchain/dump-syms.yml @@ -0,0 +1,62 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + attributes: + local-toolchain: true + description: "dump_syms toolchain build" + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/dump_syms.tar.zst + fetches: + fetch: + - dump-syms + +linux64-dump_syms: + treeherder: + symbol: TL(dump_syms) + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-dump_syms: + treeherder: + symbol: TM(dump_syms) + worker-type: b-linux-gcp + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-dump_syms: + treeherder: + symbol: TM(dump_syms-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win64-dump_syms: + treeherder: + symbol: TW64(dump_syms) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/fix-stacks.yml b/taskcluster/ci/toolchain/fix-stacks.yml new file mode 100644 index 0000000000..e11bf0b166 --- /dev/null +++ b/taskcluster/ci/toolchain/fix-stacks.yml @@ -0,0 +1,72 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "fix-stacks toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/fix-stacks.tar.zst + fetches: + fetch: + - fix-stacks + +linux64-fix-stacks: + treeherder: + symbol: TL(fix-stacks) + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-fix-stacks: + treeherder: + symbol: TM(fix-stacks) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-fix-stacks: + treeherder: + symbol: TM(fix-stacks-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos-toolchain + - macosx64-sdk-toolchain + +win32-fix-stacks: + treeherder: + symbol: TW32(fix-stacks) + run: + arguments: ['i686-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain + +win64-fix-stacks: + treeherder: + symbol: TW64(fix-stacks) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/gcc.yml b/taskcluster/ci/toolchain/gcc.yml new file mode 100644 index 0000000000..2a09c37e6c --- /dev/null +++ b/taskcluster/ci/toolchain/gcc.yml @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + run: + resources: + - 'build/unix/build-gcc/build-gcc.sh' + toolchain-artifact: public/build/gcc.tar.zst + fetches: + toolchain: + - linux64-toolchain-sysroot + +linux64-gcc-8: + description: "GCC 8 toolchain build" + treeherder: + symbol: TL(gcc8) + run: + script: build-gcc-linux.sh + toolchain-alias: + - linux64-gcc + - linux64-gcc-base + fetches: + fetch: + - gcc-8.5.0 + - gmp-6.1.0 + - isl-0.16.1 + - mpc-1.0.3 + - mpfr-3.1.4 + +linux64-gcc-9: + description: "GCC 9 toolchain build" + treeherder: + symbol: TL(gcc9) + run: + script: build-gcc-linux.sh + fetches: + fetch: + - gcc-9.5.0 + - gmp-6.1.0 + - isl-0.16.1 + - mpc-1.0.3 + - mpfr-3.1.4 + +linux64-gcc-11: + description: "GCC 11 toolchain build" + treeherder: + symbol: TL(gcc11) + run: + script: build-gcc-linux.sh + fetches: + fetch: + - gcc-11.4.0 + - gmp-6.1.0 + - isl-0.16.1 + - mpc-1.0.3 + - mpfr-3.1.4 + +linux64-gcc-sixgill: + description: "sixgill GCC plugin build" + treeherder: + symbol: TL(sixgill) + run: + script: build-gcc-sixgill-plugin-linux.sh + resources: + - 'taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh' + toolchain-artifact: public/build/sixgill.tar.xz + fetches: + fetch: + - gcc-9.5.0 + - gmp-6.1.0 + - isl-0.16.1 + - mpc-1.0.3 + - mpfr-3.1.4 + toolchain: + - linux64-gcc-9 diff --git a/taskcluster/ci/toolchain/geckodriver.yml b/taskcluster/ci/toolchain/geckodriver.yml new file mode 100644 index 0000000000..252befa3fb --- /dev/null +++ b/taskcluster/ci/toolchain/geckodriver.yml @@ -0,0 +1,137 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "geckodriver toolchain build" + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run-on-projects: ['trunk'] + attributes: + build_type: opt + geckodriver: true + shippable: true + rebuild-on-release: true + run: + script: build-geckodriver.sh + toolchain-artifact: public/build/geckodriver.tar.gz + sparse-profile: null + resources: + - 'testing/geckodriver' + - 'testing/mozbase/rust' + - 'testing/webdriver' + # Changes to 'third_party/rust' should be captured by + # 'testing/geckodriver/Cargo.toml'. + +# For Linux platforms target "*-musl" so that the binary will be statically linked. + +linux32-geckodriver: + treeherder: + symbol: TL32(gd) + platform: linux32/opt + run: + arguments: ['i686-unknown-linux-musl'] + attributes: + build_platform: linux-geckodriver + fetches: + toolchain: + - linux64-rust-static + +linux64-geckodriver: + treeherder: + symbol: TL(gd) + platform: linux64/opt + run: + arguments: ['x86_64-unknown-linux-musl'] + attributes: + build_platform: linux64-geckodriver + fetches: + toolchain: + - linux64-rust-static + +linux64-aarch64-geckodriver: + treeherder: + symbol: TL(gd) + platform: linux64-aarch64/opt + run: + arguments: ['aarch64-unknown-linux-musl'] + attributes: + build_platform: linux64-aarch64-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-static + +macosx64-geckodriver: + treeherder: + symbol: TM(gd) + platform: macosx64/opt + run: + arguments: ['x86_64-apple-darwin'] + attributes: + build_platform: macosx64-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos + - macosx64-sdk-toolchain + +macosx64-aarch64-geckodriver: + treeherder: + symbol: TM(gd) + platform: macosx64-aarch64/opt + run: + arguments: ['aarch64-apple-darwin'] + attributes: + build_platform: macosx64-aarch64-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-macos + - macosx64-sdk-toolchain + +win32-geckodriver: + treeherder: + symbol: TW32(gd) + platform: win32/opt + run: + arguments: ['i686-pc-windows-msvc'] + toolchain-artifact: public/build/geckodriver.zip + attributes: + build_platform: win32-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows + - vs-toolchain + +win64-aarch64-geckodriver: + treeherder: + symbol: TW64(gd) + platform: windows2012-aarch64/opt + run: + arguments: ['aarch64-pc-windows-msvc'] + toolchain-artifact: public/build/geckodriver.zip + attributes: + build_platform: win64-aarch64-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows + - vs-toolchain + +win64-geckodriver: + treeherder: + symbol: TW64(gd) + platform: win64/opt + run: + arguments: ['x86_64-pc-windows-msvc'] + toolchain-artifact: public/build/geckodriver.zip + attributes: + build_platform: win64-geckodriver + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows + - vs-toolchain diff --git a/taskcluster/ci/toolchain/gn.yml b/taskcluster/ci/toolchain/gn.yml new file mode 100644 index 0000000000..315785e425 --- /dev/null +++ b/taskcluster/ci/toolchain/gn.yml @@ -0,0 +1,49 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "gn toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + resources: + - 'taskcluster/scripts/misc/build-gn-common.sh' + toolchain-artifact: public/build/gn.tar.zst + fetches: + fetch: + - gn + +linux64-gn: + treeherder: + symbol: TL(gn) + run: + script: build-gn-linux.sh + +macosx64-gn: + treeherder: + symbol: TM(gn) + run: + script: build-gn-macosx.sh + toolchain-alias: macosx64-aarch64-gn + fetches: + toolchain: + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win64-gn: + treeherder: + symbol: TW64(gn) + worker-type: b-win2012 + worker: + max-run-time: 3600 + run: + script: build-gn-win64.sh + fetches: + fetch: + - ninja + toolchain: + - vs-toolchain diff --git a/taskcluster/ci/toolchain/grcov.yml b/taskcluster/ci/toolchain/grcov.yml new file mode 100644 index 0000000000..15fed68732 --- /dev/null +++ b/taskcluster/ci/toolchain/grcov.yml @@ -0,0 +1,48 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "grcov toolchain build" + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/grcov.tar.zst + fetches: + fetch: + - grcov + +linux64-grcov: + treeherder: + symbol: TL(grcov) + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-rust-toolchain + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-grcov: + treeherder: + symbol: TM(grcov) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win64-grcov: + treeherder: + symbol: TW64(grcov) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/kind.yml b/taskcluster/ci/toolchain/kind.yml new file mode 100644 index 0000000000..d9dd52c980 --- /dev/null +++ b/taskcluster/ci/toolchain/kind.yml @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - fetch + - packages + +transforms: + - gecko_taskgraph.transforms.try_job:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.cached_tasks:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + treeherder: + kind: build + platform: toolchains/opt + tier: 1 + run-on-projects: [] + run: + using: toolchain-script + +jobs-from: + - android.yml + - cargo-vet.yml + - cbindgen.yml + - clang-tidy.yml + - clang.yml + - compiler-rt.yml + - dump-syms.yml + - fix-stacks.yml + - gcc.yml + - geckodriver.yml + - gn.yml + - grcov.yml + - libunwind.yml + - llvm-symbolizer.yml + - macos-sdk.yml + - mingw.yml + - minidump-stackwalk.yml + - misc.yml + - nasm.yml + - node.yml + - pkgconf.yml + - python.yml + - resourcemonitor.yml + - rust.yml + - rust-size.yml + - sccache.yml + - sysroot.yml + - dist-toolchains.yml diff --git a/taskcluster/ci/toolchain/libunwind.yml b/taskcluster/ci/toolchain/libunwind.yml new file mode 100644 index 0000000000..78f9944856 --- /dev/null +++ b/taskcluster/ci/toolchain/libunwind.yml @@ -0,0 +1,171 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + using: toolchain-script + script: build-libunwind.sh + +android-aarch64-libunwind-16: + description: "android aarch64 libunwind for Clang 16 toolchain build" + treeherder: + symbol: TA(aarch64-unwind-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-aarch64-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - android-aarch64-compiler-rt-16 + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-arm-libunwind-16: + description: "android arm libunwind for Clang 16 toolchain build" + treeherder: + symbol: TA(arm-unwind-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-armv7-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - android-arm-compiler-rt-16 + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-x86-libunwind-16: + description: "android x86 libunwind for Clang 16 toolchain build" + treeherder: + symbol: TA(x86-unwind-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-i686-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - android-x86-compiler-rt-16 + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-x64-libunwind-16: + description: "android x64 libunwind for Clang 16 toolchain build" + treeherder: + symbol: TA(x64-unwind-16) + run: + arguments: + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-x86_64-linux-android.tar.zst + fetches: + fetch: + - clang-16 + toolchain: + - android-x64-compiler-rt-16 + - linux64-clang-16-stage1 + - linux64-android-ndk-linux-repack + +android-aarch64-libunwind-trunk: + description: "android aarch64 libunwind for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(aarch64-unwind-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-aarch64-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - android-aarch64-compiler-rt-trunk + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-arm-libunwind-trunk: + description: "android arm libunwind for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(arm-unwind-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-armv7-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - android-arm-compiler-rt-trunk + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-x86-libunwind-trunk: + description: "android x86 libunwind for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(x86-unwind-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-i686-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - android-x86-compiler-rt-trunk + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack + +android-x64-libunwind-trunk: + description: "android x64 libunwind for Clang trunk toolchain build" + attributes: + cached_task: false + treeherder: + symbol: TA(x64-unwind-trunk) + run: + arguments: + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-artifact: public/build/libunwind-x86_64-linux-android.tar.zst + fetches: + fetch: + - clang-trunk + toolchain: + - android-x64-compiler-rt-trunk + - linux64-clang-trunk-stage1 + - linux64-android-ndk-linux-repack diff --git a/taskcluster/ci/toolchain/llvm-symbolizer.yml b/taskcluster/ci/toolchain/llvm-symbolizer.yml new file mode 100644 index 0000000000..e49f699f47 --- /dev/null +++ b/taskcluster/ci/toolchain/llvm-symbolizer.yml @@ -0,0 +1,241 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-large-gcp + worker: + max-run-time: 1800 + run: + script: build-llvm-symbolizer.sh + toolchain-artifact: public/build/llvm-symbolizer.tar.zst + +linux32-llvm-symbolizer-16: + description: "llvm-symbolizer for Linux" + treeherder: + symbol: TL32(llvm-symbolizer) + run: + arguments: + - i686-unknown-linux-gnu + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: null + default: linux32-llvm-symbolizer + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux32-toolchain-sysroot + +linux64-llvm-symbolizer-16: + description: "llvm-symbolizer for Linux" + treeherder: + symbol: TL(llvm-symbolizer) + run: + arguments: + - x86_64-unknown-linux-gnu + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: null + default: linux64-llvm-symbolizer + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - linux64-toolchain-sysroot + +macosx64-llvm-symbolizer-16: + description: "llvm-symbolizer for macOS x64" + treeherder: + symbol: TM(llvm-symbolizer) + run: + arguments: + - x86_64-apple-darwin + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: null + default: macosx64-llvm-symbolizer + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - macosx64-sdk-toolchain + +macosx64-aarch64-llvm-symbolizer-16: + description: "llvm-symbolizer for macOS aarch64" + treeherder: + symbol: TM(llvm-symbolizer-aarch64) + run: + arguments: + - aarch64-apple-darwin + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: null + default: macosx64-aarch64-llvm-symbolizer + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - macosx64-sdk-toolchain + +win64-llvm-symbolizer-16: + description: "llvm-symbolizer for Windows" + treeherder: + symbol: TW64(llvm-symbolizer) + run: + arguments: + - x86_64-pc-windows-msvc + - build/build-clang/clang-16.json + resources: + - build/build-clang/clang-16.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: null + default: win64-llvm-symbolizer + fetches: + fetch: + - clang-16 + toolchain: + - linux64-clang-16-stage1 + - vs-toolchain + +linux32-llvm-symbolizer-trunk: + description: "llvm-symbolizer for Linux" + attributes: + cached_task: false + treeherder: + symbol: TL32(llvm-symbolizer-trunk) + run: + arguments: + - i686-unknown-linux-gnu + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: linux32-llvm-symbolizer + default: null + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux32-toolchain-sysroot + +linux64-llvm-symbolizer-trunk: + description: "llvm-symbolizer for Linux" + attributes: + cached_task: false + treeherder: + symbol: TL(llvm-symbolizer-trunk) + run: + arguments: + - x86_64-unknown-linux-gnu + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: linux64-llvm-symbolizer + default: null + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - linux64-toolchain-sysroot + +macosx64-llvm-symbolizer-trunk: + description: "llvm-symbolizer for macOS x64" + attributes: + cached_task: false + treeherder: + symbol: TM(llvm-symbolizer-trunk) + run: + arguments: + - x86_64-apple-darwin + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: macosx64-llvm-symbolizer + default: null + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - macosx64-sdk-toolchain + +macosx64-aarch64-llvm-symbolizer-trunk: + description: "llvm-symbolizer for macOS aarch64" + attributes: + cached_task: false + treeherder: + symbol: TM(llvm-sym-aarch64-trunk) + run: + arguments: + - aarch64-apple-darwin + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: macosx64-aarch64-llvm-symbolizer + default: null + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - macosx64-sdk-toolchain + +win64-llvm-symbolizer-trunk: + description: "llvm-symbolizer for Windows" + attributes: + cached_task: false + treeherder: + symbol: TW64(llvm-symbolizer-trunk) + run: + arguments: + - x86_64-pc-windows-msvc + - build/build-clang/clang-trunk.json + resources: + - build/build-clang/clang-trunk.json + - taskcluster/scripts/misc/build-llvm-common.sh + toolchain-alias: + by-project: + toolchains: win64-llvm-symbolizer + default: null + fetches: + fetch: + - clang-trunk + toolchain: + - linux64-clang-trunk-stage1 + - vs-toolchain diff --git a/taskcluster/ci/toolchain/macos-sdk.yml b/taskcluster/ci/toolchain/macos-sdk.yml new file mode 100644 index 0000000000..8dd60e31b3 --- /dev/null +++ b/taskcluster/ci/toolchain/macos-sdk.yml @@ -0,0 +1,34 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + env: + PATH: "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin" + run: + script: unpack-sdk.py + resources: + - python/mozbuild/mozpack/macpkg.py + - taskcluster/scripts/misc/unpack-sdk.py + # Expiry similar to that of fetches + expires-after: 1000 years + +macosx64-sdk-13.3: + description: "MacOSX13.3 SDK" + treeherder: + symbol: TM(sdk13.3) + run: + arguments: + - https://swcdn.apple.com/content/downloads/15/62/032-84673-A_7A1TG1RF8Z/xpc8q44ggn2pkn82iwr0fi1zeb9cxi8ath/CLTools_macOSNMOS_SDK.pkg + - c33545d543a38911aee2a65d4bf7ff4932c12de1e6a042ae38e6415f65a10710 + - Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk + toolchain-artifact: project/gecko/mac-sdk/MacOSX13.3.sdk.tar.zst + toolchain-alias: + - macosx64-sdk + - macosx64-sdk-toolchain + - MacOSX13.3.sdk diff --git a/taskcluster/ci/toolchain/mingw.yml b/taskcluster/ci/toolchain/mingw.yml new file mode 100644 index 0000000000..b0573ac47b --- /dev/null +++ b/taskcluster/ci/toolchain/mingw.yml @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + treeherder: + tier: 2 + worker-type: b-linux-gcp + worker: + max-run-time: 3600 + +linux64-mingw32-nsis: + description: "NSIS build for MinGW32 Cross Compile" + treeherder: + symbol: TMW(mingw32-nsis) + run: + script: build-mingw32-nsis.sh + toolchain-artifact: public/build/nsis.tar.zst + fetches: + fetch: + - nsis-3.07 + - zlib-1.2.13 + toolchain: + - linux64-binutils + - linux64-clang-mingw-x86 + - sysroot-x86_64-linux-gnu + +linux64-mingw-fxc2-x86: + description: "fxc2.exe x86 build for MinGW Cross Compile" + treeherder: + symbol: TMW(mingw-fxc2-x86) + worker: + max-run-time: 1800 + run: + using: toolchain-script + script: build-mingw-fxc2-x86.sh + toolchain-artifact: public/build/fxc2.tar.zst + fetches: + fetch: + - fxc2 + toolchain: + - linux64-clang-mingw-x86 diff --git a/taskcluster/ci/toolchain/minidump-stackwalk.yml b/taskcluster/ci/toolchain/minidump-stackwalk.yml new file mode 100644 index 0000000000..f0f9b3e70c --- /dev/null +++ b/taskcluster/ci/toolchain/minidump-stackwalk.yml @@ -0,0 +1,96 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "minidump-stackwalk toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + env: + FETCH: rust-minidump/minidump-stackwalk + run: + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/minidump-stackwalk.tar.zst + fetches: + fetch: + - rust-minidump + +linux64-minidump-stackwalk: + treeherder: + symbol: TL(stackwalk) + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-minidump-stackwalk: + treeherder: + symbol: TM(stackwalk) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-minidump-stackwalk: + treeherder: + symbol: TM(stackwalk-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win32-minidump-stackwalk: + treeherder: + symbol: TW32(stackwalk) + run: + arguments: ['i686-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain + +win64-minidump-stackwalk: + treeherder: + symbol: TW64(stackwalk) + run: + arguments: ['x86_64-pc-windows-msvc'] + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain + +# This is a totally different thing but it used to share common code with +# minidump-stackwalk, so it lives here for historical reasons. +linux64-breakpad-injector: + description: "breakpad injector toolchain build" + run: + script: build-breakpad-injector.sh + toolchain-artifact: public/build/injector.tar.zst + sparse-profile: null + resources: + - 'build/moz.configure' + - 'config/external/zlib' + - 'moz.configure' + - 'toolkit/crashreporter' + - 'toolkit/crashreporter/google-breakpad/src/processor' + - 'tools/crashreporter/' + treeherder: + symbol: TL(injector) + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot diff --git a/taskcluster/ci/toolchain/misc.yml b/taskcluster/ci/toolchain/misc.yml new file mode 100644 index 0000000000..c3392926e1 --- /dev/null +++ b/taskcluster/ci/toolchain/misc.yml @@ -0,0 +1,440 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + +linux64-binutils-2.31.1: + description: "Binutils toolchain build" + treeherder: + symbol: TL(binutil2.31) + run: + script: build-binutils-linux.sh + resources: + - 'build/unix/build-binutils/build-binutils.sh' + toolchain-artifact: public/build/binutils.tar.zst + fetches: + fetch: + - binutils-2.31.1 + toolchain: + # C++ code in gold doesn't compile with recent versions of GCC. + - linux64-gcc-8 + - linux64-toolchain-sysroot + +linux64-binutils: + description: "Binutils toolchain build" + treeherder: + symbol: TL(binutil) + run: + script: build-binutils-linux.sh + resources: + - 'build/unix/build-binutils/build-binutils.sh' + toolchain-artifact: public/build/binutils.tar.zst + fetches: + fetch: + - binutils-2.36.1 + toolchain: + - linux64-toolchain-sysroot + +linux64-cctools-port: + description: "cctools-port toolchain build" + treeherder: + symbol: TL(cctools-clang) + run: + script: build-cctools-port.sh + toolchain-artifact: public/build/cctools.tar.zst + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot + fetch: + - cctools-port + - libtapi + - ldid + +linux64-hfsplus: + description: "hfsplus toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(hfs+) + run: + script: build-hfsplus-linux.sh + resources: + - 'build/unix/build-hfsplus/build-hfsplus.sh' + toolchain-artifact: public/build/hfsplus.tar.zst + fetches: + fetch: + - hfsplus-tools + toolchain: + - linux64-clang-toolchain + +linux64-libdmg: + description: "libdmg-hfsplus toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(libdmg-hfs+) + run: + script: build-dmg-hfsplus.sh + toolchain-artifact: public/build/dmg.tar.zst + toolchain-alias: linux64-dmg + fetches: + fetch: + - libdmg-hfsplus + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot + +linux64-mkbom: + description: "mkbom toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(mkbom) + run: + script: build-mkbom-linux.sh + toolchain-artifact: public/build/mkbom.tar.zst + fetches: + fetch: + - bomutils + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot + +linux64-xar: + description: "xar toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(xar) + run: + script: build-xar-linux.sh + toolchain-artifact: public/build/xar.tar.zst + fetches: + fetch: + - xar + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot + +linux64-mar-tools: + description: "mar-tools toolchain build" + treeherder: + symbol: TL(mar-tools) + fetches: + toolchain: + - linux64-clang-toolchain + run: + script: build-mar-tools.sh + sparse-profile: null + toolchain-artifact: public/build/mar-tools.tar.zst + resources: + - build/moz.configure + - modules/libmar/ + - moz.configure + - other-licenses/bsdiff/ + - other-licenses/nsis/Contrib/CityHash/cityhash/ + - toolkit/mozapps/update/updater/bspatch/ + - tools/update-packaging/ + +linux64-upx: + description: "UPX build" + treeherder: + symbol: TL(upx) + tier: 1 + run: + script: build-upx.sh + toolchain-artifact: public/build/upx.tar.zst + +linux64-msix-packaging: + description: "msix-packaging build" + treeherder: + symbol: TL(msix-packaging) + tier: 1 + run: + script: build-msix-packaging.sh + toolchain-artifact: public/build/msix-packaging.tar.zst + fetches: + fetch: + - msix-packaging + toolchain: + - linux64-clang-toolchain + - linux64-toolchain-sysroot + +linux64-custom-v8: + description: "Custom v8 build" + treeherder: + symbol: TL(custom-v8) + worker: + docker-image: {in-tree: custom-v8} + max-run-time: 3600 + run: + script: build-custom-v8.sh + arguments: [ + d8.tar.zst, + is_debug=false, + target_cpu="x64" + ] + toolchain-artifact: public/build/d8.tar.zst + +linux64-custom-car: + description: "Custom chromium-as-release build for Linux" + attributes: + cached_task: false + treeherder: + symbol: TL(custom-car) + worker: + docker-image: {in-tree: custom-car-linux} + max-run-time: 16200 + run-on-projects: [] + run: + script: build-custom-car-linux.sh + arguments: [ + car_linux.tar.zst, + blink_symbol_level=0, + chrome_pgo_phase=2, + dcheck_always_on=false, + enable_nacl=false, + enable_resource_allowlist_generation=false, + is_chrome_branded=false, + is_clang=true, + is_component_build=false, + is_debug=false, + is_official_build=true, + symbol_level=0, + target_cpu="x64", + v8_symbol_level=0 + ] + toolchain-artifact: public/build/car_linux.tar.zst + +win64-custom-car: + description: "Custom chromium-as-release build for Windows" + attributes: + cached_task: false + treeherder: + symbol: TW64(custom-car) + worker-type: b-win2012 + worker: + max-run-time: 16200 + env: + MSYSTEM: "MINGW64" + run-on-projects: [] + run: + script: build-custom-car-win64.sh + arguments: [ + car_win64.tar.zst, + blink_symbol_level=0, + chrome_pgo_phase=2, + dcheck_always_on=false, + enable_nacl=false, + enable_resource_allowlist_generation=false, + is_chrome_branded=false, + is_clang=true, + is_component_build=false, + is_debug=false, + is_official_build=true, + symbol_level=0, + target_cpu=\"x64\", + use_v8_context_snapshot=false, + v8_symbol_level=0 + ] + toolchain-artifact: public/build/car_win64.tar.zst + fetches: + toolchain: + - win64-vs2022 + +browsertime: + description: "npm install browsertime node_modules" + treeherder: + symbol: TL(browsertime) + run: + script: browsertime.sh + sparse-profile: null + resources: + - 'tools/browsertime/package.json' + - 'tools/browsertime/package-lock.json' + - 'tools/browsertime/mach_commands.py' + toolchain-artifact: public/build/browsertime.tar.zst + fetches: + toolchain: + - linux64-node-16 + +wrench-deps: + description: "Downloads all the crates needed for building wrench" + treeherder: + symbol: WR(wrench-deps) + worker: + docker-image: {in-tree: webrender} + run: + script: wrench-deps-vendoring.sh + sparse-profile: null + resources: + - 'gfx/wr/Cargo.lock' + - 'gfx/wr/ci-scripts/install-meson.sh' + toolchain-artifact: public/build/wrench-deps.tar.zst + fetches: + fetch: + - android-ndk-rs + toolchain: + - linux64-rust # whatever m-c is built with + +linux64-wine: + description: "Wine build for Windows Cross Compile" + attributes: + local-toolchain: true + treeherder: + symbol: TL(wine) + tier: 1 + worker: + max-run-time: 10800 + run: + script: build-wine.sh + toolchain-artifact: public/build/wine.tar.zst + fetches: + fetch: + - wine + +linux64-winchecksec: + description: "winchecksec" + attributes: + local-toolchain: true + treeherder: + symbol: TL(winchecksec) + run: + script: build-winchecksec.sh + arguments: ['x86_64-unknown-linux-gnu'] + toolchain-artifact: public/build/winchecksec.tar.zst + tooltool-downloads: internal + fetches: + fetch: + - winchecksec + +win64-winchecksec: + description: "winchecksec" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(winchecksec) + run: + script: build-winchecksec.sh + arguments: ['x86_64-pc-windows-msvc'] + toolchain-artifact: public/build/winchecksec.tar.zst + tooltool-downloads: internal + fetches: + fetch: + - winchecksec + toolchain: + - linux64-clang-toolchain + - vs-toolchain + +linux64-makecab: + description: "makecab toolchain build" + treeherder: + symbol: TL(cab) + worker: + env: + FETCH: rust-makecab + run: + script: build-rust-based-toolchain.sh + arguments: ['x86_64-unknown-linux-gnu'] + toolchain-artifact: public/build/makecab.tar.zst + fetches: + fetch: + - makecab + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +win64-mozmake: + description: "mozmake for Windows" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(mozmake) + run: + script: build-mozmake.sh + toolchain-artifact: public/build/mozmake.tar.zst + fetches: + fetch: + - gnumake + toolchain: + - linux64-clang-toolchain + - vs-toolchain + +nsis: + description: "NSIS for Linux and Windows" + attributes: + local-toolchain: true + treeherder: + symbol: TL(nsis) + run: + script: build-nsis.sh + toolchain-artifact: public/build/nsis.tar.zst + fetches: + fetch: + - nsis-3.07 + - nsis-3.07-win + toolchain: + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu + +win64-vs2019: + description: "VS 2019" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(msvc2019) + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + run: + script: get_vs.py + arguments: + - build/vs/vs2019.yaml + resources: + - build/vs/vs2019.yaml + toolchain-artifact: project/gecko/vs/vs.tar.zst + toolchain-alias: + - vs + - vs-toolchain + +win64-vs2022: + description: "VS 2022" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(msvc2022) + worker: + env: + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + run: + script: get_vs.py + arguments: + - build/vs/vs2022.yaml + resources: + - build/vs/vs2022.yaml + toolchain-artifact: project/gecko/vs/vs.tar.zst + +linux64-afl-instrumentation-2.5: + description: "AFL instrumentation toolchain build" + treeherder: + symbol: TL(afl) + worker: + max-run-time: 3600 + run: + script: build-afl.sh + resources: + - taskcluster/scripts/misc/afl-nyx.patch + toolchain-artifact: public/build/afl-instrumentation.tar.zst + toolchain-alias: linux64-afl-instrumentation + fetches: + fetch: + - afl-2.5 + toolchain: + - linux64-clang + - linux64-toolchain-sysroot diff --git a/taskcluster/ci/toolchain/nasm.yml b/taskcluster/ci/toolchain/nasm.yml new file mode 100644 index 0000000000..866aa5b0f6 --- /dev/null +++ b/taskcluster/ci/toolchain/nasm.yml @@ -0,0 +1,87 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + toolchain-artifact: public/build/nasm.tar.zst + +win64-nasm: + description: "nasm win64 build" + attributes: + local-toolchain: true + treeherder: + symbol: TW64(nasm) + run: + script: build-nasm.sh + arguments: ['win64'] + fetches: + fetch: + - nasm-2.15.05 + toolchain: + - linux64-clang-mingw-x64 + +macosx64-nasm: + description: "nasm macosx64 build" + attributes: + local-toolchain: true + treeherder: + symbol: TM(nasm) + run: + script: build-nasm.sh + arguments: ['macosx64'] + fetches: + fetch: + - nasm-2.15.05 + toolchain: + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-nasm: + description: "nasm macosx64 build" + attributes: + local-toolchain: true + treeherder: + symbol: TM(nasm-aarch64) + run: + script: build-nasm.sh + arguments: ['macosx64-aarch64'] + fetches: + fetch: + - nasm-2.14.02 + toolchain: + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +linux64-nasm: + description: "nasm linux64 build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(nasm) + run: + script: build-nasm.sh + arguments: ['linux64'] + fetches: + fetch: + - nasm-2.15.05 + toolchain: + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu + +linux64-nasm-2.14.02: + description: "nasm linux64 minimum supported version build" + treeherder: + symbol: TL(nasm-2.14.02) + run: + script: build-nasm.sh + arguments: ['linux64'] + fetches: + fetch: + - nasm-2.14.02 + toolchain: + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu diff --git a/taskcluster/ci/toolchain/node.yml b/taskcluster/ci/toolchain/node.yml new file mode 100644 index 0000000000..bd66a54e9e --- /dev/null +++ b/taskcluster/ci/toolchain/node.yml @@ -0,0 +1,92 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "Node repack toolchain build" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: repack-node.sh + toolchain-artifact: public/build/node.tar.zst + +linux64-node-12: + treeherder: + symbol: TL(node-12) + fetches: + fetch: + - nodejs-12-linux64 + +linux64-node-16: + treeherder: + symbol: TL(node-16) + run: + toolchain-alias: + - linux64-node + fetches: + fetch: + - nodejs-16-linux64 + +macosx64-node-12: + treeherder: + symbol: TM(node-12) + fetches: + fetch: + - nodejs-12-macosx64 + +macosx64-node-16: + treeherder: + symbol: TM(node-16) + run: + toolchain-alias: + - macosx64-node + fetches: + fetch: + - nodejs-16-macosx64 + +macosx64-aarch64-node-16: + treeherder: + symbol: TM(node-16-arm64) + run: + toolchain-alias: + - macosx64-aarch64-node + fetches: + fetch: + - nodejs-16-macosx64-arm64 + +win64-node-12: + treeherder: + symbol: TW64(node-12) + fetches: + fetch: + - nodejs-12-win64 + +win64-node-16: + treeherder: + symbol: TW64(node-16) + run: + toolchain-alias: + - win64-node + fetches: + fetch: + - nodejs-16-win64 + +win32-node-12: + treeherder: + symbol: TW32(node-12) + fetches: + fetch: + - nodejs-12-win32 + +win32-node-16: + treeherder: + symbol: TW32(node-16) + run: + toolchain-alias: + - win32-node + fetches: + fetch: + - nodejs-16-win32 diff --git a/taskcluster/ci/toolchain/pkgconf.yml b/taskcluster/ci/toolchain/pkgconf.yml new file mode 100644 index 0000000000..c97ead7acc --- /dev/null +++ b/taskcluster/ci/toolchain/pkgconf.yml @@ -0,0 +1,56 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + attributes: + local-toolchain: true + description: "pkgconf toolchain build" + worker: + max-run-time: 1800 + worker-type: b-linux-gcp + run: + script: build-pkgconf.sh + toolchain-artifact: public/build/pkgconf.tar.zst + fetches: + fetch: + - pkgconf + +linux64-pkgconf: + treeherder: + symbol: TL(pkgconf) + run: + arguments: ['x86_64-unknown-linux-gnu'] + fetches: + toolchain: + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-pkgconf: + treeherder: + symbol: TM(pkgconf) + run: + arguments: ['x86_64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-pkgconf: + treeherder: + symbol: TM(pkgconf-arm64) + run: + arguments: ['aarch64-apple-darwin'] + fetches: + toolchain: + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win64-pkgconf: + treeherder: + symbol: TW64(pkgconf) + run: + arguments: ['x86_64-pc-windows-gnu'] + fetches: + toolchain: + - linux64-clang-mingw-x64 diff --git a/taskcluster/ci/toolchain/python.yml b/taskcluster/ci/toolchain/python.yml new file mode 100644 index 0000000000..57a332b379 --- /dev/null +++ b/taskcluster/ci/toolchain/python.yml @@ -0,0 +1,66 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "python repack" + attributes: + local-toolchain: true + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + run: + script: build-cpython.sh + +linux64-python-3.7: + treeherder: + symbol: TL(python3.7) + run: + toolchain-artifact: public/build/python.tar.zst + fetches: + fetch: + - cpython-3.7.15 + toolchain: + - linux64-clang-toolchain + - linux64-x64-compiler-rt-16 + +linux64-python-3.8: + treeherder: + symbol: TL(python) + run: + toolchain-alias: linux64-python + toolchain-artifact: public/build/python.tar.zst + fetches: + fetch: + - cpython-3.8.10 + toolchain: + - linux64-clang-toolchain + - linux64-x64-compiler-rt-16 + +win64-python-3.8: + description: "cpython 3.8.10" + treeherder: + symbol: TW64(python) + run: + script: pack-cpython.sh + toolchain-alias: win64-python + toolchain-artifact: public/build/python.tar.zst + fetches: + toolchain: + - linux64-wine + fetch: + - cpython-3.8.10.exe + +macosx64-python-3.8: + treeherder: + symbol: TM(python) + worker-type: b-osx-1015 + run: + toolchain-alias: macosx64-python + toolchain-artifact: public/build/python.tar.zst + fetches: + fetch: + - cpython-3.8.10 + toolchain: + - macosx64-clang-toolchain + - macosx64-sdk-toolchain diff --git a/taskcluster/ci/toolchain/resourcemonitor.yml b/taskcluster/ci/toolchain/resourcemonitor.yml new file mode 100644 index 0000000000..f4ef9a41c4 --- /dev/null +++ b/taskcluster/ci/toolchain/resourcemonitor.yml @@ -0,0 +1,44 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + fetches: + fetch: + - go-1.14.4 + - resource-monitor + run: + script: build-resourcemonitor.sh + sparse-profile: null + toolchain-artifact: public/build/resource-monitor.tar.zst + +linux64-resource-monitor: + description: "linux64 resourcemonitor toolchain build" + treeherder: + symbol: TL(rs-monitor) + run: + arguments: ['linux64'] + +macosx64-resource-monitor: + description: "macos64 resourcemonitor toolchain build" + treeherder: + symbol: TM(rs-monitor) + run: + arguments: ['macos64'] + +windows32-resource-monitor: + description: "windows32 resourcemonitor toolchain build" + treeherder: + symbol: TW32(rs-monitor) + run: + arguments: ['windows32'] + +windows64-resource-monitor: + description: "windows64 resourcemonitor toolchain build" + treeherder: + symbol: TW64(rs-monitor) + run: + arguments: ['windows64'] diff --git a/taskcluster/ci/toolchain/rust-size.yml b/taskcluster/ci/toolchain/rust-size.yml new file mode 100644 index 0000000000..09963589a6 --- /dev/null +++ b/taskcluster/ci/toolchain/rust-size.yml @@ -0,0 +1,38 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "rust-size toolchain build" + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + script: build-rust-based-toolchain.sh + fetches: + fetch: + - rust-size + +linux64-rust-size: + treeherder: + symbol: TL(rust-size) + run: + arguments: ['x86_64-unknown-linux-gnu'] + toolchain-artifact: public/build/rust-size.tar.zst + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-toolchain + - sysroot-x86_64-linux-gnu + +win64-rust-size: + treeherder: + symbol: TW64(rust-size) + run: + arguments: ['x86_64-pc-windows-msvc'] + toolchain-artifact: public/build/rust-size.tar.zst + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/rust.yml b/taskcluster/ci/toolchain/rust.yml new file mode 100644 index 0000000000..0cb72a9cc7 --- /dev/null +++ b/taskcluster/ci/toolchain/rust.yml @@ -0,0 +1,253 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "rust repack" + worker-type: b-linux-gcp + worker: + max-run-time: 7200 + run: + script: repack_rust.py + toolchain-artifact: public/build/rustc.tar.zst + +linux64-rust-1.65: + treeherder: + symbol: TL(rust-1.65) + run: + arguments: [ + '--channel', '1.65.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'wasm32-wasi', + ] + toolchain-alias: + - linux64-rust-toolchain + +linux64-rust-1.66: + treeherder: + symbol: TL(rust-1.66) + run: + arguments: [ + '--channel', '1.66.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'wasm32-wasi', + ] + toolchain-alias: + - linux64-rust-base + +linux64-rust-1.69: + treeherder: + symbol: TL(rust) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'aarch64-unknown-linux-gnu', + '--target', 'wasm32-wasi', + ] + toolchain-alias: linux64-rust + +# A patched rust toolchain that allows us to use sanitizers in our vendored +# build environment. See the rust fetch's comments for more details. +linux64-rust-dev: + description: "build rust from source" + worker-type: b-linux-large-gcp + treeherder: + symbol: TL(rust-dev) + worker: + env: + # Work around https://github.com/rust-lang/rust/issues/105967 + RUSTFLAGS_BOOTSTRAP: '-Clink-arg=-Wl,--undefined-version' + RUSTFLAGS_NOT_BOOTSTRAP: '-Clink-arg=-Wl,--undefined-version' + run: + arguments: [ + '--patch', 'rust-vendor-std.patch', + '--patch', 'src/tools/cargo:cargo-vendor-std.patch', + '--channel', 'dev', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + ] + fetches: + fetch: + - rust-1.69.0 + toolchain: + - linux64-clang-toolchain + +linux64-rust-cross-1.69: + description: "rust repack with macos and windows cross support" + treeherder: + symbol: TL(rust-cross) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'x86_64-apple-darwin', + '--target', 'aarch64-apple-darwin', + '--target', 'x86_64-pc-windows-msvc', + '--target', 'i686-pc-windows-msvc', + '--target', 'aarch64-pc-windows-msvc', + '--target', 'armv7-linux-androideabi', + '--target', 'thumbv7neon-linux-androideabi', + '--target', 'aarch64-linux-android', + '--target', 'i686-linux-android', + '--target', 'x86_64-linux-android', + ] + toolchain-alias: linux64-rust-cross + +linux64-rust-cross-beta: + description: "rust beta repack with macos and windows cross support" + treeherder: + symbol: TL(rust-cross-beta) + run: + arguments: [ + '--channel', 'beta-2022-12-14', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'x86_64-apple-darwin', + '--target', 'aarch64-apple-darwin', + '--target', 'x86_64-pc-windows-msvc', + '--target', 'i686-pc-windows-msvc', + '--target', 'aarch64-pc-windows-msvc', + '--target', 'armv7-linux-androideabi', + '--target', 'thumbv7neon-linux-androideabi', + '--target', 'aarch64-linux-android', + '--target', 'i686-linux-android', + '--target', 'x86_64-linux-android', + ] + +linux64-rust-static-1.69: + description: "rust repack with static linking support" + treeherder: + symbol: TL(rust-static) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'aarch64-unknown-linux-musl', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-musl', + '--target', 'i686-unknown-linux-gnu', + '--target', 'i686-unknown-linux-musl', + ] + toolchain-alias: linux64-rust-static + +linux64-rust-macos-1.65: + description: "rust repack with macos-cross support" + treeherder: + symbol: TL(rust-macos-1.65) + run: + arguments: [ + '--channel', '1.65.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-apple-darwin', + '--target', 'aarch64-apple-darwin', + ] + toolchain-alias: linux64-rust-macos-toolchain + +linux64-rust-macos-1.69: + description: "rust repack with macos-cross support" + treeherder: + symbol: TL(rust-macos) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-apple-darwin', + '--target', 'aarch64-apple-darwin', + ] + toolchain-alias: linux64-rust-macos + +linux64-rust-android-1.69: + description: "rust repack with android-cross support" + treeherder: + symbol: TL(rust-android) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'armv7-linux-androideabi', + '--target', 'thumbv7neon-linux-androideabi', + '--target', 'aarch64-linux-android', + '--target', 'i686-linux-android', + '--target', 'x86_64-linux-android', + ] + toolchain-alias: linux64-rust-android + +linux64-rust-windows-1.65: + description: "rust repack with windows-cross support" + treeherder: + symbol: TL(rust-win-1.65) + run: + arguments: [ + '--channel', '1.65.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-pc-windows-msvc', + '--target', 'i686-pc-windows-msvc', + ] + toolchain-alias: linux64-rust-windows-toolchain + +linux64-rust-windows-1.69: + description: "rust repack with windows-cross support" + treeherder: + symbol: TL(rust-win) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-unknown-linux-gnu', + '--target', 'x86_64-pc-windows-msvc', + '--target', 'i686-pc-windows-msvc', + '--target', 'aarch64-pc-windows-msvc', + ] + toolchain-alias: linux64-rust-windows + +win64-rust-1.69: + treeherder: + symbol: TW64(rust) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-pc-windows-msvc', + '--target', 'x86_64-pc-windows-msvc', + '--target', 'i686-pc-windows-msvc', + '--target', 'aarch64-pc-windows-msvc', + ] + toolchain-alias: win64-rust + +macosx64-rust-1.69: + treeherder: + symbol: TM(rust) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-apple-darwin', + '--target', 'x86_64-apple-darwin', + ] + toolchain-alias: macosx64-rust + +mingw32-rust-1.69: + treeherder: + symbol: TMW(rust) + run: + arguments: [ + '--channel', '1.69.0', + '--host', 'x86_64-unknown-linux-gnu', + '--target', 'i686-unknown-linux-gnu', + '--target', 'i686-pc-windows-gnu', + '--target', 'x86_64-pc-windows-gnu', + '--target', 'x86_64-unknown-linux-gnu', + ] + toolchain-alias: mingw32-rust diff --git a/taskcluster/ci/toolchain/sccache.yml b/taskcluster/ci/toolchain/sccache.yml new file mode 100644 index 0000000000..6fa9ab46a5 --- /dev/null +++ b/taskcluster/ci/toolchain/sccache.yml @@ -0,0 +1,88 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + description: "sccache toolchain build" + attributes: + local-toolchain: true + treeherder: + symbol: TL(sccache) + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + using: toolchain-script + script: build-rust-based-toolchain.sh + toolchain-artifact: public/build/sccache.tar.zst + fetches: + fetch: + - sccache + +linux64-sccache: + treeherder: + symbol: TL(sccache) + run: + arguments: + - x86_64-unknown-linux-gnu + - s3 + - gcs + - azure + - dist-server + - openssl/vendored + - native-zlib + fetches: + toolchain: + - linux64-rust-toolchain + - linux64-clang-toolchain + - sysroot-x86_64-linux-gnu + +macosx64-sccache: + treeherder: + symbol: TM(sccache) + run: + arguments: + - x86_64-apple-darwin + - all + - native-zlib + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +macosx64-aarch64-sccache: + treeherder: + symbol: TM(sccache-aarch64) + worker: + max-run-time: 1800 + run: + arguments: + - aarch64-apple-darwin + - all + - native-zlib + fetches: + toolchain: + - linux64-rust-macos-toolchain + - linux64-clang-toolchain + - macosx64-sdk-toolchain + +win64-sccache: + treeherder: + symbol: TW64(sccache) + worker: + env: + # Blake3 assembly can't be cross-compiled. The intrinsics version should be good enough. + CARGO_FEATURE_PREFER_INTRINSICS: '1' + run: + arguments: + - x86_64-pc-windows-msvc + - dist-client + - s3 + - gcs + - native-zlib + fetches: + toolchain: + - linux64-clang-toolchain + - linux64-rust-windows-toolchain + - vs-toolchain diff --git a/taskcluster/ci/toolchain/sysroot.yml b/taskcluster/ci/toolchain/sysroot.yml new file mode 100644 index 0000000000..4a5096285a --- /dev/null +++ b/taskcluster/ci/toolchain/sysroot.yml @@ -0,0 +1,160 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +job-defaults: + worker-type: b-linux-gcp + worker: + max-run-time: 1800 + run: + using: toolchain-script + script: build-sysroot.sh + toolchain-artifact: public/build/sysroot.tar.zst + +sysroot-i686-linux-gnu: + description: "Sysroot for linux32 builds" + attributes: + local-toolchain: true + worker: + env: + PACKAGES_TASKS: {task-reference: ''} + treeherder: + symbol: TL(sysroot32) + dependencies: + gcc-8: packages-deb8-32-gcc-8 + run: + toolchain-artifact: public/build/sysroot-i686-linux-gnu.tar.zst + arguments: + - i386 + +sysroot-x86_64-linux-gnu: + description: "Sysroot for linux64 builds" + attributes: + local-toolchain: true + worker: + env: + PACKAGES_TASKS: {task-reference: ''} + treeherder: + symbol: TL(sysroot64) + dependencies: + gcc-8: packages-deb8-gcc-8 + run: + toolchain-artifact: public/build/sysroot-x86_64-linux-gnu.tar.zst + arguments: + - amd64 + +sysroot-x86_64-linux-gnu-x11: + description: "Sysroot for linux64 builds (X11-only)" + attributes: + local-toolchain: true + worker: + env: + PACKAGES_TASKS: {task-reference: ' '} + treeherder: + symbol: TL(sysroot64-x11) + dependencies: + gcc-8: packages-deb8-gcc-8 + gtk3: packages-deb8-gtk3 + run: + toolchain-artifact: public/build/sysroot-x86_64-linux-gnu.tar.zst + arguments: + - amd64 + +sysroot-wasm32-wasi-clang-16: + description: "Sysroot for wasi" + attributes: + local-toolchain: true + treeherder: + symbol: TL(sysroot-wasi-16) + run: + script: build-sysroot-wasi.sh + toolchain-alias: + by-project: + toolchains: null + default: sysroot-wasm32-wasi + toolchain-artifact: public/build/sysroot-wasm32-wasi.tar.zst + fetches: + fetch: + - clang-16 + - wasi-sdk + toolchain: + - linux64-clang-16-stage1 + - wasm32-wasi-compiler-rt-16 + +sysroot-wasm32-wasi-clang-trunk: + description: "Sysroot for wasi" + attributes: + cached_task: false + treeherder: + symbol: TL(sysroot-wasi-trunk) + run: + script: build-sysroot-wasi.sh + toolchain-alias: + by-project: + toolchains: sysroot-wasm32-wasi + default: null + toolchain-artifact: public/build/sysroot-wasm32-wasi.tar.zst + fetches: + fetch: + - clang-trunk + - wasi-sdk + toolchain: + - linux64-clang-trunk-stage1 + - wasm32-wasi-compiler-rt-trunk + +sysroot-aarch64-linux-gnu: + description: "Sysroot for linux64 aarch64 builds" + attributes: + local-toolchain: true + treeherder: + symbol: TL(sysroot-aarch64) + run: + toolchain-artifact: public/build/sysroot-aarch64-linux-gnu.tar.zst + arguments: + - arm64 + +linux32-toolchain-sysroot: + description: "Sysroot for linux32 toolchain builds" + worker: + env: + PACKAGES_TASKS: {task-reference: ''} + treeherder: + symbol: TL(sysroot32-toolchain) + dependencies: + gcc-8: packages-deb8-32-gcc-8 + run: + arguments: + - i386 + # For clang + - binutils-dev + - libxml2-dev + # For minidump-stackwalk + - libcurl4-openssl-dev + - libssl-dev + - libbz2-dev + # For msix-package + - libicu-dev + +linux64-toolchain-sysroot: + description: "Sysroot for linux64 toolchain builds" + worker: + env: + PACKAGES_TASKS: {task-reference: ''} + treeherder: + symbol: TL(sysroot64-toolchain) + dependencies: + gcc-8: packages-deb8-gcc-8 + run: + arguments: + - amd64 + # For clang + - binutils-dev + - gcc-multilib + - lib32stdc++-8-dev + - libxml2-dev + # For minidump-stackwalk + - libcurl4-openssl-dev + - libssl-dev + - libbz2-dev + # For msix-package + - libicu-dev diff --git a/taskcluster/ci/updatebot/kind.yml b/taskcluster/ci/updatebot/kind.yml new file mode 100644 index 0000000000..1cbdbaaa77 --- /dev/null +++ b/taskcluster/ci/updatebot/kind.yml @@ -0,0 +1,92 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - fetch + - toolchain + +transforms: + - gecko_taskgraph.transforms.release_notifications:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +jobs: + cron: + description: Cron Job for Updatebot + run-on-projects: [] + treeherder: + kind: other + platform: updatebot/all + symbol: cron + tier: 1 + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: updatebot} + max-run-time: 3600 + taskcluster-proxy: true + scopes: + - secrets:get:project/updatebot/{level}/try-sshkey + - secrets:get:project/updatebot/{level}/phabricator-token + - secrets:get:project/updatebot/{level}/bugzilla-api-key + - secrets:get:project/updatebot/{level}/database-password + - secrets:get:project/updatebot/{level}/sentry-url + - secrets:get:project/updatebot/{level}/sql-proxy-config + - hooks:trigger-hook:project-gecko/in-tree-action-1-generic/* + run: + using: run-task + command: /builds/worker/run.py /builds/worker/checkouts/gecko /builds/worker/updatebot + notifications: + subject: 'updatebot cron failed' + message: 'updatebot cron failed' + status-types: + - on-failed + - on-exception + emails: ["tom@mozilla.com", "jewilde@mozilla.com"] + fetches: + toolchain: + - linux64-rust + - linux64-cargo-vet + + cron-win: + description: Cron Job for Updatebot (Windows) + run-on-projects: [] + treeherder: + kind: other + platform: updatebot/all + symbol: w-cron + tier: 1 + worker-type: b-win2012 + worker: + max-run-time: 3600 + taskcluster-proxy: true + # begin _GENERATE_DEPOT_TOOLS_BINARIES_ + # artifacts: + # - type: directory + # name: public/depot_tools.zip + # path: build\src\obj-build\depot_tools + # end _GENERATE_DEPOT_TOOLS_BINARIES_ + env: + TOOLTOOL_MANIFEST: "taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest" + MSYSTEM: "MINGW64" + run: + using: run-task + cwd: '{checkout}' + command: ./taskcluster/docker/updatebot/windows-setup.sh + tooltool-downloads: internal + scopes: + - secrets:get:project/updatebot/{level}/try-sshkey + - secrets:get:project/updatebot/{level}/phabricator-token + - secrets:get:project/updatebot/{level}/bugzilla-api-key + - secrets:get:project/updatebot/{level}/database-password + - secrets:get:project/updatebot/{level}/sentry-url + - secrets:get:project/updatebot/{level}/sql-proxy-config + - hooks:trigger-hook:project-gecko/in-tree-action-1-generic/* + fetches: + fetch: + - cloud-sql-proxy-1.25.0 + - php-windows-7.4.24 + - arcanist + - depot_tools diff --git a/taskcluster/ci/updatebot/moz.build b/taskcluster/ci/updatebot/moz.build new file mode 100644 index 0000000000..315dc32600 --- /dev/null +++ b/taskcluster/ci/updatebot/moz.build @@ -0,0 +1,8 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +with Files("**"): + BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot") diff --git a/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest b/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest new file mode 100644 index 0000000000..f284d80914 --- /dev/null +++ b/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest @@ -0,0 +1,29 @@ +[ + { + "version": "vcruntime140.dll from Microsoft Visual C++ Redistributable for Visual Studio 2019 ver 14.29.30133.0", + "size": 97160, + "visibility": "internal", + "digest": "aa6afd6bea27f554e3646152d8c4f96f7bcaaa4933f8b7c04346e410f93f23cfa6d29362fd5d51ccbb8b6223e094cd89e351f072ad0517553703f5bf9de28778", + "algorithm": "sha512", + "filename": "vcruntime140.dll", + "unpack": false + }, + { + "version": "Visual Studio Community 2019, Windows SDK 10.0.19041.0, and a few system dlls Lobotmized for Angle Update", + "filename": "vs-sdk-and-windir-shim.zip", + "size": 463564917, + "algorithm": "sha512", + "digest": "20d93b0014ca44a666ca2b5cc570127f24378454889ff0a036df72213cd18140185d2c2e61df40bf1e4c0d9d2dc83a7796af9d2a13252de3c85faad068291945", + "visibility": "internal", + "unpack": true + }, + { + "version": "Windows binaries for depot_tools retrieved with depot_tools revision 7b3351443198f4e7d068999b169385b55a43679a on 2021-12-18", + "filename": "depot_tools-preloaded-binaries-7b3351443198f4e7d068999b169385b55a43679a-2021-12-18.zip", + "size": 315038144, + "algorithm": "sha512", + "digest": "250f3f3fcf631c53de1f505c53eb5ba782864fa92111eef0d710a1e7d0ad3da66db2fb8908d7c6d83e149674e976984d679f9a641eb9bea0b5c3d7b4f236920d", + "visibility": "internal", + "unpack": true + } +] diff --git a/taskcluster/ci/upload-generated-sources-dummy/kind.yml b/taskcluster/ci/upload-generated-sources-dummy/kind.yml new file mode 100644 index 0000000000..167d478f90 --- /dev/null +++ b/taskcluster/ci/upload-generated-sources-dummy/kind.yml @@ -0,0 +1,24 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.per_platform_dummy:transforms + - gecko_taskgraph.transforms.mac_dummy:transforms + - gecko_taskgraph.transforms.task:transforms + +only-for-build-platforms: + macosx64-shippable/opt + macosx64-devedition/opt + +kind-dependencies: + - build + - upload-generated-sources + +job-template: + description: Dummy task to pull in mac x64 and aarch64 upload-generated-symbols tasks + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/upload-generated-sources/kind.yml b/taskcluster/ci/upload-generated-sources/kind.yml new file mode 100644 index 0000000000..9188588c7a --- /dev/null +++ b/taskcluster/ci/upload-generated-sources/kind.yml @@ -0,0 +1,38 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.upload_generated_sources:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + +only-for-attributes: + - nightly + - shippable + - upload-generated-sources + +not-for-build-platforms: + - macosx64-shippable/opt + - macosx64-devedition/opt + +job-template: + description: Upload generated source files from build + worker-type: t-linux-xlarge + treeherder: + symbol: Ugs + kind: build + worker: + docker-image: {in-tree: "lint"} + max-run-time: 600 + run: + using: mach + mach: {artifact-reference: "python --virtualenv upload-generated-sources build/upload_generated_sources.py "} + sparse-profile: upload-generated-sources + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-generated-sources-upload diff --git a/taskcluster/ci/upload-symbols-dummy/kind.yml b/taskcluster/ci/upload-symbols-dummy/kind.yml new file mode 100644 index 0000000000..3fc3f7c0ad --- /dev/null +++ b/taskcluster/ci/upload-symbols-dummy/kind.yml @@ -0,0 +1,24 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.single_dep:loader + +transforms: + - gecko_taskgraph.transforms.per_platform_dummy:transforms + - gecko_taskgraph.transforms.mac_dummy:transforms + - gecko_taskgraph.transforms.task:transforms + +only-for-build-platforms: + macosx64-shippable/opt + macosx64-devedition/opt + +kind-dependencies: + - build + - upload-symbols + +job-template: + description: Dummy task to pull in mac x64 and aarch64 upload-symbols tasks + worker-type: succeed + worker: + implementation: succeed diff --git a/taskcluster/ci/upload-symbols/kind.yml b/taskcluster/ci/upload-symbols/kind.yml new file mode 100644 index 0000000000..2948dc0abd --- /dev/null +++ b/taskcluster/ci/upload-symbols/kind.yml @@ -0,0 +1,53 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.multi_dep:loader + +group-by: platform + +transforms: + - gecko_taskgraph.transforms.upload_symbols:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +kind-dependencies: + - build + - toolchain + +primary-dependency: build + +not-for-build-platforms: + # Address Sanitizer builds don't have symbols to upload. + - linux64-asan-reporter-shippable/opt + - win64-asan-reporter-shippable/opt + - linux-geckodriver/opt + - linux64-geckodriver/opt + - linux64-aarch64-geckodriver/opt + - macosx64-geckodriver/opt + - macosx64-aarch64-geckodriver/opt + - win32-geckodriver/opt + - win64-geckodriver/opt + - win64-aarch64-geckodriver/opt + +job-template: + description: Upload Symbols + worker-type: b-linux-gcp + use-system-python: false + worker: + docker-image: {in-tree: "debian11-base"} + max-run-time: 1800 + env: + # {level} gets replaced in the upload_symbols transform + SYMBOL_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-upload" + MAKECAB: /builds/worker/fetches/makecab/makecab + MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system + run: + using: mach + mach: {artifact-reference: "python toolkit/crashreporter/tools/upload_symbols.py "} + sparse-profile: upload-symbols + scopes: + - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-upload + fetches: + toolchain: + - linux64-makecab diff --git a/taskcluster/ci/valgrind/kind.yml b/taskcluster/ci/valgrind/kind.yml new file mode 100644 index 0000000000..754616e611 --- /dev/null +++ b/taskcluster/ci/valgrind/kind.yml @@ -0,0 +1,65 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.build_attrs:transforms + - gecko_taskgraph.transforms.build_lints:transforms + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + use-system-python: false + +jobs: + linux64-valgrind-qr/opt-swr: + description: "Linux64 Valgrind Opt WebRender" + index: + product: firefox + job-name: linux64-valgrind-qr/opt-swr + treeherder: + platform: linux64-qr/opt + symbol: V-swr + kind: build + tier: 1 + worker-type: t-linux-kvm + worker: + docker-image: {in-tree: valgrind-build} + max-run-time: 72000 + env: + NEED_XVFB: "true" + PERFHERDER_EXTRA_OPTIONS: valgrind + run: + using: mozharness + actions: [get-secrets, build, valgrind-test] + custom-build-variant-cfg: valgrind + config: + - builds/releng_base_firefox.py + - builds/releng_base_linux_64_builds.py + extra-config: + extra_prefs: [gfx.webrender.software=true] + script: "mozharness/scripts/fx_desktop_build.py" + secrets: true + tooltool-downloads: public + use-sccache: true + fetches: + toolchain: + - linux64-clang + - linux64-rust + - linux64-cbindgen + - linux64-dump_syms + - linux64-sccache + - linux64-nasm + - linux64-node + - linux64-pkgconf + - sysroot-x86_64-linux-gnu + - sysroot-wasm32-wasi + optimization: + skip-unless-expanded: null diff --git a/taskcluster/ci/webrender/kind.yml b/taskcluster/ci/webrender/kind.yml new file mode 100644 index 0000000000..7c783d2067 --- /dev/null +++ b/taskcluster/ci/webrender/kind.yml @@ -0,0 +1,605 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +loader: gecko_taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + - build + +transforms: + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +job-defaults: + attributes: + retrigger: true + run-on-projects: ['integration', 'release'] + treeherder: + tier: 1 + kind: other + worker: + max-run-time: 3600 + env: + RUST_BACKTRACE: 'full' + RUSTFLAGS: '--deny warnings' + run: + sparse-profile: webrender + +jobs: + lint-tidy: + description: Runs linting checks on WebRender code + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: webrender} + run: + using: run-task + cwd: '{checkout}/gfx/wr' + command: >- + servo-tidy + treeherder: + platform: linux64-qr/opt + symbol: WR(tidy) + when: + files-changed: + - 'gfx/wr/**' + + linux64-release: + description: Runs release-mode WebRender CI tests on a Linux worker + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: webrender} + fetches: + toolchain: + - linux64-rust + - wrench-deps + run: + using: run-task + command: >- + export PATH=$PATH:$MOZ_FETCHES_DIR/rustc/bin:${MOZ_FETCHES_DIR}/wrench-deps/meson && + cd $HOME/checkouts/gecko/gfx/wr && + mv $MOZ_FETCHES_DIR/wrench-deps/{vendor,.cargo} ./ && + CARGOFLAGS="--verbose --frozen" ci-scripts/linux-release-tests.sh + treeherder: + platform: linux64-qr/opt + symbol: WR(wrench) + kind: other + when: + files-changed: + - 'gfx/wr/**' + + linux64-debug: + description: Runs debug-mode WebRender CI tests on a Linux worker + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: webrender} + fetches: + toolchain: + - linux64-rust + - wrench-deps + run: + using: run-task + command: >- + export PATH=$PATH:$MOZ_FETCHES_DIR/rustc/bin:${MOZ_FETCHES_DIR}/wrench-deps/meson && + cd $HOME/checkouts/gecko/gfx/wr && + mv $MOZ_FETCHES_DIR/wrench-deps/{vendor,.cargo} ./ && + CARGOFLAGS="--verbose --frozen" ci-scripts/linux-debug-tests.sh + treeherder: + platform: linux64-qr/debug + symbol: WR(wrench) + kind: other + when: + files-changed: + - 'gfx/wr/**' + + wrench-macos-build: + description: Cross compilation of wrench for macOS on Linux + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: webrender} + chain-of-trust: true + artifacts: + - type: file + name: public/build/wrench-macos.tar.bz2 + path: /builds/worker/artifacts/wrench-macos.tar.bz2 + - type: file + name: public/build/wrench-macos-headless.tar.bz2 + path: /builds/worker/artifacts/wrench-macos-headless.tar.bz2 + dependencies: + macosx64-clang-14: toolchain-macosx64-clang-14-raw + fetches: + toolchain: + - linux64-rust-macos + - linux64-clang-14 + - macosx64-sdk + - wrench-deps + macosx64-clang-14: + - artifact: clang.tar.zst + dest: clang-mac + run: + using: run-task + command: '$HOME/checkouts/gecko/taskcluster/scripts/misc/wrench-macos-build.sh' + treeherder: + platform: osx-cross/opt + symbol: WR(B) + when: + files-changed: + - 'gfx/wr/**' + - 'taskcluster/scripts/misc/wr-macos-cross-build-setup.sh' + - 'taskcluster/scripts/misc/wrench-macos-build.sh' + + macos-release: + description: Runs release-mode WebRender CI tests on a macOS worker + worker-type: t-osx-1015-r8 + worker: + # repo cloning has highly variable run time + max-run-time: 7200 + env: + MOZ_FETCHES_DIR: 'checkouts/gecko/gfx/wr' + dependencies: + webrender-wrench-macos-build: webrender-wrench-macos-build + fetches: + webrender-wrench-macos-build: + - 'wrench-macos.tar.bz2' + - 'wrench-macos-headless.tar.bz2' + run: + using: run-task + cwd: '{checkout}/gfx/wr' + command: >- + export WRENCH_HEADLESS_TARGET=$PWD/wrench-macos-headless/ && + export WRENCH_BINARY=$PWD/wrench-macos/bin/wrench && + ci-scripts/macos-release-tests.sh + treeherder: + platform: macosx1015-64-qr/opt + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + + cargotest-macos-build: + description: Cross compilation of cargo tests for macOS on Linux + worker-type: b-linux-gcp + worker: + docker-image: {in-tree: webrender} + chain-of-trust: true + artifacts: + - type: file + name: public/build/cargo-test-binaries.tar.bz2 + path: /builds/worker/artifacts/cargo-test-binaries.tar.bz2 + fetches: + toolchain: + - linux64-rust-macos + - linux64-clang + - macosx64-sdk + - wrench-deps + run: + using: run-task + command: '$HOME/checkouts/gecko/taskcluster/scripts/misc/wr-cargotest-macos-build.sh' + treeherder: + platform: osx-cross/debug + symbol: WR(B) + when: + files-changed: + - 'gfx/wr/**' + - 'taskcluster/scripts/misc/wr-cargotest-macos-build.sh' + - 'taskcluster/scripts/misc/wr-macos-cross-build-setup.sh' + + macos-debug: + description: Runs debug-mode WebRender CI tests on a macOS worker + worker-type: t-osx-1015-r8 + worker: + max-run-time: 3600 + env: + MOZ_FETCHES_DIR: 'checkouts/gecko/gfx/wr' + dependencies: + webrender-cargotest-macos-build: webrender-cargotest-macos-build + fetches: + webrender-cargotest-macos-build: + - 'cargo-test-binaries.tar.bz2' + run: + using: run-task + cwd: '{checkout}/gfx/wr' + command: >- + mv cargo-test-binaries target && + cd target && + for i in debug/deps/*; do $i; done + treeherder: + platform: macosx1015-64-qr/debug + symbol: WR(cargotest) + when: + files-changed: + - 'gfx/wr/**' + + windows: + description: Runs WebRender CI tests on a Windows worker + worker-type: win11-64-2009-source + worker: + max-run-time: 5400 + env: + NODE_OPTIONS: '--max_old_space_size=4096' + fetches: + toolchain: + - win64-rust + - vs + - wrench-deps + run: + using: run-task + use-caches: false + command: '$GECKO_PATH/taskcluster/scripts/misc/wrench-windows-tests.sh' + treeherder: + platform: windows11-64-2009-qr/release + symbol: WR(wrench) + when: + files-changed: + - 'build/win64/mozconfig.vs2019' + - 'gfx/wr/**' + - 'taskcluster/scripts/misc/wrench-windows-tests.sh' + + wrench-android-debug: + description: Debug build of wrench for Android + attributes: + build_platform: android + worker-type: b-linux-gcp + worker: + max-run-time: 5400 + docker-image: {in-tree: webrender} + artifacts: + - type: file + name: public/build/wrench-debug.apk + path: /builds/worker/checkouts/gecko/gfx/wr/target/debug/apk/wrench.apk + - type: file + name: public/build/reftests.tar.gz + path: /builds/worker/checkouts/gecko/gfx/wr/wrench/reftests.tar.gz + - type: file + name: public/build/mozdevice.tar.gz + path: /builds/worker/checkouts/gecko/testing/mozbase/mozdevice.tar.gz + run: + using: run-task + cwd: '{checkout}/gfx/wr/wrench' + command: >- + $GECKO_PATH/taskcluster/scripts/misc/wrench-android-build.sh debug && + tar czf reftests.tar.gz reftests/ && + cd $GECKO_PATH/testing/mozbase && + tar czf mozdevice.tar.gz mozdevice/ + fetches: + toolchain: + - android-gradle-dependencies + - android-ndk-linux + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-jdk + - linux64-rust-android + - wrench-deps + treeherder: + platform: android-em-7-0-x86/debug + symbol: WR(B) + when: + files-changed: + - 'build.gradle' + - 'gfx/wr/**' + - 'taskcluster/scripts/misc/wrench-android-build.sh' + + wrench-android-release: + description: Release build of wrench for Android + attributes: + build_platform: android + worker-type: b-linux-gcp + worker: + max-run-time: 5400 + docker-image: {in-tree: webrender} + artifacts: + - type: file + name: public/build/wrench-release.apk + path: /builds/worker/checkouts/gecko/gfx/wr/target/release/apk/wrench.apk + - type: file + name: public/build/reftests.tar.gz + path: /builds/worker/checkouts/gecko/gfx/wr/wrench/reftests.tar.gz + - type: file + name: public/build/mozdevice.tar.gz + path: /builds/worker/checkouts/gecko/testing/mozbase/mozdevice.tar.gz + run: + using: run-task + cwd: '{checkout}/gfx/wr/wrench' + command: >- + $GECKO_PATH/taskcluster/scripts/misc/wrench-android-build.sh release && + tar czf reftests.tar.gz reftests/ && + cd $GECKO_PATH/testing/mozbase && + tar czf mozdevice.tar.gz mozdevice/ + fetches: + toolchain: + - android-gradle-dependencies + - android-ndk-linux + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-jdk + - linux64-rust-android + - wrench-deps + treeherder: + platform: android-em-7-0-x86/opt + symbol: WR(B) + when: + files-changed: + - 'build.gradle' + - 'gfx/wr/**' + - 'taskcluster/scripts/misc/wrench-android-build.sh' + + android-emulator-debug: + description: Run debug wrench reftests on Android emulator + attributes: + build_platform: android + worker-type: t-linux-kvm # privileged:true doesn't work on b-linux + worker: + max-run-time: 5400 + docker-image: {in-tree: ubuntu1804-test} + privileged: true # for access to /dev/kvm for hw accel in the emulator + artifacts: + - type: directory + name: public/build/logs + path: /builds/worker/workspace/build/logs + env: + # need hard-coded URLs until bug 1551875 is fixed + TASKCLUSTER_ROOT_URL: 'https://taskcluster.net' + TASKCLUSTER_PROXY_URL: 'http://taskcluster' + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + NEED_WINDOW_MANAGER: 'true' + dependencies: + webrender-wrench-android-debug: webrender-wrench-android-debug + fetches: + webrender-wrench-android-debug: + - 'wrench-debug.apk' + toolchain: + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-jdk + run: + using: run-task + tooltool-downloads: internal + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk && + export WRENCH_REFTESTS=$GECKO_PATH/gfx/wr/wrench/reftests && + export MOZHARNESS_PATH=$GECKO_PATH/testing/mozharness && + $GECKO_PATH/taskcluster/scripts/tester/test-linux.sh + treeherder: + platform: android-em-7-0-x86/debug + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + + android-emulator-release: + description: Run release wrench reftests on Android emulator + attributes: + build_platform: android + worker-type: t-linux-kvm # privileged:true doesn't work on b-linux + worker: + max-run-time: 5400 + docker-image: {in-tree: ubuntu1804-test} + privileged: true # for access to /dev/kvm for hw accel in the emulator + artifacts: + - type: directory + name: public/build/logs + path: /builds/worker/workspace/build/logs + env: + # need hard-coded URLs until bug 1551875 is fixed + TASKCLUSTER_ROOT_URL: 'https://taskcluster.net' + TASKCLUSTER_PROXY_URL: 'http://taskcluster' + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + NEED_WINDOW_MANAGER: 'true' + dependencies: + webrender-wrench-android-release: webrender-wrench-android-release + fetches: + webrender-wrench-android-release: + - 'wrench-release.apk' + toolchain: + - android-sdk-linux + - android-system-image-x86_64-linux + - android-avd-x86_64-linux + - linux64-jdk + run: + using: run-task + tooltool-downloads: internal + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk && + export WRENCH_REFTESTS=$GECKO_PATH/gfx/wr/wrench/reftests && + export MOZHARNESS_PATH=$GECKO_PATH/testing/mozharness && + $GECKO_PATH/taskcluster/scripts/tester/test-linux.sh + treeherder: + platform: android-em-7-0-x86/opt + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + + android-hw-p5-debug: + description: Run debug wrench reftests on Android Pixel5 + attributes: + build_platform: android + worker-type: t-bitbar-gw-unit-p5 + worker: + max-run-time: 5400 + artifacts: + - type: directory + name: public/build/logs + path: build/logs + env: + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + MOZ_FETCHES_DIR: fetches + dependencies: + webrender-wrench-android-debug: webrender-wrench-android-debug + android-build: build-android-arm/debug + fetches: + webrender-wrench-android-debug: + - 'wrench-debug.apk' + - 'reftests.tar.gz' + - 'mozdevice.tar.gz' + android-build: + - artifact: 'mozharness.zip' + dest: 'mozharness' + run: + using: run-task + checkout: false + run-as-root: true + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk && + export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests && + export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness && + export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH && + python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG} + treeherder: + platform: android-hw-p5-13-0-arm7/debug + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + - 'testing/mozbase/mozdevice/**' + + android-hw-p5-opt: + description: Run opt wrench reftests on Android Pixel5 + attributes: + build_platform: android + worker-type: t-bitbar-gw-unit-p5 + worker: + max-run-time: 5400 + artifacts: + - type: directory + name: public/build/logs + path: build/logs + env: + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + MOZ_FETCHES_DIR: fetches + dependencies: + webrender-wrench-android-release: webrender-wrench-android-release + android-build: build-android-arm/opt + fetches: + webrender-wrench-android-release: + - 'wrench-release.apk' + - 'reftests.tar.gz' + - 'mozdevice.tar.gz' + android-build: + - artifact: 'mozharness.zip' + dest: 'mozharness' + run: + using: run-task + checkout: false + run-as-root: true + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk && + export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests && + export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness && + export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH && + python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG} + treeherder: + platform: android-hw-p5-13-0-arm7/opt + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + - 'testing/mozbase/mozdevice/**' + + android-hw-a51-debug: + description: Run debug wrench reftests on Android Samsung Galaxy A51 + attributes: + build_platform: android + worker-type: t-bitbar-gw-perf-a51 + worker: + max-run-time: 5400 + artifacts: + - type: directory + name: public/build/logs + path: build/logs + env: + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + MOZ_FETCHES_DIR: fetches + dependencies: + webrender-wrench-android-debug: webrender-wrench-android-debug + android-build: build-android-arm/debug + fetches: + webrender-wrench-android-debug: + - 'wrench-debug.apk' + - 'reftests.tar.gz' + - 'mozdevice.tar.gz' + android-build: + - artifact: 'mozharness.zip' + dest: 'mozharness' + run: + using: run-task + checkout: false + run-as-root: true + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk && + export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests && + export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness && + export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH && + python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG} + treeherder: + platform: android-hw-a51-11-0-arm7/debug + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + - 'testing/mozbase/mozdevice/**' + + android-hw-a51-opt: + description: Run opt wrench reftests on Android Samsung Galaxy A51 + attributes: + build_platform: android + worker-type: t-bitbar-gw-perf-a51 + worker: + max-run-time: 5400 + artifacts: + - type: directory + name: public/build/logs + path: build/logs + env: + MOZHARNESS_SCRIPT: android_wrench.py + MOZHARNESS_CONFIG: android/wrench.py + MOZ_FETCHES_DIR: fetches + dependencies: + webrender-wrench-android-release: webrender-wrench-android-release + android-build: build-android-arm/opt + fetches: + webrender-wrench-android-release: + - 'wrench-release.apk' + - 'reftests.tar.gz' + - 'mozdevice.tar.gz' + android-build: + - artifact: 'mozharness.zip' + dest: 'mozharness' + run: + using: run-task + checkout: false + run-as-root: true + command: >- + export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk && + export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests && + export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness && + export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH && + python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG} + treeherder: + platform: android-hw-a51-11-0-arm7/opt + symbol: WR(wrench) + when: + files-changed: + - 'gfx/wr/**' + - 'testing/mozharness/scripts/android_*.py' + - 'testing/mozharness/configs/android/*.py' + - 'testing/mozbase/mozdevice/**' diff --git a/taskcluster/docker/REGISTRY b/taskcluster/docker/REGISTRY new file mode 100644 index 0000000000..cb1e1bb482 --- /dev/null +++ b/taskcluster/docker/REGISTRY @@ -0,0 +1 @@ +taskcluster diff --git a/taskcluster/docker/android-build/Dockerfile b/taskcluster/docker/android-build/Dockerfile new file mode 100644 index 0000000000..22eb3c51c8 --- /dev/null +++ b/taskcluster/docker/android-build/Dockerfile @@ -0,0 +1,45 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Nick Alexander + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +# rsync is required for l10n single locale repacks. less, screen, and +# vim, help debugging interactive tasks in Task Cluster. +# git and openssh-client are used to upload GeckoView javadoc to Github. +RUN apt-get update && \ + apt-get install \ + autoconf2.13 \ + build-essential \ + base-files \ + ccache \ + cmake \ + curl \ + file \ + gnupg \ + jq \ + less \ + openssh-client \ + procps \ + python3-dev \ + rsync \ + screen \ + sudo \ + tar \ + unzip \ + uuid \ + valgrind \ + vim \ + x11-utils \ + xvfb \ + wget \ + zip \ + zstd + +# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb. +# %include taskcluster/docker/recipes/xvfb.sh +COPY topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh + +# Back to the workdir, matching desktop-build. +WORKDIR /builds/worker diff --git a/taskcluster/docker/android-build/README.md b/taskcluster/docker/android-build/README.md new file mode 100644 index 0000000000..6096b08368 --- /dev/null +++ b/taskcluster/docker/android-build/README.md @@ -0,0 +1,2 @@ +This is a docker script for fetching Android Gradle dependenices for +use in Mozilla's build clusters. diff --git a/taskcluster/docker/android-build/VERSION b/taskcluster/docker/android-build/VERSION new file mode 100644 index 0000000000..4e379d2bfe --- /dev/null +++ b/taskcluster/docker/android-build/VERSION @@ -0,0 +1 @@ +0.0.2 diff --git a/taskcluster/docker/condprof/Dockerfile b/taskcluster/docker/condprof/Dockerfile new file mode 100644 index 0000000000..76817e7927 --- /dev/null +++ b/taskcluster/docker/condprof/Dockerfile @@ -0,0 +1,15 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Gregory Mierzwinski + +VOLUME /builds/worker/.cache +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/tooltool-cache +VOLUME /builds/worker/workspace + +RUN apt-get -y update && \ + apt-get install -y python3.7 \ + python3.7-venv \ + python3.7-dev + +CMD ["/bin/bash", "--login"] + diff --git a/taskcluster/docker/custom-car-linux/Dockerfile b/taskcluster/docker/custom-car-linux/Dockerfile new file mode 100644 index 0000000000..17f24b9042 --- /dev/null +++ b/taskcluster/docker/custom-car-linux/Dockerfile @@ -0,0 +1,24 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER kshampur + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +RUN apt-get update && \ + apt-get install \ + bzip2 \ + curl \ + libbz2-dev \ + libglib2.0-dev \ + libtinfo5 \ + pkg-config \ + tar \ + unzip \ + wget \ + zip \ + lsb-release \ + gperf \ + procps diff --git a/taskcluster/docker/custom-v8/Dockerfile b/taskcluster/docker/custom-v8/Dockerfile new file mode 100644 index 0000000000..810c2eb090 --- /dev/null +++ b/taskcluster/docker/custom-v8/Dockerfile @@ -0,0 +1,22 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Joel Maher + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +RUN apt-get update && \ + apt-get install \ + bzip2 \ + curl \ + libbz2-dev \ + libglib2.0-dev \ + libtinfo5 \ + pkg-config \ + tar \ + unzip \ + wget \ + zip \ + procps diff --git a/taskcluster/docker/debian-base/Dockerfile b/taskcluster/docker/debian-base/Dockerfile new file mode 100644 index 0000000000..ad48749a38 --- /dev/null +++ b/taskcluster/docker/debian-base/Dockerfile @@ -0,0 +1,66 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +### Add worker user and setup its workspace. +RUN mkdir /builds && \ + groupadd -g 1000 worker && \ + useradd -u 1000 -g 1000 -d /builds/worker -s /bin/bash -m worker && \ + mkdir -p /builds/worker/workspace && \ + chown -R worker:worker /builds + +# Declare default working folder +WORKDIR /builds/worker + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +# Set variable normally configured at login, by the shells parent process, these +# are taken from GNU su manual +ENV HOME=/builds/worker \ + SHELL=/bin/bash \ + USER=worker \ + LOGNAME=worker \ + HOSTNAME=taskcluster-worker + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \ + apt-get update && \ + apt-get dist-upgrade && \ + apt-get install \ + git \ + less \ + make \ + mercurial \ + patch \ + python3 \ + python3-distutils-extra \ + python3-minimal \ + python3-zstandard \ + python3-psutil \ + python3-venv \ + vim-tiny \ + xz-utils \ + zstd + +# %include testing/mozharness/external_tools/robustcheckout.py +COPY topsrcdir/testing/mozharness/external_tools/robustcheckout.py /usr/local/mercurial/robustcheckout.py + +# %include taskcluster/docker/recipes/hgrc +COPY topsrcdir/taskcluster/docker/recipes/hgrc /etc/mercurial/hgrc.d/mozilla.rc + +# Add pip configuration, among other things. +# %include taskcluster/docker/recipes/dot-config +COPY topsrcdir/taskcluster/docker/recipes/dot-config /builds/worker/.config + +# %include taskcluster/scripts/run-task +COPY topsrcdir/taskcluster/scripts/run-task /builds/worker/bin/run-task + +# %include taskcluster/scripts/misc/fetch-content +ADD topsrcdir/taskcluster/scripts/misc/fetch-content /builds/worker/bin/fetch-content + +RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* diff --git a/taskcluster/docker/debian-build/Dockerfile b/taskcluster/docker/debian-build/Dockerfile new file mode 100644 index 0000000000..4e0e04c150 --- /dev/null +++ b/taskcluster/docker/debian-build/Dockerfile @@ -0,0 +1,51 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +# binutils is needed for base toolchain builds. Ideally, it wouldn't be needed. +# libc6-i386 and lib32gcc1 are needed for wine. +# libdbus-glib-1-2 and libgtk-3-0 are needed to run xpcshell during the build. +# lib32atomic1, lib32stdc++6 and lib32z1 are needed to run some 32-bits +# cpio is needed by xar (mac repackaging on linux) +# spidermonkey tests. libasound2 is needed to run xpcshell after we introduced +# the dependencies on alsa via Web MIDI. +RUN apt-get update && \ + apt-get dist-upgrade && \ + apt-get install \ + binutils \ + bzip2 \ + curl \ + cpio \ + file \ + gawk \ + gnupg \ + jq \ + lib32atomic1 \ + 'lib32gcc(1|-s1)$' \ + lib32stdc++6 \ + lib32z1 \ + libasound2 \ + libc6-i386 \ + libdbus-glib-1-2 \ + libgtk-3-0 \ + libucl1 \ + p7zip-full \ + procps \ + python3-dev \ + rsync \ + screen \ + tar \ + unzip \ + uuid \ + wget \ + x11-utils \ + zip diff --git a/taskcluster/docker/debian-packages/Dockerfile b/taskcluster/docker/debian-packages/Dockerfile new file mode 100644 index 0000000000..1e651a48b7 --- /dev/null +++ b/taskcluster/docker/debian-packages/Dockerfile @@ -0,0 +1,11 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +RUN apt-get install --install-recommends \ + apt-utils \ + aptitude \ + build-essential \ + devscripts \ + equivs \ + fakeroot \ + git diff --git a/taskcluster/docker/debian-raw/Dockerfile b/taskcluster/docker/debian-raw/Dockerfile new file mode 100644 index 0000000000..33b28d11a2 --- /dev/null +++ b/taskcluster/docker/debian-raw/Dockerfile @@ -0,0 +1,62 @@ +ARG BASE_IMAGE +FROM $BASE_IMAGE +MAINTAINER Mike Hommey + +ENV DEBIAN_FRONTEND=noninteractive + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] + +# %include taskcluster/docker/recipes/setup_packages.sh +COPY topsrcdir/taskcluster/docker/recipes/setup_packages.sh /usr/local/sbin/ + +COPY taskcluster-hack.sh /usr/local/sbin +COPY gpgvnoexpkeysig /usr/local/sbin + +ARG DIST +ARG SNAPSHOT +ARG TASKCLUSTER_ROOT_URL +# Set apt sources list to a snapshot. +# Note: the use of gpgvnoexpkeysig is because the Debian Jessie GPG key expired. +RUN if [ -n "$DIST" ]; then for s in debian_$DIST debian_$DIST-updates debian_$DIST-backports debian-security_$DIST-security debian-debug_$DIST-debug debian-debug_$DIST-proposed-updates-debug debian-debug_$DIST-backports-debug; do \ + case "$s" in \ + debian-debug_jessie*|debian_jessie-updates) \ + : No debian-debug/updates archive for Jessie; \ + ;; \ + debian-security_jessie-security) \ + echo "deb http://archive.debian.org/debian-security/ jessie/updates main"; \ + ;; \ + debian*_jessie*) \ + echo "deb http://archive.debian.org/${s%_*}/ ${s#*_} main"; \ + ;; \ + debian-security_buster-security) \ + d=${s#*_}; \ + echo "deb http://snapshot.debian.org/archive/${s%_*}/$SNAPSHOT/ ${d%-security}/updates main"; \ + ;; \ + *) \ + echo "deb http://snapshot.debian.org/archive/${s%_*}/$SNAPSHOT/ ${s#*_} main"; \ + ;; \ + esac; \ + done > /etc/apt/sources.list ; fi && \ + ( echo 'quiet "true";'; \ + echo 'APT::Get::Assume-Yes "true";'; \ + echo 'APT::Install-Recommends "false";'; \ + echo 'Acquire::Check-Valid-Until "false";'; \ + echo 'Acquire::Retries "5";'; \ + if dpkg --compare-versions $(apt --version | awk '{print $2}') ge 2.1.15; then \ + echo 'dir::bin::methods::https "/usr/local/sbin/taskcluster-hack.sh";'; \ + fi; \ + if [ "$DIST" = "jessie" ]; then \ + echo 'Dir::Bin::gpg "/usr/local/sbin/gpgvnoexpkeysig";'; \ + fi; \ + ) > /etc/apt/apt.conf.d/99taskcluster && \ + ( echo 'Package: *'; \ + echo 'Pin: origin "'$TASKCLUSTER_ROOT_URL'"' | sed 's,https://,,'; \ + echo 'Pin-Priority: 1001'; \ + ) > /etc/apt/preferences.d/99taskcluster + +RUN apt-get update && \ + apt-get dist-upgrade && \ + apt-get install \ + apt-transport-https \ + ca-certificates diff --git a/taskcluster/docker/debian-raw/gpgvnoexpkeysig b/taskcluster/docker/debian-raw/gpgvnoexpkeysig new file mode 100755 index 0000000000..fbbfd7a658 --- /dev/null +++ b/taskcluster/docker/debian-raw/gpgvnoexpkeysig @@ -0,0 +1,52 @@ +#!/bin/sh +# +# Downloaded from https://gitlab.mister-muffin.de/josch/mmdebstrap/raw/branch/main/gpgvnoexpkeysig +# +# This script is in the public domain +# +# Author: Johannes Schauer Marin Rodrigues +# +# This is a wrapper around gpgv as invoked by apt. It turns EXPKEYSIG results +# from gpgv into GOODSIG results. This is necessary for apt to access very old +# timestamps from snapshot.debian.org for which the GPG key is already expired: +# +# Get:1 http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease [242 kB] +# Err:1 http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease +# The following signatures were invalid: EXPKEYSIG 8B48AD6246925553 Debian Archive Automatic Signing Key (7.0/wheezy) +# Reading package lists... +# W: GPG error: http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease: The following signatures were invalid: EXPKEYSIG 8B48AD6246925553 Debian Archive Automatic Signing Key (7.0/wheezy) +# E: The repository 'http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease' is not signed. +# +# To use this script, call apt with +# +# -o Apt::Key::gpgvcommand=/usr/libexec/mmdebstrap/gpgvnoexpkeysig +# +# Scripts doing similar things can be found here: +# +# * debuerreotype as /usr/share/debuerreotype/scripts/.gpgv-ignore-expiration.sh +# * derivative census: salsa.d.o/deriv-team/census/-/blob/master/bin/fakegpgv + +set -eu + +find_gpgv_status_fd() { + while [ "$#" -gt 0 ]; do + if [ "$1" = '--status-fd' ]; then + echo "$2" + return 0 + fi + shift + done + # default fd is stdout + echo 1 +} +GPGSTATUSFD="$(find_gpgv_status_fd "$@")" + +case $GPGSTATUSFD in + ''|*[!0-9]*) + echo "invalid --status-fd argument" >&2 + exit 1 + ;; +esac + +# we need eval because we cannot redirect a variable fd +eval 'exec gpgv "$@" '"$GPGSTATUSFD"'>&1 | sed "s/^\[GNUPG:\] EXPKEYSIG /[GNUPG:] GOODSIG /" >&'"$GPGSTATUSFD" diff --git a/taskcluster/docker/debian-raw/taskcluster-hack.sh b/taskcluster/docker/debian-raw/taskcluster-hack.sh new file mode 100755 index 0000000000..eecac021ec --- /dev/null +++ b/taskcluster/docker/debian-raw/taskcluster-hack.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# APT version 2.1.15 and newer changed how they handle quoting in redirections +# in a way that breaks the setup for APT repos in taskcluster artifacts +# (unfortunately, there's also no setup on the taskcluster end that would work +# with both old and newer versions of APT, short of removing redirections +# entirely). +/usr/lib/apt/methods/https | sed -u '/^New-URI:/s/+/%2b/g' diff --git a/taskcluster/docker/debian-repackage/Dockerfile b/taskcluster/docker/debian-repackage/Dockerfile new file mode 100644 index 0000000000..2ca035be0b --- /dev/null +++ b/taskcluster/docker/debian-repackage/Dockerfile @@ -0,0 +1,34 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mozilla Releng + +VOLUME /builds/worker/workspace + +# At the moment the Firefox build baseline is jessie. +# Things in the build/CI system that run in the task's container +# (mach, run-task, etc.) do not support jessie. +# There's also no jessie `base` images or packages generated in the CI. +# To generate Firefox Debian packages compatible with the baseline +# we bootstrap basic i386 and amd64 jessie systems on bullseye. +# We use these to generate shared library dependencies in jessie using chroot. +# python/mozbuild/mozbuild/repackaging/deb.py checks for jessie systems +# bootstrapped under /srv/jessie-i386 and /srv/jessie-amd64 +# If they aren't there, deb.py runs the repackage in the working directory without using chroot. +# To keep the build and repackage enviroments consistent the Debian baseline used +# here (jessie) should be synchronized with the baseline used in +# taskcluster/scripts/misc/build-sysroot.sh +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \ + apt-get update && \ + apt-get install debootstrap python3-distutils && set -xe && \ + for arch in i386 amd64; do \ + debootstrap \ + --arch=$arch \ + --variant=buildd \ + --include=debhelper,libasound2,libdbus-glib-1-2,libgtk-3-0,libx11-xcb1,libxtst6 \ + --keyring=/usr/share/keyrings/debian-archive-removed-keys.gpg \ + --verbose \ + jessie \ + /srv/jessie-$arch \ + https://archive.debian.org/debian; \ + done diff --git a/taskcluster/docker/decision/Dockerfile b/taskcluster/docker/decision/Dockerfile new file mode 100644 index 0000000000..f2aa83903e --- /dev/null +++ b/taskcluster/docker/decision/Dockerfile @@ -0,0 +1,15 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Andrew Halberstadt + +RUN mkdir /builds/worker/artifacts && \ + chown worker:worker /builds/worker/artifacts + +ADD system-setup.sh /tmp/system-setup.sh +RUN bash /tmp/system-setup.sh + +ADD comm-task-env /builds/worker/bin/comm-task-env + +ENV PATH=/builds/worker/bin:$PATH + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/decision/HASH b/taskcluster/docker/decision/HASH new file mode 100644 index 0000000000..b854e10d0f --- /dev/null +++ b/taskcluster/docker/decision/HASH @@ -0,0 +1 @@ +sha256:9f69fe08c28e3cb3cc296451f0a2735df6e25d0e3c877ea735ef1b7f0b345b06 diff --git a/taskcluster/docker/decision/README.md b/taskcluster/docker/decision/README.md new file mode 100644 index 0000000000..4490880be8 --- /dev/null +++ b/taskcluster/docker/decision/README.md @@ -0,0 +1,5 @@ +# Decision Tasks + +The decision image is a "boostrapping" image for the in tree logic it +deals with cloning gecko and the related utilities for providing an +environment where we can run gecko. diff --git a/taskcluster/docker/decision/VERSION b/taskcluster/docker/decision/VERSION new file mode 100644 index 0000000000..1454f6ed4b --- /dev/null +++ b/taskcluster/docker/decision/VERSION @@ -0,0 +1 @@ +4.0.1 diff --git a/taskcluster/docker/decision/comm-task-env b/taskcluster/docker/decision/comm-task-env new file mode 100755 index 0000000000..65481497ae --- /dev/null +++ b/taskcluster/docker/decision/comm-task-env @@ -0,0 +1,199 @@ +#!/usr/bin/python3 -u +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Thunderbird build environment prep for run-task, +for use with comm-central derived repositories. + +This script is meant to run prior to run-task on repositories like +comm-central that need to check out a copy of a mozilla repository +in order to build. +See bug 1491371 for background on why this is necessary. + +A project will have a file named ".gecko_rev.yml" in it's root. See the +constant "GECKO_REV_CONF" if you want to change that. To download it, the +script uses the project repository URL and the revision number. +Those are defined in the environment variables: +COMM_HEAD_REPOSITORY +COMM_HEAD_REV + +.gecko_rev.yml has a structure like (for comm-central): +``` +GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified +GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/mozilla-central +GECKO_HEAD_REF: default +``` +or for branches: +``` +GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified +GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-beta +GECKO_HEAD_REF: THUNDERBIRD_60_VERBRANCH +GECKO_HEAD_REV: 6a830d12f15493a70b1192022c9985eba2139910 + +Note about GECKO_HEAD_REV and GECKO_HEAD_REF: +GECKO_HEAD_REF is a branch name or "default". +GECKO_HEAD_REV is a revision hash. +``` +""" + +import sys + +import os +import socket +import time +from datetime import datetime +from pprint import pformat + +import urllib.error +import urllib.request + +import yaml + +if sys.version_info[0:2] < (3, 5): + print('run-task-wrapper requires Python 3.5+') + sys.exit(1) + +GECKO_REV_CONF = ".gecko_rev.yml" +DEBUG = bool(os.environ.get("RTW_DEBUG", False)) + + +def print_message(msg, prefix=__file__, level=""): + """ + Print messages. + :param object msg: message to print, usually a string, but not always + :param str prefix: message prefix + :param str level: message level (DEBUG, ERROR, INFO) + """ + if not isinstance(msg, str): + msg = pformat(msg) + now = datetime.utcnow().isoformat() + # slice microseconds to 3 decimals. + now = now[:-3] if now[-7:-6] == '.' else now + if level: + sys.stdout.write('[{prefix} {now}Z] {level}: {msg}\n'.format( + prefix=prefix, now=now, level=level, msg=msg)) + else: + sys.stdout.write('[{prefix} {now}Z] {msg}\n'.format( + prefix=prefix, now=now, msg=msg)) + sys.stdout.flush() + + +def error_exit(msg): + """Print the error message and exit with error.""" + print_message(msg, level="ERROR") + if DEBUG: + raise Exception(msg) + + sys.exit(1) + + +def print_debug(msg): + """Prints a message with DEBUG prefix if DEBUG is enabled + with the environment variable "RTW_DEBUG". + """ + if DEBUG: + print_message(msg, level="DEBUG") + + +def check_environ(): + """Check that the necessary environment variables to find the + comm- repository are defined. (Set in .taskcluster.yml) + :return: tuple(str, str) + """ + print_debug("Checking environment variables...") + project_head_repo = os.environ.get("COMM_HEAD_REPOSITORY", None) + project_head_rev = os.environ.get("COMM_HEAD_REV", None) + + if project_head_repo is None or project_head_rev is None: + error_exit("Environment NOT Ok:\n\tHead: {}\n\tRev: {}\n").format( + project_head_repo, project_head_rev) + + print_debug("Environment Ok:\n\tHead: {}\n\tRev: {}\n".format( + project_head_repo, project_head_rev)) + return project_head_repo, project_head_rev + + +def download_url(url, retry=1): + """Downloads the given URL. Naively retries (when asked) upon failure + :param url: str + :param retry: int + :return: str + """ + # Use 1-based counting for display and calculation purposes. + for i in range(1, retry+1): + try: + print_message('Fetching {}. Attempt {} of {}.'.format( + url, i, retry)) + with urllib.request.urlopen(url, timeout=10) as response: + data = response.read().decode("utf-8") + return data + except (urllib.error.URLError, socket.timeout) as exc: + print_message('Unable to retrieve {}'.format(url)) + if isinstance(exc, urllib.error.URLError): + print_message(exc.reason) + else: # socket.timeout + print_message('Connection timed out.') + + if i < retry: # No more retries + wait_time = i * 5 # fail #1: sleep 5s. #2, sleep 10s + print_message('Retrying in {} seconds.'.format(wait_time)) + time.sleep(wait_time) + + error_exit('No more retry attempts! Aborting.') + + +def fetch_gecko_conf(project_head_repo, project_revision): + """Downloads .gecko_rev.yml from the project repository + :param project_head_repo: str + :param project_revision: str + :return: dict + """ + gecko_conf_url = '/'.join( + [project_head_repo, 'raw-file', project_revision, GECKO_REV_CONF]) + + gecko_conf_yml = download_url(gecko_conf_url, retry=5) + + try: + gecko_conf = yaml.safe_load(gecko_conf_yml) + return gecko_conf + except yaml.YAMLError as exc: + err_txt = ["Error processing Gecko YAML configuration."] + if hasattr(exc, "problem_mark"): + mark = exc.problem_mark # pylint: disable=no-member + err_txt.append("Error position: line {}, column {}".format( + mark.line + 1, mark.column + 1)) + error_exit('\n'.join(err_txt)) + + +def update_environment(gecko_conf): + """Adds the new variables defined in gecko_conf to the + running environment. + :param gecko_conf: dict + """ + print_message("Updating environment with:") + print_message(gecko_conf) + os.environ.update(gecko_conf) + + print_debug("New environment:") + print_debug(os.environ) + + +def exec_run_task(args): + """Executes run-task with a modified environment.""" + print_message("Executing: {}".format(pformat(args))) + os.execv(args[0], args[0:]) + + +def main(): + """Main function.""" + args = sys.argv[1:] # Remaining args starting with run-task + + project_head_repo, project_revision = check_environ() + gecko_conf = fetch_gecko_conf(project_head_repo, project_revision) + update_environment(gecko_conf) + exec_run_task(args) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/docker/decision/system-setup.sh b/taskcluster/docker/decision/system-setup.sh new file mode 100644 index 0000000000..0f9d04fa50 --- /dev/null +++ b/taskcluster/docker/decision/system-setup.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -v -e + +test "$(whoami)" == 'root' + +apt-get update +apt-get install \ + python \ + sudo \ + python3-yaml + +rm -rf /var/lib/apt/lists/ +rm "$0" diff --git a/taskcluster/docker/diffoscope/Dockerfile b/taskcluster/docker/diffoscope/Dockerfile new file mode 100644 index 0000000000..22e68fd784 --- /dev/null +++ b/taskcluster/docker/diffoscope/Dockerfile @@ -0,0 +1,33 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV LANG=en_US.UTF-8 + +RUN apt-get install \ + binutils-multiarch \ + bzip2 \ + curl \ + enjarify \ + diffoscope \ + jsbeautifier \ + libc++abi1 \ + locales \ + default-jdk-headless \ + python3-progressbar \ + unzip \ + zip \ + && \ + sed -i '/en_US.UTF-8/s/^# *//' /etc/locale.gen && \ + locale-gen + +COPY get_and_diffoscope /builds/worker/bin/get_and_diffoscope +COPY readelf /builds/worker/bin/readelf +COPY report_error /builds/worker/bin/report_error +COPY test_diffoscope /builds/worker/bin/test_diffoscope + +RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* && \ + /builds/worker/bin/test_diffoscope diff --git a/taskcluster/docker/diffoscope/get_and_diffoscope b/taskcluster/docker/diffoscope/get_and_diffoscope new file mode 100644 index 0000000000..9c51af2508 --- /dev/null +++ b/taskcluster/docker/diffoscope/get_and_diffoscope @@ -0,0 +1,103 @@ +#!/bin/bash + +set -e +set -x + +cd /builds/worker + +mkdir a b + +# /builds/worker/bin contains wrapper binaries to divert what diffoscope +# needs to use, so it needs to appear first. +export PATH=/builds/worker/bin:$PATH + +# Until https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879010 is +# implemented, it's better to first manually extract the data. +# Plus dmg files are not supported yet. + +case "$ORIG_URL" in +*.zip|*.apk) + curl -L "$ORIG_URL" > a.zip + curl -L "$NEW_URL" > b.zip + unzip -d a a.zip + unzip -d b b.zip + ;; +*.tar.bz2) + curl -L "$ORIG_URL" | tar -C a -jxf - + curl -L "$NEW_URL" | tar -C b -jxf - + ;; +*.tar.gz) + curl -L "$ORIG_URL" | tar -C a -zxf - + curl -L "$NEW_URL" | tar -C b -zxf - + ;; +*.dmg) + for tool in lipo otool; do + ln -s $MOZ_FETCHES_DIR/cctools/bin/x86_64-apple-darwin*-$tool bin/$tool + done + curl -L "$ORIG_URL" > a.dmg + curl -L "$NEW_URL" > b.dmg + for i in a b; do + $MOZ_FETCHES_DIR/dmg/dmg extract $i.dmg $i.hfs + $MOZ_FETCHES_DIR/dmg/hfsplus $i.hfs extractall / $i + done + ;; +*) + ARTIFACT=$(basename "${ORIG_URL}") + curl -L "$ORIG_URL" > "a/${ARTIFACT}" + curl -L "$NEW_URL" > "b/${ARTIFACT}" +esac + +case "$ORIG_URL" in +*/target.apk) + OMNIJAR=assets/omni.ja + ;; +*) + OMNIJAR=omni.ja + ;; +esac + +# Builds are 99% of the time differing in some small ways, so it's not +# really useful to report a failure (at least not until we actually +# care about the builds being 100% identical). +POST=true + +fail() { + exit 1 +} + +for option; do + case "$option" in + --unpack) + CURDIR=$PWD + for dir in a b; do + # Need to run mach python from inside the gecko source. + # See bug #1533642. + (cd $GECKO_PATH && ./mach python toolkit/mozapps/installer/unpack.py --omnijar $OMNIJAR $CURDIR/$dir) + done + ;; + --fail) + POST="fail" + ;; + *) + echo "Unsupported option: $option" >&2 + exit 1 + esac +done + +if [ -n "$PRE_DIFF" ]; then + eval $PRE_DIFF +fi + +if diffoscope \ + --html diff.html \ + --text diff.txt \ + --progress \ + $DIFFOSCOPE_ARGS \ + a b +then + # Ok + : +else + $(dirname $0)/report_error diff + $POST +fi diff --git a/taskcluster/docker/diffoscope/readelf b/taskcluster/docker/diffoscope/readelf new file mode 100644 index 0000000000..6b864171d7 --- /dev/null +++ b/taskcluster/docker/diffoscope/readelf @@ -0,0 +1,13 @@ +#!/bin/sh + +case "$1 $2" in +"--wide --symbols") + # When called with --wide --symbols, we remove the first column (which + # is essentially a line number that is not very useful), and then sort, + # which will order symbols by address, making a diff more useful. + /usr/bin/readelf "$@" | awk -F: '{print $2}' | sort + ;; +*) + exec /usr/bin/readelf "$@" + ;; +esac diff --git a/taskcluster/docker/diffoscope/report_error b/taskcluster/docker/diffoscope/report_error new file mode 100755 index 0000000000..9074e33cae --- /dev/null +++ b/taskcluster/docker/diffoscope/report_error @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +import sys +stem = sys.argv[1] + +# We "parse" the diff output, so we look at the lines that contain a "tee", like: +# ├── +++ b/firefox +# │ ├── +++ b/firefox/libxul.so +# │ │ ├── readelf --wide --notes {} +# We ignore lines like the last one, to only report file names. And we ignore +# lines for directories such as the first one. +TEE = "├── " +VERTICAL_LINE = "│" +paths = set() +with open(f"{stem}.txt") as fh: + for l in fh: + l = l.rstrip() + before, tee, after = l.partition(TEE) + if not tee: + continue + before = before.split() + assert all(x == VERTICAL_LINE for x in before) + depth = len(before) + _, plus, after = after.partition("+++ ") + if not plus: + continue + _, b, full_path = after.partition("b/") + assert b == "b/" + parent_path = "/".join(full_path.split("/")[:-1]) + if parent_path in paths: + paths.remove(parent_path) + if full_path: + paths.add(full_path) + +for p in sorted(paths): + print(f"TEST-UNEXPECTED-FAIL | {p} differs. See the {stem}.html or {stem}.txt artifact") diff --git a/taskcluster/docker/diffoscope/test_diffoscope b/taskcluster/docker/diffoscope/test_diffoscope new file mode 100644 index 0000000000..ab1c6c1eee --- /dev/null +++ b/taskcluster/docker/diffoscope/test_diffoscope @@ -0,0 +1,47 @@ +#!/bin/bash + +set -e + +WORKDIR=$(mktemp -d) +cd $WORKDIR + +mkdir -p a/foo/bar/bar +mkdir -p a/foo/bar/baz +mkdir -p b/foo/bar/bar +mkdir -p b/foo/bar/baz + +# A file that is modified +echo qux > a/foo/bar/qux +echo quz > b/foo/bar/qux + +# A binary file that is modified +cp $(which ls) a/foo/bin +cp $(which cat) b/foo/bin + +# A file that is removed +echo hoge > a/foo/bar/bar/hoge + +# A file that is created +echo fuga > b/foo/bar/baz/fuga + +# Also add a zip file with the same contents +(cd a/foo; zip -r bar.zip bar) +(cd b/foo; zip -r bar.zip bar) + +if TERM=linux diffoscope --no-progress --text diff.txt a b; then + echo "diffoscope didn't find differences?" + exit 1 +fi + +cat > expected.txt < + +int close_range(unsigned int first, unsigned int last, unsigned int flags) { + errno = ENOSYS; + return -1; +} diff --git a/taskcluster/docker/firefox-flatpak/default-preferences.js b/taskcluster/docker/firefox-flatpak/default-preferences.js new file mode 100644 index 0000000000..95663d03db --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/default-preferences.js @@ -0,0 +1,11 @@ +/*global pref*/ +/*eslint no-undef: "error"*/ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +pref("intl.locale.requested", ""); +pref("app.update.auto", false); +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +pref("browser.shell.checkDefaultBrowser", false); +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); diff --git a/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py b/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py new file mode 100644 index 0000000000..b1eb745d7f --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +""" +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +""" + + +import json +import sys + +l10n_changesets_json_path = sys.argv[1] +with open(l10n_changesets_json_path) as f: + locales = json.load(f).keys() +linux_locales = [l for l in locales if l != "ja-JP-mac"] + +print("\n".join(sorted(linux_locales))) diff --git a/taskcluster/docker/firefox-flatpak/launch-script.sh b/taskcluster/docker/firefox-flatpak/launch-script.sh new file mode 100644 index 0000000000..98279e71eb --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/launch-script.sh @@ -0,0 +1,3 @@ +#!/bin/bash +export TMPDIR=$XDG_CACHE_HOME/tmp +exec /app/lib/firefox/firefox "$@" diff --git a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in new file mode 100644 index 0000000000..02d6ac110d --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in @@ -0,0 +1,37 @@ + + + org.mozilla.firefox + org.mozilla.firefox.desktop + Firefox + Mozilla + Fast, Private & Safe Web Browser + CC0-1.0 + MPL-2.0 + +

When it comes to your life online, you have a choice: accept the factory settings or put your privacy first. When you choose Firefox as your default browser, you’re choosing to protect your data while supporting an independent tech company. Firefox is also the only major browser backed by a non-profit fighting to give you more openness, transparency and control of your life online. Join hundreds of millions of people who choose to protect what's important by choosing Firefox - a web browser designed to be fast, easy to use, customizable and private.

+
+ + + + + mozilla + internet + web + + + https://www.mozilla.org/firefox/ + https://donate.mozilla.org/ + https://bugzilla.mozilla.org/ + https://support.mozilla.org/ + https://wiki.mozilla.org/L10n:Starting_a_localization + + + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image1.png + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image2.png + https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image3.png + + + https://hg.mozilla.org/mozilla-central/file/tip/taskcluster/docker/firefox-flatpak/runme.sh + + +
diff --git a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop new file mode 100644 index 0000000000..21c3e7aec0 --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop @@ -0,0 +1,386 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox Web Browser +Name[ar]=متصفح الويب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[el]=Περιηγητής Firefox +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Firefox webbläsare +Name[tr]=Firefox Web Tarayıcısı +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=firefox %u +Icon=org.mozilla.firefox +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; +Actions=new-window;new-private-window;profile-manager-window; +StartupWMClass=firefox + + +[Desktop Action new-window] +Name=Open a New Window +Name[ach]=Dirica manyen +Name[af]=Nuwe venster +Name[an]=Nueva finestra +Name[ar]=نافذة جديدة +Name[as]=নতুন উইন্ডো +Name[ast]=Ventana nueva +Name[az]=Yeni Pəncərə +Name[be]=Новае акно +Name[bg]=Нов прозорец +Name[bn_BD]=নতুন উইন্ডো (N) +Name[bn_IN]=নতুন উইন্ডো +Name[br]=Prenestr nevez +Name[brx]=गोदान उइन्ड'(N) +Name[bs]=Novi prozor +Name[ca]=Finestra nova +Name[cak]=K'ak'a' tzuwäch +Name[cs]=Nové okno +Name[cy]=Ffenestr Newydd +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[dsb]=Nowe wokno +Name[el]=Νέο παράθυρο +Name[en_GB]=New Window +Name[en_US]=New Window +Name[en_ZA]=New Window +Name[eo]=Nova fenestro +Name[es_AR]=Nueva ventana +Name[es_CL]=Nueva ventana +Name[es_ES]=Nueva ventana +Name[es_MX]=Nueva ventana +Name[et]=Uus aken +Name[eu]=Leiho berria +Name[fa]=پنجره جدید‌ +Name[ff]=Henorde Hesere +Name[fi]=Uusi ikkuna +Name[fr]=Nouvelle fenêtre +Name[fy_NL]=Nij finster +Name[ga_IE]=Fuinneog Nua +Name[gd]=Uinneag ùr +Name[gl]=Nova xanela +Name[gn]=Ovetã pyahu +Name[gu_IN]=નવી વિન્ડો +Name[he]=חלון חדש +Name[hi_IN]=नया विंडो +Name[hr]=Novi prozor +Name[hsb]=Nowe wokno +Name[hu]=Új ablak +Name[hy_AM]=Նոր Պատուհան +Name[id]=Jendela Baru +Name[is]=Nýr gluggi +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[ja_JP]=新規ウインドウ +Name[ka]=ახალი ფანჯარა +Name[kk]=Жаңа терезе +Name[km]=បង្អួច​​​ថ្មី +Name[kn]=ಹೊಸ ಕಿಟಕಿ +Name[ko]=새 창 +Name[kok]=नवें जनेल +Name[ks]=نئئ وِنڈو +Name[lij]=Neuvo barcon +Name[lo]=ຫນ້າຕ່າງໃຫມ່ +Name[lt]=Naujas langas +Name[ltg]=Jauns lūgs +Name[lv]=Jauns logs +Name[mai]=नव विंडो +Name[mk]=Нов прозорец +Name[ml]=പുതിയ ജാലകം +Name[mr]=नवीन पटल +Name[ms]=Tetingkap Baru +Name[my]=ဝင်းဒိုးအသစ် +Name[nb_NO]=Nytt vindu +Name[ne_NP]=नयाँ सञ्झ्याल +Name[nl]=Nieuw venster +Name[nn_NO]=Nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ +Name[pl]=Nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Nova janela +Name[rm]=Nova fanestra +Name[ro]=Fereastră nouă +Name[ru]=Новое окно +Name[sat]=नावा विंडो (N) +Name[si]=නව කවුළුවක් +Name[sk]=Nové okno +Name[sl]=Novo okno +Name[son]=Zanfun taaga +Name[sq]=Dritare e Re +Name[sr]=Нови прозор +Name[sv_SE]=Nytt fönster +Name[ta]=புதிய சாளரம் +Name[te]=కొత్త విండో +Name[th]=หน้าต่างใหม่ +Name[tr]=Yeni pencere +Name[tsz]=Eraatarakua jimpani +Name[uk]=Нове вікно +Name[ur]=نیا دریچہ +Name[uz]=Yangi oyna +Name[vi]=Cửa sổ mới +Name[wo]=Palanteer bu bees +Name[xh]=Ifestile entsha +Name[zh_CN]=新建窗口 +Name[zh_TW]=開新視窗 +Exec=firefox --new-window %u + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni Məxfi Pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[brx]=गोदान प्राइभेट उइन्ड' +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cak]=K'ak'a' ichinan tzuwäch +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr Breifat Newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[en_GB]=New Private Window +Name[en_US]=New Private Window +Name[en_ZA]=New Private Window +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[fa]=پنجره ناشناس جدید +Name[ff]=Henorde Suturo Hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog Nua Phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gn]=Ovetã ñemi pyahu +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नयी निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Սկսել Գաղտնի դիտարկում +Name[id]=Jendela Mode Pribadi Baru +Name[is]=Nýr huliðsgluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[ja_JP]=新規プライベートウインドウ +Name[ka]=ახალი პირადი ფანჯარა +Name[kk]=Жаңа жекелік терезе +Name[km]=បង្អួច​ឯកជន​ថ្មី +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 모드 +Name[kok]=नवो खाजगी विंडो +Name[ks]=نْو پرایوٹ وینڈو& +Name[lij]=Neuvo barcon privou +Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ +Name[lt]=Naujas privataus naršymo langas +Name[ltg]=Jauns privatais lūgs +Name[lv]=Jauns privātais logs +Name[mai]=नया निज विंडो (W) +Name[mk]=Нов приватен прозорец +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap Persendirian Baharu +Name[my]=New Private Window +Name[nb_NO]=Nytt privat vindu +Name[ne_NP]=नयाँ निजी सञ्झ्याल +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno prywatne +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră privată nouă +Name[ru]=Новое приватное окно +Name[sat]=नावा निजेराक् विंडो (W ) +Name[si]=නව පුද්ගලික කවුළුව (W) +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e Re Private +Name[sr]=Нови приватан прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[tsz]=Juchiiti eraatarakua jimpani +Name[uk]=Приватне вікно +Name[ur]=نیا نجی دریچہ +Name[uz]=Yangi maxfiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[wo]=Panlanteeru biir bu bees +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=firefox --private-window %u + +[Desktop Action profile-manager-window] +Name=Open the Profile Manager +Name[cs]=Správa profilů +Name[de]=Profilverwaltung öffnen +Name[es]=Abrir el Gestor de Perfiles +Name[fr]=Ouvrir le gestionnaire de profils +Exec=firefox --ProfileManager diff --git a/taskcluster/docker/firefox-flatpak/policies.json b/taskcluster/docker/firefox-flatpak/policies.json new file mode 100644 index 0000000000..2645f20c0c --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/policies.json @@ -0,0 +1,6 @@ +{ + "policies": { + "DisableAppUpdate": true, + "DontCheckDefaultBrowser": true + } +} diff --git a/taskcluster/docker/firefox-flatpak/runme.sh b/taskcluster/docker/firefox-flatpak/runme.sh new file mode 100755 index 0000000000..91511fe2d6 --- /dev/null +++ b/taskcluster/docker/firefox-flatpak/runme.sh @@ -0,0 +1,190 @@ +#!/bin/bash +set -xe + +# Future products supporting Flatpaks will set this accordingly +: PRODUCT "${PRODUCT:=firefox}" + +# Required env variables + +test "$VERSION" +test "$BUILD_NUMBER" +test "$CANDIDATES_DIR" +test "$L10N_CHANGESETS" +test "$FLATPAK_BRANCH" + +# Optional env variables +: WORKSPACE "${WORKSPACE:=/home/worker/workspace}" +: ARTIFACTS_DIR "${ARTIFACTS_DIR:=/home/worker/artifacts}" + +pwd + +# XXX: this is used to populate the datetime in org.mozilla.firefox.appdata.xml +DATE=$(date +%Y-%m-%d) +export DATE + +SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TARGET_TAR_XZ_FULL_PATH="$ARTIFACTS_DIR/target.flatpak.tar.xz" +SOURCE_DEST="${WORKSPACE}/source" +FREEDESKTOP_VERSION="22.08" +FIREFOX_BASEAPP_CHANNEL="22.08" + + +# XXX: these commands are temporarily, there's an upcoming fix in the upstream Docker image +# that we work on top of, from `freedesktopsdk`, that will make these two lines go away eventually +mkdir -p /root /tmp /var/tmp +mkdir -p "$ARTIFACTS_DIR" +rm -rf "$SOURCE_DEST" && mkdir -p "$SOURCE_DEST" + +# XXX ensure we have a clean slate in the local flatpak repo +rm -rf ~/.local/share/flatpak/ + + +CURL="curl --location --retry 10 --retry-delay 10" + +# Download en-US linux64 binary +$CURL -o "${WORKSPACE}/firefox.tar.bz2" \ + "${CANDIDATES_DIR}/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/en-US/firefox-${VERSION}.tar.bz2" + +# Use list of locales to fetch L10N XPIs +$CURL -o "${WORKSPACE}/l10n_changesets.json" "$L10N_CHANGESETS" +locales=$(python3 "$SCRIPT_DIRECTORY/extract_locales_from_l10n_json.py" "${WORKSPACE}/l10n_changesets.json") + +DISTRIBUTION_DIR="$SOURCE_DEST/distribution" +if [[ "$PRODUCT" == "firefox" ]]; then + # Get Flatpak configuration + PARTNER_CONFIG_DIR="$WORKSPACE/partner_config" + git clone https://github.com/mozilla-partners/flatpak.git "$PARTNER_CONFIG_DIR" + mv "$PARTNER_CONFIG_DIR/desktop/flatpak/distribution" "$DISTRIBUTION_DIR" +else + mkdir -p "$DISTRIBUTION_DIR" +fi + +mkdir -p "$DISTRIBUTION_DIR/extensions" +for locale in $locales; do + $CURL -o "$DISTRIBUTION_DIR/extensions/langpack-${locale}@firefox.mozilla.org.xpi" \ + "$CANDIDATES_DIR/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/xpi/${locale}.xpi" +done + +envsubst < "$SCRIPT_DIRECTORY/org.mozilla.firefox.appdata.xml.in" > "${WORKSPACE}/org.mozilla.firefox.appdata.xml" +cp -v "$SCRIPT_DIRECTORY/org.mozilla.firefox.desktop" "$WORKSPACE" +# Add a group policy file to disable app updates, as those are handled by Flathub +cp -v "$SCRIPT_DIRECTORY/policies.json" "$WORKSPACE" +cp -v "$SCRIPT_DIRECTORY/default-preferences.js" "$WORKSPACE" +cp -v "$SCRIPT_DIRECTORY/launch-script.sh" "$WORKSPACE" +cd "${WORKSPACE}" + +flatpak remote-add --user --if-not-exists --from flathub https://dl.flathub.org/repo/flathub.flatpakrepo +# XXX: added --user to `flatpak install` to avoid ambiguity +flatpak install --user -y flathub org.mozilla.firefox.BaseApp//${FIREFOX_BASEAPP_CHANNEL} --no-deps + +# XXX: this command is temporarily, there's an upcoming fix in the upstream Docker image +# that we work on top of, from `freedesktopsdk`, that will make these two lines go away eventually +mkdir -p build +cp -r ~/.local/share/flatpak/app/org.mozilla.firefox.BaseApp/current/active/files build/files + +ARCH=$(flatpak --default-arch) +cat < build/metadata +[Application] +name=org.mozilla.firefox +runtime=org.freedesktop.Platform/${ARCH}/${FREEDESKTOP_VERSION} +sdk=org.freedesktop.Sdk/${ARCH}/${FREEDESKTOP_VERSION} +base=app/org.mozilla.firefox.BaseApp/${ARCH}/${FIREFOX_BASEAPP_CHANNEL} +[Extension org.mozilla.firefox.Locale] +directory=share/runtime/langpack +autodelete=true +locale-subset=true + +[Extension org.freedesktop.Platform.ffmpeg-full] +directory=lib/ffmpeg +add-ld-path=. +no-autodownload=true +version=${FREEDESKTOP_VERSION} + +[Extension org.mozilla.firefox.systemconfig] +directory=etc/firefox +no-autodownload=true +EOF + +cat < build/metadata.locale +[Runtime] +name=org.mozilla.firefox.Locale + +[ExtensionOf] +ref=app/org.mozilla.firefox/${ARCH}/${FLATPAK_BRANCH} +EOF + +appdir=build/files +install -d "${appdir}/lib/" +(cd "${appdir}/lib/" && tar jxf "${WORKSPACE}/firefox.tar.bz2") +install -D -m644 -t "${appdir}/share/appdata" org.mozilla.firefox.appdata.xml +install -D -m644 -t "${appdir}/share/applications" org.mozilla.firefox.desktop +for size in 16 32 48 64 128; do + install -D -m644 "${appdir}/lib/firefox/browser/chrome/icons/default/default${size}.png" "${appdir}/share/icons/hicolor/${size}x${size}/apps/org.mozilla.firefox.png" +done +mkdir -p "${appdir}/lib/ffmpeg" +mkdir -p "${appdir}/etc/firefox" + +appstream-compose --prefix="${appdir}" --origin=flatpak --basename=org.mozilla.firefox org.mozilla.firefox +appstream-util mirror-screenshots "${appdir}"/share/app-info/xmls/org.mozilla.firefox.xml.gz "https://dl.flathub.org/repo/screenshots/org.mozilla.firefox-${FLATPAK_BRANCH}" build/screenshots "build/screenshots/org.mozilla.firefox-${FLATPAK_BRANCH}" + +# XXX: we used to `install -D` before which automatically created the components +# of target, now we need to manually do this since we're symlinking +mkdir -p "${appdir}/lib/firefox/distribution/extensions" +# XXX: we put the langpacks in /app/share/locale/$LANG_CODE and symlink that +# directory to where Firefox looks them up; this way only subset configured +# on user system is downloaded vs all locales +for locale in $locales; do + install -D -m644 -t "${appdir}/share/runtime/langpack/${locale%%-*}/" "${DISTRIBUTION_DIR}/extensions/langpack-${locale}@firefox.mozilla.org.xpi" + ln -sf "/app/share/runtime/langpack/${locale%%-*}/langpack-${locale}@firefox.mozilla.org.xpi" "${appdir}/lib/firefox/distribution/extensions/langpack-${locale}@firefox.mozilla.org.xpi" +done +install -D -m644 -t "${appdir}/lib/firefox/distribution" "$DISTRIBUTION_DIR/distribution.ini" +install -D -m644 -t "${appdir}/lib/firefox/distribution" policies.json +install -D -m644 -t "${appdir}/lib/firefox/browser/defaults/preferences" default-preferences.js +install -D -m755 launch-script.sh "${appdir}/bin/firefox" + +# We need to set GTK_PATH to load cups printing backend which is missing in +# freedesktop sdk. +# +# We use features=devel to enable ptrace, which we need for the crash +# reporter. The application is still confined in a pid namespace, so +# that won't let us escape the flatpak sandbox. See bug 1653852. + +flatpak build-finish build \ + --allow=devel \ + --share=ipc \ + --share=network \ + --env=GTK_PATH=/app/lib/gtkmodules \ + --socket=pulseaudio \ + --socket=wayland \ + --socket=x11 \ + --socket=pcsc \ + --socket=cups \ + --require-version=0.11.1 \ + --persist=.mozilla \ + --filesystem=xdg-download:rw \ + --filesystem=/run/.heim_org.h5l.kcm-socket \ + --device=all \ + --talk-name=org.freedesktop.FileManager1 \ + --system-talk-name=org.freedesktop.NetworkManager \ + --talk-name=org.a11y.Bus \ + --talk-name=org.gnome.SessionManager \ + --talk-name=org.freedesktop.ScreenSaver \ + --talk-name="org.gtk.vfs.*" \ + --talk-name=org.freedesktop.Notifications \ + --own-name="org.mpris.MediaPlayer2.firefox.*" \ + --own-name="org.mozilla.firefox.*" \ + --own-name="org.mozilla.firefox_beta.*" \ + --command=firefox + +flatpak build-export --disable-sandbox --no-update-summary --exclude='/share/runtime/langpack/*/*' repo build "$FLATPAK_BRANCH" +flatpak build-export --disable-sandbox --no-update-summary --metadata=metadata.locale --files=files/share/runtime/langpack repo build "$FLATPAK_BRANCH" +ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 build/screenshots +flatpak build-update-repo --generate-static-deltas repo +tar cvfJ flatpak.tar.xz repo + +mv -- flatpak.tar.xz "$TARGET_TAR_XZ_FULL_PATH" + +# XXX: if we ever wanted to go back to building flatpak bundles, we can revert this command; useful for testing individual artifacts, not publishable +# flatpak build-bundle "$WORKSPACE"/repo org.mozilla.firefox.flatpak org.mozilla.firefox +# TARGET_FULL_PATH="$ARTIFACTS_DIR/target.flatpak" +# mv -- *.flatpak "$TARGET_FULL_PATH" diff --git a/taskcluster/docker/firefox-snap/Dockerfile b/taskcluster/docker/firefox-snap/Dockerfile new file mode 100644 index 0000000000..dc002c0133 --- /dev/null +++ b/taskcluster/docker/firefox-snap/Dockerfile @@ -0,0 +1,71 @@ +## The below code is from snapcraft/docker/stable.Dockerfile +## The modifications done are part of the documentation for enabling core18 snaps. +## https://snapcraft.io/docs/t/creating-docker-images-for-snapcraft/11739 + +# /!\ The base image must follow the version of the `coreXX` package +# https://forum.snapcraft.io/t/issues-dockerizing-a-snapcraft-build-process/30294/5 +FROM ubuntu:focal + +ENV LANG='en_US.UTF-8' \ + LANGUAGE='en_US:en' \ + LC_ALL='en_US.UTF-8' \ + PATH="/snap/bin:$PATH" \ + SNAP='/snap/snapcraft/current' \ + SNAP_NAME='snapcraft' \ + SNAP_ARCH='amd64' \ + TERM='dumb' \ + TZ='Etc/UTC' + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# Grab dependencies. snapd is now required per https://github.com/snapcore/snapcraft/pull/3210 +RUN apt-get update && \ + apt-get dist-upgrade --yes && \ + apt-get install --yes \ + curl \ + jq \ + squashfs-tools \ + locales \ + bzip2 \ + curl \ + gcc \ + git \ + python3 \ + locales \ + snapd \ + sudo \ + && \ +locale-gen "$LANG" + +COPY download_and_install_snap.sh . + +RUN bash download_and_install_snap.sh 'core20' +RUN bash download_and_install_snap.sh 'gnome-3-38-2004' +RUN bash download_and_install_snap.sh 'gnome-3-38-2004-sdk' +RUN bash download_and_install_snap.sh 'snapcraft' + +# Fix Python3 installation: Make sure we use the interpreter from +# the snapcraft snap: +RUN unlink /snap/snapcraft/current/usr/bin/python3 && \ + ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3 && \ + echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth + +# Create a snapcraft runner (TODO: move version detection to the core of snapcraft). +RUN mkdir -p /snap/bin +RUN echo "#!/bin/sh" > /snap/bin/snapcraft +RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft +RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft +RUN chmod +x /snap/bin/snapcraft + +RUN mkdir /scripts/ +WORKDIR /scripts/ +# Copy everything in the docker/firefox-snap folder but the Dockerfile +# +# XXX The following pattern is neither a regex nor a glob one. It's +# documented at https://golang.org/pkg/path/filepath/#Match. There's no +# way of explicitly filtering out "Dockerfile". If one day, someone needs +# to add a file starting with "D", then we must revisit the pattern below. +COPY [^D]* /scripts/ + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/firefox-snap/Makefile b/taskcluster/docker/firefox-snap/Makefile new file mode 100644 index 0000000000..d71dc70881 --- /dev/null +++ b/taskcluster/docker/firefox-snap/Makefile @@ -0,0 +1,12 @@ +DOCKERIO_USERNAME =$(error DOCKERIO_USERNAME should be set) +IMAGE_NAME = firefox-snapcraft +FULL_IMAGE_NAME = $(DOCKERIO_USERNAME)/$(IMAGE_NAME) + +build: + docker build -t $(FULL_IMAGE_NAME) --no-cache --rm . + +push: + docker push $(FULL_IMAGE_NAME):latest + +pull: + docker pull $(FULL_IMAGE_NAME):latest diff --git a/taskcluster/docker/firefox-snap/download_and_install_snap.sh b/taskcluster/docker/firefox-snap/download_and_install_snap.sh new file mode 100644 index 0000000000..7def88b2aa --- /dev/null +++ b/taskcluster/docker/firefox-snap/download_and_install_snap.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -ex + +SNAP_NAME="$1" +SNAP_CHANNEL="${2:-stable}" +SNAP_INSTALL_LOCATION="${3:-/snap}" + +SNAP_METADATA="$(curl --header 'X-Ubuntu-Series: 16' "https://api.snapcraft.io/api/v1/snaps/details/$SNAP_NAME?channel=$SNAP_CHANNEL")" + +set +x +SNAP_SHA512="$(echo "$SNAP_METADATA" | jq '.download_sha512' -r)" +SNAP_DOWNLOAD_URL="$(echo "$SNAP_METADATA" | jq '.download_url' -r)" +SNAP_LAST_UPDATED="$(echo "$SNAP_METADATA" | jq '.last_updated' -r)" +SNAP_REVISION="$(echo "$SNAP_METADATA" | jq '.revision' -r)" +SNAP_VERSION="$(echo "$SNAP_METADATA" | jq '.version' -r)" +set -x + +echo "Downloading $SNAP_NAME, version $SNAP_VERSION, revision $SNAP_REVISION (last updated: $SNAP_LAST_UPDATED)..." +curl --location "$SNAP_DOWNLOAD_URL" --output "$SNAP_NAME.snap" +sha512sum -c <(echo "$SNAP_SHA512 $SNAP_NAME.snap") + +mkdir -p "$SNAP_INSTALL_LOCATION/$SNAP_NAME" +unsquashfs -d "$SNAP_INSTALL_LOCATION/$SNAP_NAME/current" "$SNAP_NAME.snap" +rm "$SNAP_NAME.snap" + +echo "$SNAP_NAME version $SNAP_VERSION has correctly been uploaded and installed." \ No newline at end of file diff --git a/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py b/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py new file mode 100644 index 0000000000..07bc007a31 --- /dev/null +++ b/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import sys + +l10n_changesets_json_path = sys.argv[1] +with open(l10n_changesets_json_path) as f: + locales = json.load(f).keys() +linux_locales = [l for l in locales if l != "ja-JP-mac"] + +print("\n".join(sorted(linux_locales))) diff --git a/taskcluster/docker/firefox-snap/firefox.desktop b/taskcluster/docker/firefox-snap/firefox.desktop new file mode 100644 index 0000000000..73e36e8d83 --- /dev/null +++ b/taskcluster/docker/firefox-snap/firefox.desktop @@ -0,0 +1,219 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox Web Browser +Name[ar]=متصفح الويب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[el]=Περιηγητής Firefox +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Firefox webbläsare +Name[tr]=Firefox Web Tarayıcısı +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=firefox %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=/browser/chrome/icons/default/default128.png +Categories=GNOME;GTK;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; +StartupNotify=true +Actions=NewWindow;NewPrivateWindow; + +[Desktop Action NewWindow] +Name=Open a New Window +Name[ar]=افتح نافذة جديدة +Name[ast]=Abrir una ventana nueva +Name[bn]=Abrir una ventana nueva +Name[ca]=Obre una finestra nova +Name[cs]=Otevřít nové okno +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[el]=Άνοιγμα νέου παραθύρου +Name[es]=Abrir una ventana nueva +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[gl]=Abrir unha nova xanela +Name[he]=פתיחת חלון חדש +Name[hr]=Otvori novi prozor +Name[hu]=Új ablak nyitása +Name[it]=Apri una nuova finestra +Name[ja]=新しいウィンドウを開く +Name[ko]=새 창 열기 +Name[ku]=Paceyeke nû veke +Name[lt]=Atverti naują langą +Name[nb]=Åpne et nytt vindu +Name[nl]=Nieuw venster openen +Name[pt]=Abrir nova janela +Name[pt_BR]=Abrir nova janela +Name[ro]=Deschide o fereastră nouă +Name[ru]=Новое окно +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[sv]=Öppna ett nytt fönster +Name[tr]=Yeni pencere aç +Name[ug]=يېڭى كۆزنەك ئېچىش +Name[uk]=Відкрити нове вікно +Name[vi]=Mở cửa sổ mới +Name[zh_CN]=新建窗口 +Name[zh_TW]=開啟新視窗 +Exec=firefox -new-window + +[Desktop Action NewPrivateWindow] +Name=Open a New Private Window +Name[ar]=افتح نافذة جديدة للتصفح الخاص +Name[ca]=Obre una finestra nova en mode d'incògnit +Name[de]=Ein neues privates Fenster öffnen +Name[es]=Abrir una ventana privada nueva +Name[fi]=Avaa uusi yksityinen ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée +Name[he]=פתיחת חלון גלישה פרטית חדש +Name[hu]=Új privát ablak nyitása +Name[it]=Apri una nuova finestra anonima +Name[nb]=Åpne et nytt privat vindu +Name[ru]=Новое приватное окно +Name[sl]=Odpri novo okno zasebnega brskanja +Name[tr]=Yeni bir pencere aç +Name[uk]=Відкрити нове вікно у потайливому режимі +Name[zh_TW]=開啟新隱私瀏覽視窗 +Exec=firefox -private-window diff --git a/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in b/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in new file mode 100644 index 0000000000..18dfc64089 --- /dev/null +++ b/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in @@ -0,0 +1,92 @@ +name: firefox +version: @VERSION@-@BUILD_NUMBER@ +summary: Mozilla Firefox web browser +description: Firefox is a powerful, extensible web browser with support for modern web application technologies. +confinement: strict +grade: stable +base: core20 +compression: lzo + +apps: + firefox: + command: firefox + command-chain: [tmpdir] + desktop: distribution/firefox.desktop + extensions: [gnome-3-38] + environment: + HOME: "$SNAP_USER_COMMON" + GTK_USE_PORTAL: 1 + slots: + - dbus-daemon + - mpris + plugs: + - avahi-observe + - browser-sandbox + - camera + - cups-control + - gsettings + - hardware-observe + - home + - joystick + - network + - network-observe + - opengl + - pulseaudio + - removable-media + - screen-inhibit-control + - system-packages-doc + - u2f-devices + - unity7 + - upower-observe + +plugs: + browser-sandbox: + interface: browser-support + allow-sandbox: true + etc-firefox-policies: + interface: system-files + read: [/etc/firefox/policies] + +layout: + /usr/share/libdrm: + bind: $SNAP/gnome-platform/usr/share/libdrm + +parts: + firefox: + plugin: dump + source: source + stage-packages: + - libxt6 + - libdbus-glib-1-2 + - libasound2 + - libpci3 + - libpulse0 + - libgl1-mesa-dri + - libgl1-mesa-glx + - libmirclient9 + - desktop-file-utils + - ffmpeg + - libc-bin + - locales-all + - libcurl3-gnutls + prime: + - -usr/lib/*/libharfbuzz* + - -usr/lib/*/*pango* + + # Find files provided by the base and platform snap and ensure they aren't + # duplicated in this snap + cleanup: + after: [firefox] + plugin: nil + build-snaps: [core20, gnome-3-38-2004] + override-prime: | + set -eux + for snap in "core20" "gnome-3-38-2004"; do + cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" \; + done + +slots: + dbus-daemon: + interface: dbus + bus: session + name: org.mozilla.firefox diff --git a/taskcluster/docker/firefox-snap/policies.json b/taskcluster/docker/firefox-snap/policies.json new file mode 100644 index 0000000000..f36622021f --- /dev/null +++ b/taskcluster/docker/firefox-snap/policies.json @@ -0,0 +1,5 @@ +{ + "policies": { + "DisableAppUpdate": true + } +} diff --git a/taskcluster/docker/firefox-snap/runme.sh b/taskcluster/docker/firefox-snap/runme.sh new file mode 100755 index 0000000000..308640a8c8 --- /dev/null +++ b/taskcluster/docker/firefox-snap/runme.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +set -xe + +# Thunderbird Snap builds will set this to "thunderbird" +: PRODUCT "${PRODUCT:=firefox}" + +# Required env variables +test "$VERSION" +test "$BUILD_NUMBER" +test "$CANDIDATES_DIR" +test "$L10N_CHANGESETS" + +# Optional env variables +: WORKSPACE "${WORKSPACE:=/home/worker/workspace}" +: ARTIFACTS_DIR "${ARTIFACTS_DIR:=/home/worker/artifacts}" +: PUSH_TO_CHANNEL "" + +SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +TARGET="target.snap" +TARGET_FULL_PATH="$ARTIFACTS_DIR/$TARGET" +SOURCE_DEST="${WORKSPACE}/source" + +mkdir -p "$ARTIFACTS_DIR" +rm -rf "$SOURCE_DEST" && mkdir -p "$SOURCE_DEST" + +CURL="curl --location --retry 10 --retry-delay 10" + +# Download and extract en-US linux64 binary +$CURL -o "${WORKSPACE}/${PRODUCT}.tar.bz2" \ + "${CANDIDATES_DIR}/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/en-US/${PRODUCT}-${VERSION}.tar.bz2" +tar -C "$SOURCE_DEST" -xf "${WORKSPACE}/${PRODUCT}.tar.bz2" --strip-components=1 + +DISTRIBUTION_DIR="$SOURCE_DEST/distribution" +if [[ "$PRODUCT" == "firefox" ]]; then + # Get Ubuntu configuration + PARTNER_CONFIG_DIR="$WORKSPACE/partner_config" + git clone https://github.com/mozilla-partners/canonical.git "$PARTNER_CONFIG_DIR" + mv "$PARTNER_CONFIG_DIR/desktop/ubuntu/distribution" "$DISTRIBUTION_DIR" +else + mkdir -p "$DISTRIBUTION_DIR" +fi + +cp -v "$SCRIPT_DIRECTORY/${PRODUCT}.desktop" "$DISTRIBUTION_DIR" + +# Add a group policy file to disable app updates, as those are handled by snapd +cp -v "$SCRIPT_DIRECTORY/policies.json" "$DISTRIBUTION_DIR" + +# Use list of locales to fetch L10N XPIs +$CURL -o "${WORKSPACE}/l10n_changesets.json" "$L10N_CHANGESETS" +locales=$(python3 "$SCRIPT_DIRECTORY/extract_locales_from_l10n_json.py" "${WORKSPACE}/l10n_changesets.json") + +mkdir -p "$DISTRIBUTION_DIR/extensions" +for locale in $locales; do + $CURL -o "$SOURCE_DEST/distribution/extensions/langpack-${locale}@${PRODUCT}.mozilla.org.xpi" \ + "$CANDIDATES_DIR/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/xpi/${locale}.xpi" +done + +# In addition to the packages downloaded below, snapcraft fetches deb packages from ubuntu.com, +# when a snap is built,. They may bump packages there and remove the old ones. Updating the +# database allows snapcraft to find the latest packages. +# For more context, see 1448239 +apt-get update + +# Extract gtk30.mo from Ubuntu language packs +apt download language-pack-gnome-*-base +for i in *.deb; do + # shellcheck disable=SC2086 + dpkg-deb --fsys-tarfile $i | tar xv -C "$SOURCE_DEST" --wildcards "./usr/share/locale-langpack/*/LC_MESSAGES/gtk30.mo" || true +done + +# Add wrapper script to set TMPDIR appropriate for the snap +cp -v "$SCRIPT_DIRECTORY/tmpdir" "$SOURCE_DEST" + +# Generate snapcraft manifest +sed -e "s/@VERSION@/${VERSION}/g" -e "s/@BUILD_NUMBER@/${BUILD_NUMBER}/g" ${PRODUCT}.snapcraft.yaml.in > "${WORKSPACE}/snapcraft.yaml" +cd "${WORKSPACE}" + +# Make sure snapcraft knows we're building amd64, even though we may not be on this arch. +export SNAP_ARCH='amd64' + +snapcraft + +mv -- *.snap "$TARGET_FULL_PATH" + +cd "$ARTIFACTS_DIR" + +# Generate checksums file +size=$(stat --printf="%s" "$TARGET_FULL_PATH") +sha=$(sha512sum "$TARGET_FULL_PATH" | awk '{print $1}') +echo "$sha sha512 $size $TARGET" > "$TARGET.checksums" + +echo "Generating signing manifest" +hash=$(sha512sum "$TARGET.checksums" | awk '{print $1}') + +cat << EOF > signing_manifest.json +[{"file_to_sign": "$TARGET.checksums", "hash": "$hash"}] +EOF + +# For posterity +find . -ls +cat "$TARGET.checksums" +cat signing_manifest.json diff --git a/taskcluster/docker/firefox-snap/tmpdir b/taskcluster/docker/firefox-snap/tmpdir new file mode 100755 index 0000000000..e7e60801fa --- /dev/null +++ b/taskcluster/docker/firefox-snap/tmpdir @@ -0,0 +1,6 @@ +#!/bin/bash + +# Set TMPDIR to be under the user's default Downloads dir +export TMPDIR=$(xdg-user-dir DOWNLOAD)/firefox.tmp + +exec "$@" diff --git a/taskcluster/docker/funsize-update-generator/Dockerfile b/taskcluster/docker/funsize-update-generator/Dockerfile new file mode 100644 index 0000000000..bbd4f518df --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/Dockerfile @@ -0,0 +1,48 @@ +FROM debian:11 + +# Required software +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update -q && \ + apt-get install -yyq --no-install-recommends \ + bzip2 \ + ca-certificates \ + curl \ + gcc \ + jq \ + libdpkg-perl \ + libgetopt-simple-perl \ + liblzma-dev \ + locales \ + python3 \ + libpython3-dev \ + python3-dev \ + python3-pip \ + xz-utils +RUN useradd -d /home/worker -s /bin/bash -m worker +COPY requirements.txt / + +RUN locale-gen en_CA.UTF-8 +ENV LANG en_CA.UTF-8 +ENV LANGUAGE en_CA.UTF-8 +ENV LANG_ALL en_CA.UTF-8 +ENV LC_ALL en_CA.UTF-8 + +RUN ["pip", "install", "-r", "/requirements.txt"] + +# scripts +RUN mkdir /home/worker/bin +COPY scripts/* /home/worker/bin/ + +COPY runme.sh /runme.sh +RUN chmod 755 /home/worker/bin/* /*.sh +RUN mkdir /home/worker/keys +COPY *.pubkey /home/worker/keys/ + +ENV HOME /home/worker +ENV SHELL /bin/bash +ENV USER worker +ENV LOGNAME worker + +USER worker + +CMD ["/runme.sh"] diff --git a/taskcluster/docker/funsize-update-generator/Makefile b/taskcluster/docker/funsize-update-generator/Makefile new file mode 100644 index 0000000000..6b67f0ed90 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/Makefile @@ -0,0 +1,9 @@ +IMAGE_NAME = funsize-update-generator + +build: + docker build -t $(IMAGE_NAME) --no-cache --rm . + +update_pubkeys: + curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der | openssl x509 -inform DER -pubkey -noout > nightly.pubkey + curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/dep1.der | openssl x509 -inform DER -pubkey -noout > dep.pubkey + curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/release_primary.der | openssl x509 -inform DER -pubkey -noout > release.pubkey diff --git a/taskcluster/docker/funsize-update-generator/README b/taskcluster/docker/funsize-update-generator/README new file mode 100644 index 0000000000..5e9507be71 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/README @@ -0,0 +1,7 @@ + +To run this locally for testing/development purposes: + +1. Find a funsize generating task ID +2. docker run -t -e TASKCLUSTER_ROOT_URL="https://firefox-ci-tc.services.mozilla.com" -e SIGNING_CERT='nightly' -e MAR_CHANNEL_ID='firefox-mozilla-central' -e TASK_ID="${TASK_ID}" -e EXTRA_PARAMS="--arch=x86_64" funsize-update-generator /runme.sh + +The TASK_ID should be a recent "partials" Task. diff --git a/taskcluster/docker/funsize-update-generator/dep1.pubkey b/taskcluster/docker/funsize-update-generator/dep1.pubkey new file mode 100644 index 0000000000..927b2cc947 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/dep1.pubkey @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8Y6AS+xwKoXZl0X5qOKr +0I00xC4UN+IMjA1LIQoZ2GBkiqQF3q8v2nWTFE0+47+3NtP0l8tvsQY+LSYR4Fek +v2Vx4m/CAMKmWzW6Vtlj80y6rQ04V19l41bZXvCIBW5fm9sAvPgc7CngkcLySNqk +8vf57cUEpOmbsjSOCmK0j8hh03I1eWogpbAVEchSm1xN2sUJaVTvz5j8BfE6Vm0i +nN7V0zF+AOxzvntZIpfUqMZbHRiMkGn4l9rjia1Rz0qUc9RNCJkNocyKtQ2N2wnN +FjHpmK9x2V71cS1JQGhgLegrswPCAWY1lTmiLk9LweqGoVL0rqR4LCkb0VCaeSRe +6bUEYcU1ZQedE80zGKB3AfoC5br1shYY0xjmyRSCQ8m8WE60HzXhL8wczKrn5yoJ +iF6BxFwcYsvrWBPgIYVZLcqjODfR/M62o8yIfTC7yBcIdycJ0sWhB47dHAFxv1kc +wv8Ik9ftvDyupE8kwcl58fNOXz93j7IxMry/ey27NyYpESPOUNcjT8TP26FdGebg +4iJx0/LaYmaNUdchfBBlaYqGdH6ZGK0OeVxzHstGuG0gebm/igYcpaFxiQzvWijX +MIAU56s4g+yj7pSzT5/s9r8Gv+YhsNHKm4hnwLZaITV0lLMT5h/OZGseQTPMBnAR +hK3CIfcqG0I23hdwI29ZuUMCAwEAAQ== +-----END PUBLIC KEY----- diff --git a/taskcluster/docker/funsize-update-generator/nightly.pubkey b/taskcluster/docker/funsize-update-generator/nightly.pubkey new file mode 100644 index 0000000000..e51049844c --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/nightly.pubkey @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAth151NGY8PBzn0bii9Yc +AjYHZDwP9Lj1c3owG0zLqW2kPcdp86QTAcoYunHGYFFakNG3tooZhzwkMjZ1OrXc +ERjD6AuVSGIBdsKtKP4vLtMjDUteFN4K2+rveozcnYFZuTWEajGu8uoYsv4QgdEA +nTBC39j0J33xlfUR+XKuxzhxNrFX+fRFWuLDJrPziMcVA/mzf0gXlhtEsfV0HYyg +yWpHdIWww+llysD1QOQAHk94Ss8c/4BFXFxlwlLeNlB1ZqLm1LsNy0jUy9EHeO3C +H6eqmiFEbpdjlrkJdgR1NcTzeY/Qf/nhWH6BAZrSapQycF7OSLU+rFWMQUElSPLc +NVl7oNAAfSYLTvRjPGi+mJK3wGFQw1EpwQl+elE1oj4+sHvIVpDrLb6btpxfr1cZ +pR4Di/hkOIymxEDWvtUhOxUXnYbDKQSDcAHKM/xR3sdIAiVtVuL4hyBwlAqkQc2j +H+SmnCbazgnq5+dN4y5DjoOgbZQ/koE3s3bUzzMeIxaul9v4gMtGROw3PQ3OZcP0 +lgjPRhY+NeTnWMo2nGb4/eS6Cn2qFLfbEQjsj6pJJBNKfvK/gm1jXb3PgXXdf8+d +2xTPOX8QNpSK7C0w4vYlvSpYZlsx2cznEOV6LDqP0QHUnmd/k1xWRRGiQ7gtT+BV +Fn0h7JyTGmEdFu6l4OhS8hMCAwEAAQ== +-----END PUBLIC KEY----- diff --git a/taskcluster/docker/funsize-update-generator/release.pubkey b/taskcluster/docker/funsize-update-generator/release.pubkey new file mode 100644 index 0000000000..ec1103d828 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/release.pubkey @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxCHbY+fP3dvaP9XVbmK6 +i4rbqo72INEWgDSYbr/DIYfCSzHC9H8pU8dyjt+Nd8OtoUZtBD1N9fP7SlrvPZSI +ZSW4k0e9Ky5aV3Uy+ivamSvYszkhqdeP2y7MBu73XHKYONR9PnKa+ovmREwSEI+h +1e0ebm8zvF7Ndwx0mOeZkDu9SDkDGg4aj2xrJyBBOuGVjuctMZ6l1davANI5xiJ0 +GBEU3tR1gJs1T4vLBis5mEFn9y4kgyw/HrxmRYGnZL4fLb2fTI+pNW0Twu3KWwwi +LgLkkVrNWiHSk7YWqxjcg5IA3pQETQ17paTHoB5Mnkvuh6MkDXvRG5VgAHZAigr6 +fJMsasOUaBeos/cD1LDQEIObpetlxc0Fiu/lvUts0755otkhI+yv35+wUa6GJrsE +CsT7c/LaFtQXg06aGXbMLDn0bE/e+nw9KWT/rE1iYXMFkzrqoTeYJ+v7/fD/ywU8 +m8l4CZmXxzd/RogMrM3xl+j4ucAAltDQyL4yLySaIT05w5U8z2zJDEXFvpFDSRfF +K3kjLwGub7wNwaQDuh/msIUdavu4g+GNikCXAJ8AssLuYatyHoltd2tf+EIIDW3U +zzLpymnLo3cAz3IPfXyqVB+mcLcpqbHjl3hWms6l1wGtz6S4WqdrWs/KfzS5EyDK +r63xn1Rg/XFmR57EsFEXAZ8CAwEAAQ== +-----END PUBLIC KEY----- diff --git a/taskcluster/docker/funsize-update-generator/requirements.in b/taskcluster/docker/funsize-update-generator/requirements.in new file mode 100644 index 0000000000..3360c71690 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/requirements.in @@ -0,0 +1,7 @@ +aiohttp +awscli +mar +redo +requests +scriptworker +sh diff --git a/taskcluster/docker/funsize-update-generator/requirements.txt b/taskcluster/docker/funsize-update-generator/requirements.txt new file mode 100644 index 0000000000..c4ef0cfd0d --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/requirements.txt @@ -0,0 +1,663 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --generate-hashes --output-file=requirements.txt requirements.in +# +aiohttp==3.8.3 \ + --hash=sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8 \ + --hash=sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142 \ + --hash=sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18 \ + --hash=sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34 \ + --hash=sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a \ + --hash=sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033 \ + --hash=sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06 \ + --hash=sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4 \ + --hash=sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d \ + --hash=sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b \ + --hash=sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc \ + --hash=sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091 \ + --hash=sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d \ + --hash=sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85 \ + --hash=sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb \ + --hash=sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937 \ + --hash=sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf \ + --hash=sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1 \ + --hash=sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b \ + --hash=sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d \ + --hash=sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269 \ + --hash=sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da \ + --hash=sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346 \ + --hash=sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494 \ + --hash=sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697 \ + --hash=sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4 \ + --hash=sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585 \ + --hash=sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c \ + --hash=sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da \ + --hash=sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad \ + --hash=sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2 \ + --hash=sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6 \ + --hash=sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c \ + --hash=sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849 \ + --hash=sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa \ + --hash=sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b \ + --hash=sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb \ + --hash=sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7 \ + --hash=sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715 \ + --hash=sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76 \ + --hash=sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d \ + --hash=sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276 \ + --hash=sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6 \ + --hash=sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37 \ + --hash=sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb \ + --hash=sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d \ + --hash=sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c \ + --hash=sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446 \ + --hash=sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008 \ + --hash=sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342 \ + --hash=sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d \ + --hash=sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7 \ + --hash=sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061 \ + --hash=sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba \ + --hash=sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7 \ + --hash=sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290 \ + --hash=sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0 \ + --hash=sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d \ + --hash=sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8 \ + --hash=sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f \ + --hash=sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48 \ + --hash=sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502 \ + --hash=sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62 \ + --hash=sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9 \ + --hash=sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403 \ + --hash=sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77 \ + --hash=sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476 \ + --hash=sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e \ + --hash=sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96 \ + --hash=sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5 \ + --hash=sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784 \ + --hash=sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091 \ + --hash=sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b \ + --hash=sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97 \ + --hash=sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a \ + --hash=sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2 \ + --hash=sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9 \ + --hash=sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d \ + --hash=sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73 \ + --hash=sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017 \ + --hash=sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363 \ + --hash=sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c \ + --hash=sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d \ + --hash=sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618 \ + --hash=sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491 \ + --hash=sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b \ + --hash=sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca + # via + # -r requirements.in + # scriptworker + # taskcluster +aiomemoizettl==0.0.3 \ + --hash=sha256:07a6becac60f6cd2604b9f2b73bcd9a50079a0b7b55e2a4e45b1eec5a3ea9659 \ + --hash=sha256:0a80d2dc765e545263f515363b6700ec8cf86fa3968b529f56390b28e34f743d + # via scriptworker +aiosignal==1.3.1 \ + --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ + --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 + # via aiohttp +arrow==1.2.3 \ + --hash=sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1 \ + --hash=sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2 + # via scriptworker +asn1crypto==1.5.1 \ + --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ + --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 + # via mar +async-timeout==4.0.2 \ + --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ + --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c + # via + # aiohttp + # taskcluster +attrs==22.2.0 \ + --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \ + --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99 + # via + # aiohttp + # jsonschema +awscli==1.27.46 \ + --hash=sha256:276cef3cc89e6c1888eb327d4a2d7702105a49271b1e3e93472bcd9f02beb24c \ + --hash=sha256:a9b64b091db2edd13a611b4c4ec47fc2e7c67b3efe5ea840466f2138a9634c7b + # via -r requirements.in +botocore==1.29.46 \ + --hash=sha256:78bf25933e35eb6354a9e80fe156f86dce4d346a92afe364dfce25c17ab0639f \ + --hash=sha256:dbac2fde265f13beb9191ec3ff63b90b515e9ed63875edc3afbd72c5f585e48b + # via + # awscli + # s3transfer +certifi==2022.12.7 \ + --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ + --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 + # via requests +cffi==1.15.1 \ + --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ + --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ + --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ + --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ + --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ + --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ + --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ + --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ + --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ + --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ + --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ + --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ + --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ + --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ + --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ + --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ + --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ + --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ + --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ + --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ + --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ + --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ + --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ + --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ + --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ + --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ + --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ + --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ + --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ + --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ + --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ + --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ + --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ + --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ + --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ + --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ + --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ + --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ + --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ + --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ + --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ + --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ + --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ + --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ + --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ + --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ + --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ + --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ + --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ + --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ + --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ + --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ + --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ + --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ + --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ + --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ + --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ + --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ + --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ + --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ + --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ + --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ + --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ + --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 + # via cryptography +charset-normalizer==2.1.1 \ + --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \ + --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f + # via + # aiohttp + # requests +click==8.1.3 \ + --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ + --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 + # via mar +colorama==0.4.4 \ + --hash=sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b \ + --hash=sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2 + # via awscli +construct==2.10.68 \ + --hash=sha256:7b2a3fd8e5f597a5aa1d614c3bd516fa065db01704c72a1efaaeec6ef23d8b45 + # via mar +cryptography==39.0.0 \ + --hash=sha256:1a6915075c6d3a5e1215eab5d99bcec0da26036ff2102a1038401d6ef5bef25b \ + --hash=sha256:1ee1fd0de9851ff32dbbb9362a4d833b579b4a6cc96883e8e6d2ff2a6bc7104f \ + --hash=sha256:407cec680e811b4fc829de966f88a7c62a596faa250fc1a4b520a0355b9bc190 \ + --hash=sha256:50386acb40fbabbceeb2986332f0287f50f29ccf1497bae31cf5c3e7b4f4b34f \ + --hash=sha256:6f97109336df5c178ee7c9c711b264c502b905c2d2a29ace99ed761533a3460f \ + --hash=sha256:754978da4d0457e7ca176f58c57b1f9de6556591c19b25b8bcce3c77d314f5eb \ + --hash=sha256:76c24dd4fd196a80f9f2f5405a778a8ca132f16b10af113474005635fe7e066c \ + --hash=sha256:7dacfdeee048814563eaaec7c4743c8aea529fe3dd53127313a792f0dadc1773 \ + --hash=sha256:80ee674c08aaef194bc4627b7f2956e5ba7ef29c3cc3ca488cf15854838a8f72 \ + --hash=sha256:844ad4d7c3850081dffba91cdd91950038ee4ac525c575509a42d3fc806b83c8 \ + --hash=sha256:875aea1039d78557c7c6b4db2fe0e9d2413439f4676310a5f269dd342ca7a717 \ + --hash=sha256:887cbc1ea60786e534b00ba8b04d1095f4272d380ebd5f7a7eb4cc274710fad9 \ + --hash=sha256:ad04f413436b0781f20c52a661660f1e23bcd89a0e9bb1d6d20822d048cf2856 \ + --hash=sha256:bae6c7f4a36a25291b619ad064a30a07110a805d08dc89984f4f441f6c1f3f96 \ + --hash=sha256:c52a1a6f81e738d07f43dab57831c29e57d21c81a942f4602fac7ee21b27f288 \ + --hash=sha256:e0a05aee6a82d944f9b4edd6a001178787d1546ec7c6223ee9a848a7ade92e39 \ + --hash=sha256:e324de6972b151f99dc078defe8fb1b0a82c6498e37bff335f5bc6b1e3ab5a1e \ + --hash=sha256:e5d71c5d5bd5b5c3eebcf7c5c2bb332d62ec68921a8c593bea8c394911a005ce \ + --hash=sha256:f3ed2d864a2fa1666e749fe52fb8e23d8e06b8012e8bd8147c73797c506e86f1 \ + --hash=sha256:f671c1bb0d6088e94d61d80c606d65baacc0d374e67bf895148883461cd848de \ + --hash=sha256:f6c0db08d81ead9576c4d94bbb27aed8d7a430fa27890f39084c2d0e2ec6b0df \ + --hash=sha256:f964c7dcf7802d133e8dbd1565914fa0194f9d683d82411989889ecd701e8adf \ + --hash=sha256:fec8b932f51ae245121c4671b4bbc030880f363354b2f0e0bd1366017d891458 + # via + # mar + # pyjwt + # scriptworker +dictdiffer==0.9.0 \ + --hash=sha256:17bacf5fbfe613ccf1b6d512bd766e6b21fb798822a133aa86098b8ac9997578 \ + --hash=sha256:442bfc693cfcadaf46674575d2eba1c53b42f5e404218ca2c2ff549f2df56595 + # via scriptworker +docutils==0.16 \ + --hash=sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af \ + --hash=sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc + # via awscli +frozenlist==1.3.3 \ + --hash=sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c \ + --hash=sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f \ + --hash=sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a \ + --hash=sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784 \ + --hash=sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27 \ + --hash=sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d \ + --hash=sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3 \ + --hash=sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678 \ + --hash=sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a \ + --hash=sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483 \ + --hash=sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8 \ + --hash=sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf \ + --hash=sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99 \ + --hash=sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c \ + --hash=sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48 \ + --hash=sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5 \ + --hash=sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56 \ + --hash=sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e \ + --hash=sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1 \ + --hash=sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401 \ + --hash=sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4 \ + --hash=sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e \ + --hash=sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649 \ + --hash=sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a \ + --hash=sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d \ + --hash=sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0 \ + --hash=sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6 \ + --hash=sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d \ + --hash=sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b \ + --hash=sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6 \ + --hash=sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf \ + --hash=sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef \ + --hash=sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7 \ + --hash=sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842 \ + --hash=sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba \ + --hash=sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420 \ + --hash=sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b \ + --hash=sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d \ + --hash=sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332 \ + --hash=sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936 \ + --hash=sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816 \ + --hash=sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91 \ + --hash=sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420 \ + --hash=sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448 \ + --hash=sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411 \ + --hash=sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4 \ + --hash=sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32 \ + --hash=sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b \ + --hash=sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0 \ + --hash=sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530 \ + --hash=sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669 \ + --hash=sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7 \ + --hash=sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1 \ + --hash=sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5 \ + --hash=sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce \ + --hash=sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4 \ + --hash=sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e \ + --hash=sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2 \ + --hash=sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d \ + --hash=sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9 \ + --hash=sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642 \ + --hash=sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0 \ + --hash=sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703 \ + --hash=sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb \ + --hash=sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1 \ + --hash=sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13 \ + --hash=sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab \ + --hash=sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38 \ + --hash=sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb \ + --hash=sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb \ + --hash=sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81 \ + --hash=sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8 \ + --hash=sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd \ + --hash=sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4 + # via + # aiohttp + # aiosignal +github3-py==3.2.0 \ + --hash=sha256:09b72be1497d346b0968cde8360a0d6af79dc206d0149a63cd3ec86c65c377cc \ + --hash=sha256:a9016e40609c6f5cb9954dd188d08257dafd09c4da8c0e830a033fca00054b0d + # via scriptworker +idna==3.4 \ + --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ + --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 + # via + # requests + # yarl +immutabledict==2.2.3 \ + --hash=sha256:0e1e8a3f2b3ff062daa19795f947e9ec7a58add269d44e34d3ab4319e1343853 \ + --hash=sha256:a7b078ebcc4a58ddc73b55f808b26e7c8c2d5183fad325615112689e1a63e714 + # via scriptworker +jmespath==1.0.1 \ + --hash=sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 \ + --hash=sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe + # via botocore +json-e==4.5.0 \ + --hash=sha256:618a94aecc8b8bc7733d6cd0ee7b676e45675566625a38958aa8b30379d9758f \ + --hash=sha256:e733ce77b4acbbc2c48211057f8cb5af45999e6be4ce0f07585c5580df45826e + # via scriptworker +jsonschema==4.17.3 \ + --hash=sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d \ + --hash=sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6 + # via scriptworker +mar==3.2.0 \ + --hash=sha256:602f64a99fb2db578a3d76c9f1ac3efd29bd5f8f0ae8568759fb205162b017d0 \ + --hash=sha256:dd032cf72b65c62fb4e58e04a347076fda41f84265b41dd248098cc11e396c6e + # via -r requirements.in +mohawk==1.1.0 \ + --hash=sha256:3ed296a30453d0b724679e0fd41e4e940497f8e461a9a9c3b7f36e43bab0fa09 \ + --hash=sha256:d2a0e3ab10a209cc79e95e28f2dd54bd4a73fd1998ffe27b7ba0f962b6be9723 + # via taskcluster +multidict==6.0.4 \ + --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ + --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ + --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ + --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \ + --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \ + --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \ + --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \ + --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \ + --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \ + --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \ + --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \ + --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \ + --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \ + --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \ + --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \ + --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \ + --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \ + --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \ + --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \ + --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \ + --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \ + --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \ + --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \ + --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \ + --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \ + --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \ + --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \ + --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \ + --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \ + --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \ + --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \ + --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \ + --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \ + --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \ + --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \ + --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \ + --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \ + --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \ + --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \ + --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \ + --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \ + --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \ + --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \ + --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \ + --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \ + --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \ + --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \ + --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \ + --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \ + --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \ + --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \ + --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \ + --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \ + --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \ + --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \ + --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \ + --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \ + --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \ + --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \ + --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \ + --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \ + --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \ + --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \ + --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \ + --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \ + --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \ + --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \ + --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \ + --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \ + --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \ + --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \ + --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ + --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ + --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba + # via + # aiohttp + # yarl +pyasn1==0.4.8 \ + --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ + --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba + # via rsa +pycparser==2.21 \ + --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ + --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 + # via cffi +pyjwt[crypto]==2.6.0 \ + --hash=sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd \ + --hash=sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14 + # via github3-py +pyrsistent==0.19.3 \ + --hash=sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8 \ + --hash=sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440 \ + --hash=sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a \ + --hash=sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c \ + --hash=sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3 \ + --hash=sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393 \ + --hash=sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9 \ + --hash=sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da \ + --hash=sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf \ + --hash=sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64 \ + --hash=sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a \ + --hash=sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3 \ + --hash=sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98 \ + --hash=sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2 \ + --hash=sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8 \ + --hash=sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf \ + --hash=sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc \ + --hash=sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7 \ + --hash=sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28 \ + --hash=sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2 \ + --hash=sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b \ + --hash=sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a \ + --hash=sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64 \ + --hash=sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19 \ + --hash=sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1 \ + --hash=sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9 \ + --hash=sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c + # via jsonschema +python-dateutil==2.8.2 \ + --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ + --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 + # via + # arrow + # botocore + # github3-py + # taskcluster +pyyaml==5.4.1 \ + --hash=sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf \ + --hash=sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696 \ + --hash=sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393 \ + --hash=sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77 \ + --hash=sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922 \ + --hash=sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5 \ + --hash=sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8 \ + --hash=sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10 \ + --hash=sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc \ + --hash=sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018 \ + --hash=sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e \ + --hash=sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253 \ + --hash=sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347 \ + --hash=sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183 \ + --hash=sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541 \ + --hash=sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb \ + --hash=sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185 \ + --hash=sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc \ + --hash=sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db \ + --hash=sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa \ + --hash=sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46 \ + --hash=sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122 \ + --hash=sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b \ + --hash=sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63 \ + --hash=sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df \ + --hash=sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc \ + --hash=sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247 \ + --hash=sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6 \ + --hash=sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0 + # via + # awscli + # scriptworker +redo==2.0.4 \ + --hash=sha256:81066955041c853b0e6491eb65a0877dce45131c4cfa3d42d923fc2aa8f7a043 \ + --hash=sha256:c76e4c23ab2f8840261736a851323cd98493710e7a9d36a1058535dca501f293 + # via -r requirements.in +requests==2.28.1 \ + --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \ + --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349 + # via + # -r requirements.in + # github3-py + # taskcluster +rsa==4.7.2 \ + --hash=sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2 \ + --hash=sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9 + # via awscli +s3transfer==0.6.0 \ + --hash=sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd \ + --hash=sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947 + # via awscli +scriptworker==46.0.0 \ + --hash=sha256:94efa759e539f36079abad40db074e9b3c1945602716f7facdd82fe5b53aa6a9 \ + --hash=sha256:e0b0b88c9d722c06d7a5bf19eab4f6f282613b36d171ba950b5501d8ad198207 + # via -r requirements.in +sh==1.14.3 \ + --hash=sha256:e4045b6c732d9ce75d571c79f5ac2234edd9ae4f5fa9d59b09705082bdca18c7 + # via -r requirements.in +six==1.16.0 \ + --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ + --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 + # via + # mar + # mohawk + # python-dateutil +slugid==2.0.0 \ + --hash=sha256:a950d98b72691178bdd4d6c52743c4a2aa039207cf7a97d71060a111ff9ba297 \ + --hash=sha256:aec8b0e01c4ad32e38e12d609eab3ec912fd129aaf6b2ded0199b56a5f8fd67c + # via taskcluster +taskcluster==46.1.1 \ + --hash=sha256:1f49339b725a465d2ef4c9fb8bbe5ecaaf449707e5353fd6a5a453c776d057b6 \ + --hash=sha256:222c2511c9dfca4cc70ee64082c2b940e2e8513ae9df3adb7afedacac4ebc97d + # via scriptworker +taskcluster-urls==13.0.1 \ + --hash=sha256:5e25e7e6818e8877178b175ff43d2e6548afad72694aa125f404a7329ece0973 \ + --hash=sha256:b25e122ecec249c4299ac7b20b08db76e3e2025bdaeb699a9d444556de5fd367 \ + --hash=sha256:f66dcbd6572a6216ab65949f0fa0b91f2df647918028436c384e6af5cd12ae2b + # via taskcluster +uritemplate==4.1.1 \ + --hash=sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0 \ + --hash=sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e + # via github3-py +urllib3==1.26.13 \ + --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc \ + --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8 + # via + # botocore + # requests +yarl==1.8.2 \ + --hash=sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87 \ + --hash=sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89 \ + --hash=sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a \ + --hash=sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08 \ + --hash=sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996 \ + --hash=sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077 \ + --hash=sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901 \ + --hash=sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e \ + --hash=sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee \ + --hash=sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574 \ + --hash=sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165 \ + --hash=sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634 \ + --hash=sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229 \ + --hash=sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b \ + --hash=sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f \ + --hash=sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7 \ + --hash=sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf \ + --hash=sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89 \ + --hash=sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0 \ + --hash=sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1 \ + --hash=sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe \ + --hash=sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf \ + --hash=sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76 \ + --hash=sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951 \ + --hash=sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863 \ + --hash=sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06 \ + --hash=sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562 \ + --hash=sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6 \ + --hash=sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c \ + --hash=sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e \ + --hash=sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1 \ + --hash=sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3 \ + --hash=sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3 \ + --hash=sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778 \ + --hash=sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8 \ + --hash=sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2 \ + --hash=sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b \ + --hash=sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d \ + --hash=sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f \ + --hash=sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c \ + --hash=sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581 \ + --hash=sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918 \ + --hash=sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c \ + --hash=sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e \ + --hash=sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220 \ + --hash=sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37 \ + --hash=sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739 \ + --hash=sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77 \ + --hash=sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6 \ + --hash=sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42 \ + --hash=sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946 \ + --hash=sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5 \ + --hash=sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d \ + --hash=sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146 \ + --hash=sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a \ + --hash=sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83 \ + --hash=sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef \ + --hash=sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80 \ + --hash=sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588 \ + --hash=sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5 \ + --hash=sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2 \ + --hash=sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef \ + --hash=sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826 \ + --hash=sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05 \ + --hash=sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516 \ + --hash=sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0 \ + --hash=sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4 \ + --hash=sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2 \ + --hash=sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0 \ + --hash=sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd \ + --hash=sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8 \ + --hash=sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b \ + --hash=sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1 \ + --hash=sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c + # via aiohttp diff --git a/taskcluster/docker/funsize-update-generator/runme.sh b/taskcluster/docker/funsize-update-generator/runme.sh new file mode 100644 index 0000000000..62f888b995 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/runme.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +set -xe + +test "$TASK_ID" +test "$SIGNING_CERT" + +ARTIFACTS_DIR="/home/worker/artifacts" +mkdir -p "$ARTIFACTS_DIR" + +# Strip trailing / if present +TASKCLUSTER_ROOT_URL="${TASKCLUSTER_ROOT_URL%/}" +export TASKCLUSTER_ROOT_URL + +# duplicate the functionality of taskcluster-lib-urls, but in bash.. +queue_base="${TASKCLUSTER_ROOT_URL%/}/api/queue/v1" + +curl --location --retry 10 --retry-delay 10 -o /home/worker/task.json "$queue_base/task/$TASK_ID" + +# auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/ +# -> bucket of tc-gp-private-1d-us-east-1, path of releng/mbsdiff-cache/ +# Trailing slash is important, due to prefix permissions in S3. +S3_BUCKET_AND_PATH=$(jq -r '.scopes[] | select(contains ("auth:aws-s3"))' /home/worker/task.json | awk -F: '{print $4}') + +# Will be empty if there's no scope for AWS S3. +if [ -n "${S3_BUCKET_AND_PATH}" ] && getent hosts taskcluster +then + # Does this parse as we expect? + S3_PATH=${S3_BUCKET_AND_PATH#*/} + AWS_BUCKET_NAME=${S3_BUCKET_AND_PATH%/${S3_PATH}*} + test "${S3_PATH}" + test "${AWS_BUCKET_NAME}" + + set +x # Don't echo these. + secret_url="${TASKCLUSTER_PROXY_URL}/api/auth/v1/aws/s3/read-write/${AWS_BUCKET_NAME}/${S3_PATH}" + AUTH=$(curl "${secret_url}") + AWS_ACCESS_KEY_ID=$(echo "${AUTH}" | jq -r '.credentials.accessKeyId') + AWS_SECRET_ACCESS_KEY=$(echo "${AUTH}" | jq -r '.credentials.secretAccessKey') + AWS_SESSION_TOKEN=$(echo "${AUTH}" | jq -r '.credentials.sessionToken') + export AWS_ACCESS_KEY_ID + export AWS_SECRET_ACCESS_KEY + export AWS_SESSION_TOKEN + AUTH= + + if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then + # Pass the full bucket/path prefix, as the script just appends local files. + export MBSDIFF_HOOK="/home/worker/bin/mbsdiff_hook.sh -S ${S3_BUCKET_AND_PATH}" + fi + set -x +else + # disable caching + export MBSDIFF_HOOK= +fi + +# EXTRA_PARAMS is optional +# shellcheck disable=SC2086 +python3 /home/worker/bin/funsize.py \ + --artifacts-dir "$ARTIFACTS_DIR" \ + --task-definition /home/worker/task.json \ + --signing-cert "/home/worker/keys/${SIGNING_CERT}.pubkey" \ + $EXTRA_PARAMS diff --git a/taskcluster/docker/funsize-update-generator/scripts/funsize.py b/taskcluster/docker/funsize-update-generator/scripts/funsize.py new file mode 100644 index 0000000000..84fd2fbd0b --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/scripts/funsize.py @@ -0,0 +1,471 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import asyncio +import configparser +import json +import logging +import os +import shutil +import tempfile +import time +from contextlib import AsyncExitStack +from distutils.util import strtobool +from pathlib import Path + +import aiohttp +from mardor.reader import MarReader +from mardor.signing import get_keysize +from scriptworker.utils import get_hash, retry_async + +log = logging.getLogger(__name__) + + +ROOT_URL = os.environ.get( + "TASKCLUSTER_ROOT_URL", "https://firefox-ci-tc.services.mozilla.com" +) +QUEUE_PREFIX = f"{ROOT_URL}/api/queue/" +ALLOWED_URL_PREFIXES = ( + "http://download.cdn.mozilla.net/pub/mozilla.org/firefox/nightly/", + "http://download.cdn.mozilla.net/pub/firefox/nightly/", + "http://ftp.mozilla.org/", + "http://download.mozilla.org/", + "https://archive.mozilla.org/", + "http://archive.mozilla.org/", + QUEUE_PREFIX, +) +STAGING_URL_PREFIXES = ( + "http://ftp.stage.mozaws.net/", + "https://ftp.stage.mozaws.net/", +) + +BCJ_OPTIONS = { + "x86": ["--x86"], + "x86_64": ["--x86"], + "aarch64": [], + # macOS Universal Builds + "macos-x86_64-aarch64": [], +} + + +def verify_signature(mar, cert): + log.info("Checking %s signature", mar) + with open(mar, "rb") as mar_fh: + m = MarReader(mar_fh) + if not m.verify(verify_key=cert): + raise ValueError( + "MAR Signature invalid: %s (%s) against %s", mar, m.signature_type, cert + ) + + +def process_arguments(): + parser = argparse.ArgumentParser() + parser.add_argument("--artifacts-dir", required=True) + parser.add_argument("--signing-cert", type=argparse.FileType("rb"), required=True) + parser.add_argument("--task-definition", required=True, type=argparse.FileType("r")) + parser.add_argument( + "--allow-staging-prefixes", + action="store_true", + default=strtobool(os.environ.get("FUNSIZE_ALLOW_STAGING_PREFIXES", "false")), + help="Allow files from staging buckets.", + ) + parser.add_argument( + "-q", + "--quiet", + dest="log_level", + action="store_const", + const=logging.INFO, + default=logging.DEBUG, + ) + parser.add_argument( + "--arch", + type=str, + required=True, + choices=BCJ_OPTIONS.keys(), + help="The archtecture you are building.", + ) + return parser.parse_args() + + +def validate_mar_channel_id(mar, channel_ids): + log.info("Checking %s for MAR_CHANNEL_ID %s", mar, channel_ids) + # We may get a string with a list representation, or a single entry string. + channel_ids = set(channel_ids.split(",")) + + product_info = MarReader(open(mar, "rb")).productinfo + if not isinstance(product_info, tuple): + raise ValueError( + "Malformed product information in mar: {}".format(product_info) + ) + + found_channel_ids = set(product_info[1].split(",")) + + if not found_channel_ids.issubset(channel_ids): + raise ValueError( + "MAR_CHANNEL_ID mismatch, {} not in {}".format(product_info[1], channel_ids) + ) + + log.info("%s channel %s in %s", mar, product_info[1], channel_ids) + + +async def retry_download(*args, semaphore=None, **kwargs): # noqa: E999 + """Retry download() calls.""" + async with AsyncExitStack() as stack: + if semaphore: + await stack.enter_async_context(semaphore) + await retry_async( + download, + retry_exceptions=(aiohttp.ClientError, asyncio.TimeoutError), + args=args, + kwargs=kwargs, + ) + + +def verify_allowed_url(mar, allowed_url_prefixes): + if not any(mar.startswith(prefix) for prefix in allowed_url_prefixes): + raise ValueError( + "{mar} is not in allowed URL prefixes: {p}".format( + mar=mar, p=allowed_url_prefixes + ) + ) + + +async def download(url, dest, mode=None): # noqa: E999 + log.info("Downloading %s to %s", url, dest) + chunk_size = 4096 + bytes_downloaded = 0 + async with aiohttp.ClientSession(raise_for_status=True) as session: + start = time.time() + async with session.get(url, timeout=120) as resp: + # Additional early logging for download timeouts. + log.debug("Fetching from url %s", resp.url) + for history in resp.history: + log.debug("Redirection history: %s", history.url) + log.debug("Headers for %s: %s", resp.url, resp.headers) + if "Content-Length" in resp.headers: + log.debug( + "Content-Length expected for %s: %s", + url, + resp.headers["Content-Length"], + ) + log_interval = chunk_size * 1024 + with open(dest, "wb") as fd: + while True: + chunk = await resp.content.read(chunk_size) + if not chunk: + break + fd.write(chunk) + bytes_downloaded += len(chunk) + log_interval -= len(chunk) + if log_interval <= 0: + log.debug("Bytes downloaded for %s: %d", url, bytes_downloaded) + log_interval = chunk_size * 1024 + end = time.time() + log.info( + "Downloaded %s, %s bytes in %s seconds: sha256:%s", + url, + bytes_downloaded, + int(end - start), + get_hash(dest, hash_alg="sha256"), + ) + if mode: + log.info("chmod %o %s", mode, dest) + os.chmod(dest, mode) + + +async def download_buildsystem_bits(partials_config, downloads, tools_dir): + """Download external tools needed to make partials.""" + + # We're making the assumption that the "to" mar is the same for all, + # as that's the way this task is currently used. + to_url = extract_download_urls(partials_config, mar_type="to").pop() + + repo = get_option( + downloads[to_url]["extracted_path"], + filename="platform.ini", + section="Build", + option="SourceRepository", + ) + revision = get_option( + downloads[to_url]["extracted_path"], + filename="platform.ini", + section="Build", + option="SourceStamp", + ) + + urls = { + "make_incremental_update.sh": f"{repo}/raw-file/{revision}/tools/" + "update-packaging/make_incremental_update.sh", + "common.sh": f"{repo}/raw-file/{revision}/tools/update-packaging/common.sh", + "mar": "https://archive.mozilla.org/pub/mozilla.org/firefox/nightly/" + "latest-mozilla-central/mar-tools/linux64/mar", + "mbsdiff": "https://archive.mozilla.org/pub/mozilla.org/firefox/nightly/" + "latest-mozilla-central/mar-tools/linux64/mbsdiff", + } + for filename, url in urls.items(): + filename = tools_dir / filename + await retry_download(url, dest=filename, mode=0o755) + + +def find_file(directory, filename): + log.debug("Searching for %s in %s", filename, directory) + return next(Path(directory).rglob(filename)) + + +def get_option(directory, filename, section, option): + log.info("Extracting [%s]: %s from %s/**/%s", section, option, directory, filename) + f = find_file(directory, filename) + config = configparser.ConfigParser() + config.read(f) + rv = config.get(section, option) + log.info("Found %s", rv) + return rv + + +def extract_download_urls(partials_config, mar_type): + """Extract a set of urls to download from the task configuration. + + mar_type should be one of "from", "to" + """ + return {definition[f"{mar_type}_mar"] for definition in partials_config} + + +async def download_and_verify_mars(partials_config, allowed_url_prefixes, signing_cert): + """Download, check signature, channel ID and unpack MAR files.""" + # Separate these categories so we can opt to perform checks on only 'to' downloads. + from_urls = extract_download_urls(partials_config, mar_type="from") + to_urls = extract_download_urls(partials_config, mar_type="to") + tasks = list() + downloads = dict() + + semaphore = asyncio.Semaphore(2) # Magic 2 to reduce network timeout errors. + for url in from_urls.union(to_urls): + verify_allowed_url(url, allowed_url_prefixes) + downloads[url] = { + "download_path": Path(tempfile.mkdtemp()) / Path(url).name, + } + tasks.append( + retry_download(url, downloads[url]["download_path"], semaphore=semaphore) + ) + + await asyncio.gather(*tasks) + + for url in downloads: + # Verify signature, but not from an artifact as we don't + # depend on the signing task + if not os.getenv("MOZ_DISABLE_MAR_CERT_VERIFICATION") and not url.startswith( + QUEUE_PREFIX + ): + verify_signature(downloads[url]["download_path"], signing_cert) + + # Only validate the target channel ID, as we update from beta->release + if url in to_urls: + validate_mar_channel_id( + downloads[url]["download_path"], os.environ["MAR_CHANNEL_ID"] + ) + + downloads[url]["extracted_path"] = tempfile.mkdtemp() + with open(downloads[url]["download_path"], "rb") as mar_fh: + log.info( + "Unpacking %s into %s", + downloads[url]["download_path"], + downloads[url]["extracted_path"], + ) + m = MarReader(mar_fh) + m.extract(downloads[url]["extracted_path"]) + + return downloads + + +async def run_command(cmd, cwd="/", env=None, label=None, silent=False): + log.info("Running: %s", cmd) + if not env: + env = dict() + process = await asyncio.create_subprocess_shell( + cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + cwd=cwd, + env=env, + ) + if label: + label = "{}: ".format(label) + else: + label = "" + + async def read_output(stream, label, printcmd): + while True: + line = await stream.readline() + if line == b"": + break + printcmd("%s%s", label, line.decode("utf-8").rstrip()) + + if silent: + await process.wait() + else: + await asyncio.gather( + read_output(process.stdout, label, log.info), + read_output(process.stderr, label, log.warning), + ) + await process.wait() + + +async def generate_partial(from_dir, to_dir, dest_mar, mar_data, tools_dir, arch): + log.info("Generating partial %s", dest_mar) + env = os.environ.copy() + env["LC_ALL"] = "C" + env["MAR"] = tools_dir / "mar" + env["MBSDIFF"] = tools_dir / "mbsdiff" + if arch: + env["BCJ_OPTIONS"] = " ".join(BCJ_OPTIONS[arch]) + env["MOZ_PRODUCT_VERSION"] = mar_data["version"] + env["MAR_CHANNEL_ID"] = mar_data["MAR_CHANNEL_ID"] + env["BRANCH"] = mar_data["branch"] + + make_incremental_update = tools_dir / "make_incremental_update.sh" + cmd = f"{make_incremental_update} {dest_mar} {from_dir} {to_dir}" + + await run_command(cmd, cwd=dest_mar.parent, env=env, label=dest_mar.name) + validate_mar_channel_id(dest_mar, mar_data["MAR_CHANNEL_ID"]) + + +async def manage_partial( + partial_def, artifacts_dir, tools_dir, downloads, semaphore, arch=None +): + from_url = partial_def["from_mar"] + to_url = partial_def["to_mar"] + from_path = downloads[from_url]["extracted_path"] + to_path = downloads[to_url]["extracted_path"] + + mar_data = { + "MAR_CHANNEL_ID": os.environ["MAR_CHANNEL_ID"], + "version": get_option( + to_path, filename="application.ini", section="App", option="Version" + ), + "appName": get_option( + from_path, filename="application.ini", section="App", option="Name" + ), + # Use Gecko repo and rev from platform.ini, not application.ini + "repo": get_option( + to_path, filename="platform.ini", section="Build", option="SourceRepository" + ), + "revision": get_option( + to_path, filename="platform.ini", section="Build", option="SourceStamp" + ), + "locale": partial_def["locale"], + "from_mar": partial_def["from_mar"], + "from_size": os.path.getsize(downloads[from_url]["download_path"]), + "from_hash": get_hash(downloads[from_url]["download_path"], hash_alg="sha512"), + "from_buildid": get_option( + from_path, filename="application.ini", section="App", option="BuildID" + ), + "to_mar": partial_def["to_mar"], + "to_size": os.path.getsize(downloads[to_url]["download_path"]), + "to_hash": get_hash(downloads[to_url]["download_path"], hash_alg="sha512"), + "to_buildid": get_option( + to_path, filename="application.ini", section="App", option="BuildID" + ), + "mar": partial_def["dest_mar"], + } + # if branch not set explicitly use repo-name + mar_data["branch"] = partial_def.get("branch", Path(mar_data["repo"]).name) + + for field in ( + "update_number", + "previousVersion", + "previousBuildNumber", + "toVersion", + "toBuildNumber", + ): + if field in partial_def: + mar_data[field] = partial_def[field] + + dest_mar = Path(artifacts_dir) / mar_data["mar"] + + async with semaphore: + await generate_partial(from_path, to_path, dest_mar, mar_data, tools_dir, arch) + + mar_data["size"] = os.path.getsize(dest_mar) + mar_data["hash"] = get_hash(dest_mar, hash_alg="sha512") + return mar_data + + +async def async_main(args, signing_cert): + tasks = [] + + allowed_url_prefixes = list(ALLOWED_URL_PREFIXES) + if args.allow_staging_prefixes: + allowed_url_prefixes += STAGING_URL_PREFIXES + + task = json.load(args.task_definition) + + downloads = await download_and_verify_mars( + task["extra"]["funsize"]["partials"], allowed_url_prefixes, signing_cert + ) + + tools_dir = Path(tempfile.mkdtemp()) + await download_buildsystem_bits( + partials_config=task["extra"]["funsize"]["partials"], + downloads=downloads, + tools_dir=tools_dir, + ) + + # May want to consider os.cpu_count() if we ever run on osx/win. + # sched_getaffinity is the list of cores we can run on, not the total. + semaphore = asyncio.Semaphore(len(os.sched_getaffinity(0))) + for definition in task["extra"]["funsize"]["partials"]: + tasks.append( + asyncio.ensure_future( + retry_async( + manage_partial, + retry_exceptions=(aiohttp.ClientError, asyncio.TimeoutError), + kwargs=dict( + partial_def=definition, + artifacts_dir=args.artifacts_dir, + tools_dir=tools_dir, + arch=args.arch, + downloads=downloads, + semaphore=semaphore, + ), + ) + ) + ) + manifest = await asyncio.gather(*tasks) + + for url in downloads: + downloads[url]["download_path"].unlink() + shutil.rmtree(downloads[url]["extracted_path"]) + shutil.rmtree(tools_dir) + + return manifest + + +def main(): + args = process_arguments() + + logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s") + log.setLevel(args.log_level) + + signing_cert = args.signing_cert.read() + assert get_keysize(signing_cert) == 4096 + + artifacts_dir = Path(args.artifacts_dir) + if not artifacts_dir.exists(): + artifacts_dir.mkdir() + + loop = asyncio.get_event_loop() + manifest = loop.run_until_complete(async_main(args, signing_cert)) + loop.close() + + manifest_file = artifacts_dir / "manifest.json" + with open(manifest_file, "w") as fp: + json.dump(manifest, fp, indent=2, sort_keys=True) + + log.debug("{}".format(json.dumps(manifest, indent=2, sort_keys=True))) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh b/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh new file mode 100755 index 0000000000..965d938247 --- /dev/null +++ b/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh @@ -0,0 +1,157 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# +# This tool contains functions that are to be used to handle/enable funsize +# Author: Mihai Tabara +# + +HOOK= +AWS_BUCKET_NAME= +LOCAL_CACHE_DIR= + +# Don't cache files smaller than this, as it's slower with S3 +# Bug 1437473 +CACHE_THRESHOLD=500000 + +S3_CACHE_HITS=0 +S3_CACHE_MISSES=0 + +getsha512(){ + openssl sha512 "${1}" | awk '{print $2}' +} + +print_usage(){ + echo "$(basename "$0") [-S S3-BUCKET-NAME] [-c LOCAL-CACHE-DIR-PATH] [-g] [-u] PATH-FROM-URL PATH-TO-URL PATH-PATCH" + echo "Script that saves/retrieves from cache presumptive patches as args" + echo "" + echo "-A SERVER-URL - host where to send the files" + echo "-c LOCAL-CACHE-DIR-PATH local path to which patches are cached" + echo "-g pre hook - tests whether patch already in cache" + echo "-u post hook - upload patch to cache for future use" + echo "" + echo "PATH-FROM-URL : path on disk for source file" + echo "PATH-TO-URL : path on disk for destination file" + echo "PATH-PATCH : path on disk for patch between source and destination" +} + +upload_patch(){ + if [ "$(stat -c "%s" "$2")" -lt ${CACHE_THRESHOLD} ] + then + return 0 + fi + sha_from=$(getsha512 "$1") + sha_to=$(getsha512 "$2") + patch_path="$3" + patch_filename="$(basename "$3")" + + # save to local cache first + if [ -n "$LOCAL_CACHE_DIR" ]; then + local_cmd="mkdir -p "$LOCAL_CACHE_DIR/$sha_from"" + if $local_cmd >&2; then + cp -avf "${patch_path}" "$LOCAL_CACHE_DIR/$sha_from/$sha_to" + echo "${patch_path} saved on local cache." + fi + fi + + if [ -n "${AWS_BUCKET_NAME}" ]; then + BUCKET_PATH="s3://${AWS_BUCKET_NAME}${sha_from}/${sha_to}/${patch_filename}" + if aws s3 cp "${patch_path}" "${BUCKET_PATH}"; then + echo "${patch_path} saved on s://${AWS_BUCKET_NAME}" + return 0 + fi + echo "${patch_path} failed to be uploaded to s3://${AWS_BUCKET_NAME}" + return 1 + fi + return 0 +} + +get_patch(){ + # $1 and $2 are the /path/to/filename + if [ "$(stat -c "%s" "$2")" -lt ${CACHE_THRESHOLD} ] + then + return 1 + fi + sha_from=$(getsha512 "$1") + sha_to=$(getsha512 "$2") + destination_file="$3" + s3_filename="$(basename "$3")" + + # Try to retrieve from local cache first. + if [ -n "$LOCAL_CACHE_DIR" ]; then + if [ -r "$LOCAL_CACHE_DIR/$sha_from/$sha_to" ]; then + cp -avf "$LOCAL_CACHE_DIR/$sha_from/$sha_to" "$destination_file" + echo "Successful retrieved ${destination_file} from local cache." + return 0 + fi + fi + # If not in the local cache, we might find it remotely. + + if [ -n "${AWS_BUCKET_NAME}" ]; then + BUCKET_PATH="s3://${AWS_BUCKET_NAME}${sha_from}/${sha_to}/${s3_filename}" + if aws s3 ls "${BUCKET_PATH}"; then + ((S3_CACHE_HITS++)) + echo "s3 cache hit for ${s3_filename} (${S3_CACHE_HITS} total hits)" + if aws s3 cp "${BUCKET_PATH}" "${destination_file}"; then + echo "Successful retrieved ${destination_file} from s3://${AWS_BUCKET_NAME}" + return 0 + else + echo "Failed to retrieve ${destination_file} from s3://${AWS_BUCKET_NAME}" + return 1 + fi + # Not found, fall through to default error + else + ((S3_CACHE_MISSES++)) + echo "s3 cache miss for ${s3_filename} (${S3_CACHE_MISSES} total misses)" + fi + fi + return 1 +} + +OPTIND=1 + +while getopts ":S:c:gu" option; do + case $option in + S) + # This will probably be bucketname/path/prefix but we can use it either way + AWS_BUCKET_NAME="$OPTARG" + # Ensure trailing slash is there. + if [[ ! $AWS_BUCKET_NAME =~ .*/$ ]]; then + AWS_BUCKET_NAME="${AWS_BUCKET_NAME}/" + fi + ;; + c) + LOCAL_CACHE_DIR="$OPTARG" + ;; + g) + HOOK="PRE" + ;; + u) + HOOK="POST" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + print_usage + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + print_usage + exit 1 + ;; + *) + echo "Unimplemented option: -$OPTARG" >&2 + print_usage + exit 1 + ;; + esac +done +shift $((OPTIND-1)) + +if [ "$HOOK" == "PRE" ]; then + get_patch "$1" "$2" "$3" +elif [ "$HOOK" == "POST" ]; then + upload_patch "$1" "$2" "$3" +fi diff --git a/taskcluster/docker/gdb-test/Dockerfile b/taskcluster/docker/gdb-test/Dockerfile new file mode 100644 index 0000000000..d00504cdd1 --- /dev/null +++ b/taskcluster/docker/gdb-test/Dockerfile @@ -0,0 +1,15 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +RUN apt-get update && \ + apt-get install gdb diff --git a/taskcluster/docker/github-sync/Dockerfile b/taskcluster/docker/github-sync/Dockerfile new file mode 100644 index 0000000000..bff131ad7b --- /dev/null +++ b/taskcluster/docker/github-sync/Dockerfile @@ -0,0 +1,14 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Kartikaya Gupta + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache +VOLUME /builds/worker/.ghsync + +ADD prepare.sh /setup/prepare-docker.sh +ADD requirements.txt /setup/requirements.txt +RUN /bin/bash /setup/prepare-docker.sh /setup/requirements.txt && rm -R /setup + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/github-sync/prepare.sh b/taskcluster/docker/github-sync/prepare.sh new file mode 100755 index 0000000000..8efdec2e27 --- /dev/null +++ b/taskcluster/docker/github-sync/prepare.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +set -o errexit +set -o nounset +set -o pipefail +set -o xtrace + +test "$(whoami)" == 'root' + +# Install stuff we need +apt-get -y update +apt-get install -y \ + cmake \ + curl \ + gcc \ + git \ + g++ \ + libffi-dev \ + libgit2-dev \ + libssl-dev \ + python3 \ + python3-dev \ + python3-pip \ + python3-setuptools + +# Python packages +pip3 install -r "$1" diff --git a/taskcluster/docker/github-sync/requirements.txt b/taskcluster/docker/github-sync/requirements.txt new file mode 100644 index 0000000000..13fd42681d --- /dev/null +++ b/taskcluster/docker/github-sync/requirements.txt @@ -0,0 +1,3 @@ +requests == 2.21.0 +pygit2 == 1.11.1 +python-hglib == 2.6.1 diff --git a/taskcluster/docker/image_builder/Dockerfile b/taskcluster/docker/image_builder/Dockerfile new file mode 100644 index 0000000000..ad38a48c49 --- /dev/null +++ b/taskcluster/docker/image_builder/Dockerfile @@ -0,0 +1,99 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +FROM golang:1.14 as skopeo + +WORKDIR /go/src/ +RUN ["git", "clone", "--no-checkout", "--depth=1", "--branch=v1.1.1", "https://github.com/containers/skopeo", "."] +RUN ["git", "checkout", "67abbb3cefbdc876447583d5ea45e76bf441eba7"] +ENV GO111MODULE=on CGO_ENABLED=0 +RUN ["go", "build", \ + "-mod=vendor", "-o", "out/skopeo", \ + "-tags", "exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp", \ + # Set unixTempDirForBigFiles so skopeo will extract in a directory hidden by kaniko + # We create the directory below. + "-ldflags", " -X github.com/containers/image/v5/internal/tmpdir.unixTempDirForBigFiles=/workspace/tmp -X github.com/containers/image/v5/signature.systemDefaultPolicyPath=/kaniko/containers/policy.json -extldflags \"-static\" -w -s", \ + "./cmd/skopeo"] + +FROM golang:1.14 as kaniko +WORKDIR /go/src/ +RUN ["git", "clone", "--no-checkout", "--depth=1", "--branch=v1.0.0", "https://github.com/GoogleContainerTools/kaniko", "."] +RUN ["git", "checkout", "146ec6a9cd6f87b4a12e8119ded575d5edca35ac"] +RUN ["make"] + +# Build the `build-image` command as a static binary using musl +# The setup is loosely based on a stripped down version of +# https://github.com/emk/rust-musl-builder/blob/master/Dockerfile +FROM debian:buster as build-image + +COPY apt.conf /etc/apt/apt.conf.d/99taskcluster + +RUN apt-get update && \ + apt-get install \ + build-essential \ + ca-certificates \ + curl \ + musl-dev \ + musl-tools \ + && \ + useradd rust --user-group --create-home --shell /bin/bash + +# Run all further code as user `rust`, and create our working directories +# as the appropriate user. +USER rust + +# Set up our path with all our binary directories, including those for the +# musl-gcc toolchain and for our Rust toolchain. +ENV PATH=/home/rust/.cargo/bin:$PATH + +# The Rust toolchain to use when building our image. Set by `hooks/build`. +ENV TOOLCHAIN=1.42.0 \ + TARGET=x86_64-unknown-linux-musl + +# Install our Rust toolchain and the `musl` target. We patch the +# command-line we pass to the installer so that it won't attempt to +# interact with the user or fool around with TTYs. We also set the default +# `--target` to musl so that our users don't need to keep overriding it +# manually. +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- -y \ + --profile minimal \ + --default-toolchain $TOOLCHAIN \ + --target $TARGET + +# Expect our source code to live in /home/rust/src. We'll run the build as +# user `rust`, which will be uid 1000, gid 1000 outside the container. +RUN mkdir -p /home/rust/src +WORKDIR /home/rust/src +# Add our source code. +ADD --chown=rust:rust build-image/ ./ + +# --out-dir is not yet stable +ENV RUSTC_BOOTSTRAP=1 +# Build our application. +RUN ["cargo", "build", "--target", "x86_64-unknown-linux-musl", "--out-dir=bin", "--release", "-Zunstable-options"] + +FROM scratch as empty + +FROM scratch + +COPY --from=skopeo /go/src/out/skopeo /kaniko-bootstrap/skopeo +COPY --from=kaniko /go/src/out/executor /kaniko-bootstrap/executor +COPY --from=build-image \ + /home/rust/src/bin/build-image \ + /kaniko-bootstrap/build-image + +ADD https://mkcert.org/generate/ /kaniko-bootstrap/ssl/certs/ca-certificats.crt +ENV SSL_CERT_DIR=/kaniko/ssl/certs + +ADD policy.json /kaniko-bootstrap/containers/policy.json + +ENV HOME /root +ENV USER /root +WORKDIR /workspace + +ENV PATH /usr/local/bin:/kaniko + +VOLUME /workspace +ENTRYPOINT ["/kaniko-bootstrap/build-image"] diff --git a/taskcluster/docker/image_builder/VERSION b/taskcluster/docker/image_builder/VERSION new file mode 100644 index 0000000000..fcdb2e109f --- /dev/null +++ b/taskcluster/docker/image_builder/VERSION @@ -0,0 +1 @@ +4.0.0 diff --git a/taskcluster/docker/image_builder/apt.conf b/taskcluster/docker/image_builder/apt.conf new file mode 100644 index 0000000000..84c0cf10ef --- /dev/null +++ b/taskcluster/docker/image_builder/apt.conf @@ -0,0 +1,5 @@ +quiet "true"; +APT::Get::Assume-Yes "true"; +APT::Install-Recommends "false"; +Acquire::Check-Valid-Until "false"; +Acquire::Retries "5"; diff --git a/taskcluster/docker/image_builder/build-image/Cargo.lock b/taskcluster/docker/image_builder/build-image/Cargo.lock new file mode 100644 index 0000000000..7e07920591 --- /dev/null +++ b/taskcluster/docker/image_builder/build-image/Cargo.lock @@ -0,0 +1,1085 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "anyhow" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "build-image" +version = "0.1.0" +dependencies = [ + "anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", + "envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd 0.5.3+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bumpalo" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "loom 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "dtoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "either" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "encoding_rs" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "envy" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fs_extra" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-channel" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-io" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-task" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-util" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "generator" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "h2" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hermit-abi" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "httparse" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hyper" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hyper-rustls" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "indexmap" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "jobserver" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "js-sys" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.71" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "loom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "generator 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mime_guess" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "net2" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hermit-abi 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "once_cell" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pin-project" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-hack" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-nested" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "reqwest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-futures 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki-roots 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winreg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ring" +version = "0.16.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustls" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)", + "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scoped-tls" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_urlencoded" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "socket2" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tinyvec" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tokio" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-rustls" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tower-service" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "url" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.64" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "web-sys" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "webpki" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "webpki-roots" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "zstd" +version = "0.5.3+zstd.1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "zstd-safe 2.0.5+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "zstd-safe" +version = "2.0.5+zstd.1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", + "zstd-sys 1.4.17+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "zstd-sys" +version = "1.4.17+zstd.1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f" +"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" +"checksum base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +"checksum bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "118cf036fbb97d0816e3c34b2d7a1e8cfc60f68fcf63d550ddbe9bd5f59c213b" +"checksum cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "77c1f1d60091c1b73e2b1f4560ab419204b178e625fa945ded7b660becd2bd46" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum encoding_rs 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171" +"checksum envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f938a4abd5b75fe3737902dbc2e79ca142cc1526827a9e40b829a086758531a9" +"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +"checksum futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +"checksum futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" +"checksum futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +"checksum futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" +"checksum futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +"checksum generator 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "add72f17bb81521258fcc8a7a3245b1e184e916bfbe34f0ea89558f440df5c68" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum h2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "79b7246d7e4b979c03fa093da39cfb3617a96bbeee6310af63991668d7e843ff" +"checksum hermit-abi 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b9586eedd4ce6b3c498bc3b4dd92fc9f11166aa908a914071953768066c67909" +"checksum http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +"checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +"checksum hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a6e7655b9594024ad0ee439f3b5a7299369dc2a3f459b47c696f9ff676f9aa1f" +"checksum hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac965ea399ec3a25ac7d13b8affd4b8f39325cca00858ddf5eb29b79e6b14b08" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +"checksum indexmap 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c398b2b113b55809ceb9ee3e753fcbac793f1956663f3c36549c1346015c2afe" +"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +"checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +"checksum jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +"checksum js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b9172132a62451e56142bff9afc91c8e4a4500aa5b847da36815b63bfda916" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)" = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum loom 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecc775857611e1df29abba5c41355cdf540e7e9d4acfdf0f355eefee82330b7" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +"checksum mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" +"checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" +"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +"checksum pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17" +"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7" +"checksum pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" +"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +"checksum proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)" = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4" +"checksum proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" +"checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" +"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum reqwest 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3b82c9238b305f26f53443e3a4bc8528d64b8d0bee408ec949eb7bf5635ec680" +"checksum ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)" = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" +"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" +"checksum sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3" +"checksum serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e" +"checksum serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3" +"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" +"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +"checksum syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "e8d5d96e8cbb005d6959f119f773bfaebb5684296108fb32600c00cde305b2cd" +"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +"checksum tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed" +"checksum tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d099fa27b9702bed751524694adbe393e18b36b204da91eb1cbbbbb4a5ee2d58" +"checksum tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4" +"checksum tokio-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" +"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +"checksum untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +"checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +"checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +"checksum wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "6a634620115e4a229108b71bde263bb4220c483b3f07f5ba514ee8d15064c4c2" +"checksum wasm-bindgen-backend 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "3e53963b583d18a5aa3aaae4b4c1cb535218246131ba22a71f05b518098571df" +"checksum wasm-bindgen-futures 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dba48d66049d2a6cc8488702e7259ab7afc9043ad0dc5448444f46f2a453b362" +"checksum wasm-bindgen-macro 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "3fcfd5ef6eec85623b4c6e844293d4516470d8f19cd72d0d12246017eb9060b8" +"checksum wasm-bindgen-macro-support 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "9adff9ee0e94b926ca81b57f57f86d5545cdcb1d259e21ec9bdd95b901754c75" +"checksum wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7b90ea6c632dd06fd765d44542e234d5e63d9bb917ecd64d79778a13bd79ae" +"checksum web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)" = "863539788676619aac1a23e2df3655e96b32b0e05eb72ca34ba045ad573c625d" +"checksum webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" +"checksum webpki-roots 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum winreg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +"checksum zstd 0.5.3+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8" +"checksum zstd-safe 2.0.5+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055" +"checksum zstd-sys 1.4.17+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01b" diff --git a/taskcluster/docker/image_builder/build-image/Cargo.toml b/taskcluster/docker/image_builder/build-image/Cargo.toml new file mode 100644 index 0000000000..be42fe1e34 --- /dev/null +++ b/taskcluster/docker/image_builder/build-image/Cargo.toml @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +[package] +name = "build-image" +version = "0.1.0" +authors = ["Tom Prince "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +reqwest = { version= "0.10.4", features = ["rustls-tls", "blocking"], default-features = false} +zstd = "0.5.1" +url = "2.1.1" +anyhow = "1.0.27" +serde = { version = "1.0.105", features = ["derive"]} +serde_json = "1.0.50" +envy = "0.4.1" +fs_extra = "1.1" + +[workspace] diff --git a/taskcluster/docker/image_builder/build-image/src/config.rs b/taskcluster/docker/image_builder/build-image/src/config.rs new file mode 100644 index 0000000000..94c1d55a10 --- /dev/null +++ b/taskcluster/docker/image_builder/build-image/src/config.rs @@ -0,0 +1,112 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +use anyhow::Result; +use serde::de::Error; +use serde::Deserialize; +use std::collections::HashMap; + +fn default_image_name() -> String { + "mozilla.org/taskgraph/default-image:latest".into() +} +fn default_zstd_level() -> i32 { + 3 +} + +fn from_json<'de, D, T>(deserializer: D) -> Result +where + D: serde::de::Deserializer<'de>, + T: serde::de::DeserializeOwned, +{ + let value: String = serde::Deserialize::deserialize(deserializer)?; + serde_json::from_str(&value).map_err(|err| { + D::Error::invalid_value(serde::de::Unexpected::Str(&value), &&*err.to_string()) + }) +} + +#[derive(Deserialize, Debug, PartialEq, Eq)] +pub struct Config { + pub context_task_id: String, + pub context_path: String, + pub parent_task_id: Option, + #[serde(default = "default_image_name")] + pub image_name: String, + #[serde(default = "default_zstd_level")] + pub docker_image_zstd_level: i32, + #[serde(default)] + pub debug: bool, + #[serde(default, deserialize_with = "from_json")] + pub docker_build_args: HashMap, +} + +impl Config { + pub fn from_env() -> Result { + Ok(envy::from_env()?) + } +} + +#[cfg(test)] +mod test { + use anyhow::Result; + + #[test] + fn test() -> Result<()> { + let env: Vec<(String, String)> = vec![ + ("CONTEXT_TASK_ID".into(), "xGRRgzG6QlCCwsFsyuqm0Q".into()), + ( + "CONTEXT_PATH".into(), + "public/docker-contexts/image.tar.gz".into(), + ), + ]; + let config: super::Config = envy::from_iter(env.into_iter())?; + assert_eq!( + config, + super::Config { + context_task_id: "xGRRgzG6QlCCwsFsyuqm0Q".into(), + context_path: "public/docker-contexts/image.tar.gz".into(), + parent_task_id: None, + image_name: "mozilla.org/taskgraph/default-image:latest".into(), + docker_image_zstd_level: 3, + debug: false, + docker_build_args: Default::default() + } + ); + Ok(()) + } + + #[test] + fn test_docker_build_args() -> Result<()> { + let env: Vec<(String, String)> = vec![ + ("CONTEXT_TASK_ID".into(), "xGRRgzG6QlCCwsFsyuqm0Q".into()), + ( + "CONTEXT_PATH".into(), + "public/docker-contexts/image.tar.gz".into(), + ), + ( + "DOCKER_BUILD_ARGS".into(), + serde_json::json! ({ + "test": "Value", + }) + .to_string(), + ), + ]; + let config: super::Config = envy::from_iter(env.into_iter())?; + assert_eq!( + config, + super::Config { + context_task_id: "xGRRgzG6QlCCwsFsyuqm0Q".into(), + context_path: "public/docker-contexts/image.tar.gz".into(), + parent_task_id: None, + image_name: "mozilla.org/taskgraph/default-image:latest".into(), + docker_image_zstd_level: 3, + debug: false, + docker_build_args: [("test".to_string(), "Value".to_string())] + .iter() + .cloned() + .collect(), + } + ); + Ok(()) + } +} diff --git a/taskcluster/docker/image_builder/build-image/src/main.rs b/taskcluster/docker/image_builder/build-image/src/main.rs new file mode 100644 index 0000000000..997617c84e --- /dev/null +++ b/taskcluster/docker/image_builder/build-image/src/main.rs @@ -0,0 +1,182 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#![forbid(unsafe_code)] + +use std::collections::HashMap; +use std::path::Path; +use std::process::Command; + +use anyhow::{ensure, Context, Result}; +use fs_extra::dir::{move_dir, CopyOptions}; +use serde::Deserialize; + +mod config; +mod taskcluster; + +use config::Config; + +fn log_step(msg: &str) { + println!("[build-image] {}", msg); +} + +fn read_image_digest(path: &str) -> Result { + let output = Command::new("/kaniko/skopeo") + .arg("inspect") + .arg(format!("docker-archive:{}", path)) + .stdout(std::process::Stdio::piped()) + .spawn()? + .wait_with_output()?; + ensure!(output.status.success(), "Could not inspect parent image."); + + #[derive(Deserialize, Debug)] + #[serde(rename_all = "PascalCase")] + struct ImageInfo { + #[serde(skip_serializing_if = "Option::is_none")] + name: Option, + #[serde(skip_serializing_if = "Option::is_none")] + tag: Option, + digest: String, + // ... + } + + let image_info: ImageInfo = serde_json::from_slice(&output.stdout) + .with_context(|| format!("Could parse image info from {:?}", path))?; + Ok(image_info.digest) +} + +fn download_parent_image( + cluster: &taskcluster::TaskCluster, + task_id: &str, + dest: &str, +) -> Result { + zstd::stream::copy_decode( + cluster.stream_artifact(&task_id, "public/image.tar.zst")?, + std::fs::File::create(dest)?, + ) + .context("Could not download parent image.")?; + + read_image_digest(dest) +} + +fn build_image( + context_path: &str, + dest: &str, + debug: bool, + build_args: HashMap, +) -> Result<()> { + let mut command = Command::new("/kaniko/executor"); + command + .stderr(std::process::Stdio::inherit()) + .args(&["--context", &format!("tar://{}", context_path)]) + .args(&["--destination", "image"]) + .args(&["--dockerfile", "Dockerfile"]) + .arg("--no-push") + .args(&["--cache-dir", "/workspace/cache"]) + .arg("--single-snapshot") + // FIXME: Generating reproducible layers currently causes OOM. + // .arg("--reproducible") + .arg("--whitelist-var-run=false") + .args(&["--tarPath", dest]); + if debug { + command.args(&["-v", "debug"]); + } + for (key, value) in build_args { + command.args(&["--build-arg", &format!("{}={}", key, value)]); + } + let status = command.status()?; + ensure!(status.success(), "Could not build image."); + Ok(()) +} + +fn repack_image(source: &str, dest: &str, image_name: &str) -> Result<()> { + let status = Command::new("/kaniko/skopeo") + .arg("copy") + .arg(format!("docker-archive:{}", source)) + .arg(format!("docker-archive:{}:{}", dest, image_name)) + .stderr(std::process::Stdio::inherit()) + .status()?; + ensure!(status.success(), "Could repack image."); + Ok(()) +} + +fn main() -> Result<()> { + // Kaniko expects everything to be in /kaniko, so if not running from there, move + // everything there. + if let Some(path) = std::env::current_exe()?.parent() { + if path != Path::new("/kaniko") { + let mut options = CopyOptions::new(); + options.copy_inside = true; + move_dir(path, "/kaniko", &options)?; + } + } + + let config = Config::from_env().context("Could not parse environment variables.")?; + + let cluster = taskcluster::TaskCluster::from_env()?; + + let mut build_args = config.docker_build_args; + + build_args.insert("TASKCLUSTER_ROOT_URL".into(), cluster.root_url()); + + log_step("Downloading context."); + + std::io::copy( + &mut cluster.stream_artifact(&config.context_task_id, &config.context_path)?, + &mut std::fs::File::create("/workspace/context.tar.gz")?, + ) + .context("Could not download image context.")?; + + if let Some(parent_task_id) = config.parent_task_id { + log_step("Downloading image."); + let digest = download_parent_image(&cluster, &parent_task_id, "/workspace/parent.tar")?; + + log_step(&format!("Parent image digest {}", &digest)); + std::fs::create_dir_all("/workspace/cache")?; + std::fs::rename( + "/workspace/parent.tar", + format!("/workspace/cache/{}", digest), + )?; + + build_args.insert( + "DOCKER_IMAGE_PARENT".into(), + format!("parent:latest@{}", digest), + ); + } + + log_step("Building image."); + build_image( + "/workspace/context.tar.gz", + "/workspace/image-pre.tar", + config.debug, + build_args, + )?; + log_step("Repacking image."); + repack_image( + "/workspace/image-pre.tar", + "/workspace/image.tar", + &config.image_name, + )?; + + log_step("Compressing image."); + compress_file( + "/workspace/image.tar", + "/workspace/image.tar.zst", + config.docker_image_zstd_level, + )?; + + Ok(()) +} + +fn compress_file( + source: impl AsRef, + dest: impl AsRef, + zstd_level: i32, +) -> Result<()> { + Ok(zstd::stream::copy_encode( + std::fs::File::open(source)?, + std::fs::File::create(dest)?, + zstd_level, + )?) +} diff --git a/taskcluster/docker/image_builder/build-image/src/taskcluster.rs b/taskcluster/docker/image_builder/build-image/src/taskcluster.rs new file mode 100644 index 0000000000..3b39d669f0 --- /dev/null +++ b/taskcluster/docker/image_builder/build-image/src/taskcluster.rs @@ -0,0 +1,55 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +use anyhow::{Context, Result}; + +pub struct TaskCluster { + root_url: url::Url, + client: reqwest::blocking::Client, +} + +impl TaskCluster { + pub fn from_env() -> Result { + std::env::var("TASKCLUSTER_ROOT_URL") + .context("TASKCLUSTER_ROOT_URL not set.") + .and_then(|var| var.parse().context("Couldn't parse TASKCLUSTER_ROOT_URL.")) + .map(|root_url| TaskCluster { + root_url, + client: reqwest::blocking::Client::new(), + }) + } + + /// Return the root URL as suitable for passing to other processes. + /// + /// In particular, any trailing slashes are removed. + pub fn root_url(&self) -> String { + self.root_url.as_str().trim_end_matches("/").to_string() + } + + pub fn task_artifact_url(&self, task_id: &str, path: &str) -> url::Url { + let mut url = self.root_url.clone(); + url.set_path(&format!("api/queue/v1/task/{}/artifacts/{}", task_id, path)); + url + } + + pub fn stream_artifact(&self, task_id: &str, path: &str) -> Result { + let url = self.task_artifact_url(task_id, path); + Ok(self.client.get(url).send()?.error_for_status()?) + } +} + +#[cfg(test)] +mod test { + #[test] + fn test_url() { + let cluster = super::TaskCluster { + root_url: url::Url::parse("http://taskcluster.example").unwrap(), + client: reqwest::blocking::Client::new(), + }; + assert_eq!( + cluster.task_artifact_url("QzDLgP4YRwanIvgPt6ClfA","public/docker-contexts/decision.tar.gz"), + url::Url::parse("http://taskcluster.example/api/queue/v1/task/QzDLgP4YRwanIvgPt6ClfA/artifacts/public/docker-contexts/decision.tar.gz").unwrap(), + ); + } +} diff --git a/taskcluster/docker/image_builder/policy.json b/taskcluster/docker/image_builder/policy.json new file mode 100644 index 0000000000..c9a9b225cf --- /dev/null +++ b/taskcluster/docker/image_builder/policy.json @@ -0,0 +1,11 @@ +{ + "default": [{ "type": "reject" }], + "transports": { + "docker-archive": { + "": [{ "type": "insecureAcceptAnything" }] + }, + "dir": { + "": [{ "type": "insecureAcceptAnything" }] + } + } +} diff --git a/taskcluster/docker/index-task/.eslintrc.js b/taskcluster/docker/index-task/.eslintrc.js new file mode 100644 index 0000000000..ff84d9cb69 --- /dev/null +++ b/taskcluster/docker/index-task/.eslintrc.js @@ -0,0 +1,11 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +module.exports = { + env: { + node: true, + }, +}; diff --git a/taskcluster/docker/index-task/Dockerfile b/taskcluster/docker/index-task/Dockerfile new file mode 100644 index 0000000000..493eda4e20 --- /dev/null +++ b/taskcluster/docker/index-task/Dockerfile @@ -0,0 +1,11 @@ +FROM node:10-alpine + +ENV NODE_ENV production +RUN mkdir /app +ADD insert-indexes.js /app/ +ADD package.json /app/ +ADD yarn.lock /app/ +WORKDIR /app +RUN yarn --frozen-lockfile && yarn cache clean + +ENTRYPOINT ["node"] diff --git a/taskcluster/docker/index-task/README b/taskcluster/docker/index-task/README new file mode 100644 index 0000000000..9ec00e7897 --- /dev/null +++ b/taskcluster/docker/index-task/README @@ -0,0 +1,36 @@ +Index-Image +=========== + +This image is designed to be used for indexing other tasks. It takes a task +definition as follows: +```js +{ + ..., + scopes: [ + 'index:insert-task:my-index.namespace', + 'index:insert-task:...', + ], + payload: { + image: '...', + env: { + TARGET_TASKID: '', + }, + command: [ + 'insert-indexes.js', + 'my-index.namespace.one', + 'my-index.namespace.two', + '....', + ], + features: { + taskclusterProxy: true, + }, + maxRunTime: 600, + }, +} +``` + +As can be seen the `taskId` to be indexed is given by the environment variable +`TARGET_TASKID` and the `command` arguments specifies namespaces that it must +be index under. It is **important** to also include scopes on the form +`index:insert-task:<...>` for all namespaces `<...>` given as `command` +arguments. diff --git a/taskcluster/docker/index-task/insert-indexes.js b/taskcluster/docker/index-task/insert-indexes.js new file mode 100644 index 0000000000..39ff45fd9c --- /dev/null +++ b/taskcluster/docker/index-task/insert-indexes.js @@ -0,0 +1,73 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +let taskcluster = require("taskcluster-client"); + +// Create instance of index client +let index = new taskcluster.Index({ + delayFactor: 750, // Good solid delay for background process + retries: 8, // A few extra retries for robustness + rootUrl: + process.env.TASKCLUSTER_PROXY_URL || process.env.TASKCLUSTER_ROOT_URL, +}); + +// Create queue instance for fetching taskId +let queue = new taskcluster.Queue({ + delayFactor: 750, // Good solid delay for background process + retries: 8, // A few extra retries for robustness + rootUrl: + process.env.TASKCLUSTER_PROXY_URL || process.env.TASKCLUSTER_ROOT_URL, +}); + +// Load input +let taskId = process.env.TARGET_TASKID; +let rank = parseInt(process.env.INDEX_RANK, 10); +let namespaces = process.argv.slice(2); + +// Validate input +if (!taskId) { + console.log("Expected target task as environment variable: TARGET_TASKID"); + process.exit(1); +} + +if (isNaN(rank)) { + console.log("Expected index rank as environment variable: INDEX_RANK"); + process.exit(1); +} + +// Fetch task definition to get expiration and then insert into index +queue + .task(taskId) + .then(task => task.expires) + .then(expires => { + return Promise.all( + namespaces.map(namespace => { + console.log( + "Inserting %s into index (rank %d) under: %s", + taskId, + rank, + namespace + ); + return index.insertTask(namespace, { + taskId, + rank, + data: {}, + expires, + }); + }) + ); + }) + .then(() => { + console.log("indexing successfully completed."); + process.exit(0); + }) + .catch(err => { + console.log("Error:\n%s", err); + if (err.stack) { + console.log("Stack:\n%s", err.stack); + } + console.log("Properties:\n%j", err); + throw err; + }) + .catch(() => process.exit(1)); diff --git a/taskcluster/docker/index-task/package.json b/taskcluster/docker/index-task/package.json new file mode 100644 index 0000000000..14c035123c --- /dev/null +++ b/taskcluster/docker/index-task/package.json @@ -0,0 +1,12 @@ +{ + "private": true, + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "taskcluster-client": "^12.2.0" + }, + "engines": { + "node": "10" + } +} diff --git a/taskcluster/docker/index-task/yarn.lock b/taskcluster/docker/index-task/yarn.lock new file mode 100644 index 0000000000..326936d8a6 --- /dev/null +++ b/taskcluster/docker/index-task/yarn.lock @@ -0,0 +1,326 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +amqplib@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.3.tgz#7ccfc85d12ee7cd3c6dc861bb07f0648ec3d7193" + integrity sha512-ZOdUhMxcF+u62rPI+hMtU1NBXSDFQ3eCJJrenamtdQ7YYwh7RZJHOIM1gonVbZ5PyVdYH4xqBPje9OYqk7fnqw== + dependencies: + bitsyntax "~0.1.0" + bluebird "^3.5.2" + buffer-more-ints "~1.0.0" + readable-stream "1.x >=1.1.9" + safe-buffer "~5.1.2" + url-parse "~1.4.3" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +bitsyntax@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.1.0.tgz#b0c59acef03505de5a2ed62a2f763c56ae1d6205" + integrity sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q== + dependencies: + buffer-more-ints "~1.0.0" + debug "~2.6.9" + safe-buffer "~5.1.2" + +bluebird@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE= + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw== + dependencies: + hoek "4.x.x" + +buffer-more-ints@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz#ef4f8e2dddbad429ed3828a9c55d44f05c611422" + integrity sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg== + +combined-stream@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +component-emitter@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +cookiejar@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cryptiles@3.x.x: + version "3.1.4" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.4.tgz#769a68c95612b56faadfcebf57ac86479cbe8322" + integrity sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw== + dependencies: + boom "5.x.x" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@~2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +form-data@^2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +formidable@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" + integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg== + +hawk@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ== + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + +inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +lodash@^4.17.4: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +methods@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +promise@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.2.tgz#9dcd0672192c589477d56891271bdc27547ae9f0" + integrity sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw== + dependencies: + asap "~2.0.6" + +qs@^6.5.1: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + +querystringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== + +"readable-stream@1.x >=1.1.9": + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +slugid@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/slugid/-/slugid-1.1.0.tgz#e09f00899c09f5a7058edc36dd49f046fd50a82a" + integrity sha1-4J8AiZwJ9acFjtw23UnwRv1QqCo= + dependencies: + uuid "^2.0.1" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + integrity sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg== + dependencies: + hoek "4.x.x" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +superagent@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^3.1.0" + extend "^3.0.0" + form-data "^2.3.1" + formidable "^1.2.0" + methods "^1.1.1" + mime "^1.4.1" + qs "^6.5.1" + readable-stream "^2.3.5" + +taskcluster-client@^12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/taskcluster-client/-/taskcluster-client-12.2.0.tgz#423aee3b17566d14f8ad23e4e47532265a74fb89" + integrity sha512-2Fu5ICS2663kC2t8ymJYzRDnipj3DsCK//b+H/83RjJvC6cWZ0akKzq0ySvPlNA6ic2UcL4I03bJTCJYBX1dqg== + dependencies: + amqplib "^0.5.1" + debug "^3.1.0" + hawk "^6.0.2" + lodash "^4.17.4" + promise "^8.0.1" + slugid "^1.1.0" + superagent "~3.8.1" + taskcluster-lib-urls "^10.0.0" + +taskcluster-lib-urls@^10.0.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/taskcluster-lib-urls/-/taskcluster-lib-urls-10.1.1.tgz#67d5b9449b947e5234eafdd15c46267dde29bf74" + integrity sha512-tdrK++rCX73FMXk/cXwS6RLTjA3pX8hJlxg1ECLs3L3llCOPMNhQ4wi6lb6yMgHc/s5on/Edj6AlAH7gkxzgPg== + +url-parse@~1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= diff --git a/taskcluster/docker/lint/Dockerfile b/taskcluster/docker/lint/Dockerfile new file mode 100644 index 0000000000..e34d9730d7 --- /dev/null +++ b/taskcluster/docker/lint/Dockerfile @@ -0,0 +1,36 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Andrew Halberstadt + +VOLUME /builds/worker/.cache +VOLUME /builds/worker/checkouts + +# We do want to install recommended packages. +RUN sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster + +RUN mkdir /build +# %include python/mozbuild/mozbuild/action/tooltool.py +ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /build/tooltool.py + +# %include taskcluster/docker/recipes/install-node.sh +ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /build/install-node.sh + +ADD system-setup.sh /tmp/system-setup.sh +# %include tools/lint/eslint/manifest.tt +ADD topsrcdir/tools/lint/eslint/manifest.tt /tmp/eslint.tt +# %include tools/lint/eslint/eslint-plugin-mozilla/manifest.tt +ADD topsrcdir/tools/lint/eslint/eslint-plugin-mozilla/manifest.tt /tmp/eslint-plugin-mozilla.tt +# %include tools/lint/spell/codespell_requirements.txt +ADD topsrcdir/tools/lint/spell/codespell_requirements.txt /tmp/codespell_requirements.txt +# %include tools/lint/tox/tox_requirements.txt +ADD topsrcdir/tools/lint/tox/tox_requirements.txt /tmp/tox_requirements.txt +RUN bash /tmp/system-setup.sh + +RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* + +# Set variable normally configured at login, by the shells parent process, these +# are taken from GNU su manual +ENV LANG en_US.UTF-8 +ENV LC_ALL en_US.UTF-8 + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/lint/system-setup.sh b/taskcluster/docker/lint/system-setup.sh new file mode 100644 index 0000000000..18da4b7ade --- /dev/null +++ b/taskcluster/docker/lint/system-setup.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +set -ve + +test "$(whoami)" == 'root' + +mkdir -p /setup +cd /setup + +apt_packages=() +apt_packages+=('curl') +apt_packages+=('iproute2') +apt_packages+=('locales') +apt_packages+=('graphviz') +apt_packages+=('python3-pip') +apt_packages+=('python-is-python3') +apt_packages+=('shellcheck') +apt_packages+=('sudo') +apt_packages+=('wget') +apt_packages+=('unzip') +apt_packages+=('tar') +apt_packages+=('zstd') + +apt-get update +apt-get install "${apt_packages[@]}" + +# Without this we get spurious "LC_ALL: cannot change locale (en_US.UTF-8)" errors, +# and python scripts raise UnicodeEncodeError when trying to print unicode characters. +locale-gen en_US.UTF-8 +dpkg-reconfigure locales + +su -c 'git config --global user.email "worker@mozilla.test"' worker +su -c 'git config --global user.name "worker"' worker + +tooltool_fetch() { + cat >manifest.tt + /build/tooltool.py fetch + rm manifest.tt +} + +cd /build + +### +# ESLint Setup +### + +# install node +# shellcheck disable=SC1091 +. install-node.sh + +npm install -g yarn@1.22.18 + +/build/tooltool.py fetch -m /tmp/eslint.tt +mv /build/node_modules /build/node_modules_eslint +/build/tooltool.py fetch -m /tmp/eslint-plugin-mozilla.tt +mv /build/node_modules /build/node_modules_eslint-plugin-mozilla + +### +# fzf setup +### + +tooltool_fetch < + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace + +RUN dpkg --add-architecture amd64 + +RUN apt-get update && \ + apt-get install \ + bzip2 \ + curl \ + git \ + gzip \ + openssh-client \ + python2 \ + unzip \ + zip + +COPY known_hosts /etc/ssh/ssh_known_hosts diff --git a/taskcluster/docker/partner-repack/known_hosts b/taskcluster/docker/partner-repack/known_hosts new file mode 100644 index 0000000000..f4c560e0e7 --- /dev/null +++ b/taskcluster/docker/partner-repack/known_hosts @@ -0,0 +1,3 @@ +github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl +github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg= +github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= diff --git a/taskcluster/docker/periodic-updates/.eslintrc.js b/taskcluster/docker/periodic-updates/.eslintrc.js new file mode 100644 index 0000000000..9828adaa40 --- /dev/null +++ b/taskcluster/docker/periodic-updates/.eslintrc.js @@ -0,0 +1,70 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +module.exports = { + globals: { + // JS files in this folder are commonly xpcshell scripts where |arguments| + // is defined in the global scope. + arguments: false, + }, + rules: { + // Enforce return statements in callbacks of array methods. + "array-callback-return": "error", + + // Verify calls of super() in constructors. + "constructor-super": "error", + + // Require default case in switch statements. + "default-case": "error", + + // Disallow use of alert(), confirm(), and prompt(). + "no-alert": "error", + + // Disallow likely erroneous `switch` scoped lexical declarations in + // case/default clauses. + "no-case-declarations": "error", + + // Disallow use of the console API. + "no-console": "error", + + // Disallow constant expressions in conditions (except for loops). + "no-constant-condition": ["error", { checkLoops: false }], + + // Disallow extending of native objects. + "no-extend-native": "error", + + // Disallow case statement fallthrough without explicit `// falls through` + // annotation. + "no-fallthrough": "error", + + // No reassigning native JS objects or read only globals. + "no-global-assign": "error", + + // Disallow use of assignment in return statement. + "no-return-assign": ["error", "always"], + + // Disallow template literal placeholder syntax in regular strings. + "no-template-curly-in-string": "error", + + // Disallow use of this/super before calling super() in constructors. + "no-this-before-super": "error", + + // Disallow unmodified loop conditions. + "no-unmodified-loop-condition": "error", + + // No expressions where a statement is expected + "no-unused-expressions": "error", + + // Disallow unnecessary escape usage in strings and regular expressions. + "no-useless-escape": "error", + + // Require "use strict" to be defined globally in the script. + strict: ["error", "global"], + + // Disallow Yoda conditions. + yoda: ["error", "never"], + }, +}; diff --git a/taskcluster/docker/periodic-updates/Dockerfile b/taskcluster/docker/periodic-updates/Dockerfile new file mode 100644 index 0000000000..24cabe02b5 --- /dev/null +++ b/taskcluster/docker/periodic-updates/Dockerfile @@ -0,0 +1,11 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Julien Cristau + +ADD setup.sh /setup/setup.sh + +RUN cd /setup && ./setup.sh + +COPY runme.sh / +COPY scripts/* /home/worker/scripts/ + +CMD ["/runme.sh"] diff --git a/taskcluster/docker/periodic-updates/README.md b/taskcluster/docker/periodic-updates/README.md new file mode 100644 index 0000000000..d21c0c3656 --- /dev/null +++ b/taskcluster/docker/periodic-updates/README.md @@ -0,0 +1,96 @@ + +==Periodic File Updates== + +This docker image examines the in-tree files for HSTS preload data, HPKP pinning and blocklisting, and +will produce a diff for each necessary to update the in-tree files. + +If given a conduit API token, it will also use the arcanist client to submit the commits for review. + + +==Quick Start== + +```sh +docker build -t hsts-local --no-cache --rm . + +docker run -e DO_HSTS=1 -e DO_HPKP=1 -e PRODUCT="firefox" -e BRANCH="mozilla-central" -e USE_MOZILLA_CENTRAL=1 hsts-local +``` + +HSTS checks will only be run if the `DO_HSTS` environment variable is set. +Likewise for `DO_HPKP` and the HPKP checks. Environment variables are used +rather than command line arguments to make constructing taskcluster tasks +easier. + +To prevent a full build when landing with Phabricator, set the `DONTBUILD` +environment variable. + +==Background== + +These scripts have been moved from +`https://hg.mozilla.org/build/tools/scripts/periodic_file_updates/` and +`security/manager/tools/` in the main repos. + +==HSTS Checks== + +`scripts/getHSTSPreloadList.js` will examine the current contents of +nsSTSPreloadList.inc from whichever `BRANCH` is specified, add in the mandatory +hosts, and those from the Chromium source, and check them all to see if their +SSL configuration is valid, and whether or not they have the +Strict-Transport-Security header set with an appropriate `max-age`. + +This javascript has been modified to use async calls to improve performance. + +==HPKP Checks== + +`scripts/genHPKPStaticPins.js` will ensure the list of pinned public keys are +up to date. + +==Example Taskcluster Task== + +https://firefox-ci-tc.services.mozilla.com/tasks/create/ + +```yaml +provisionerId: aws-provisioner-v1 +workerType: gecko-1-b-linux +retries: 0 +created: '2018-02-07T14:45:57.347Z' +deadline: '2018-02-07T17:45:57.348Z' +expires: '2019-02-07T17:45:57.348Z' +scopes: [] +payload: + image: srfraser/hsts1 + maxRunTime: 1800 + artifacts: + public/build/nsSTSPreloadList.diff: + path: /home/worker/artifacts/nsSTSPreloadList.diff + expires: '2019-02-07T13:57:35.448Z' + type: file + public/build/StaticHPKPins.h.diff: + path: /home/worker/artifacts/StaticHPKPins.h.diff + expires: '2019-02-07T13:57:35.448Z' + type: file + public/build/blocklist.diff: + path: /home/worker/artifacts/blocklist.diff + expires: '2019-02-07T13:57:35.448Z' + type: file + env: + DO_HSTS: 1 + DO_HPKP: 1 + PRODUCT: firefox + BRANCH: mozilla-central + USE_MOZILLA_CENTRAL: 1 + REVIEWERS: catlee +metadata: + name: Periodic updates testing + description: Produce diffs for HSTS and HPKP in-tree files. + owner: sfraser@mozilla.com + source: 'https://firefox-ci-tc.services.mozilla.com/tasks/create' +tags: {} +extra: + treeherder: + jobKind: test + machine: + platform: linux64 + tier: 1 + symbol: 'hsts' + +``` diff --git a/taskcluster/docker/periodic-updates/runme.sh b/taskcluster/docker/periodic-updates/runme.sh new file mode 100755 index 0000000000..368963aff6 --- /dev/null +++ b/taskcluster/docker/periodic-updates/runme.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +set -xe + +# Things to be set by task definition. +# --pinset --hsts --hpkp +# -b branch +# --use-mozilla-central +# -p firefox +# Artifact directory +# Artifact names. + + +test "${BRANCH}" +test "${PRODUCT}" + +PARAMS="" + +if [ -n "${USE_MOZILLA_CENTRAL}" ] +then + PARAMS="${PARAMS} --use-mozilla-central" +fi + +# TODO change these, so that they're run if the artifact location is specified? +if [ -n "${DO_HSTS}" ] +then + PARAMS="${PARAMS} --hsts" +fi + +if [ -n "${DO_HPKP}" ] +then + PARAMS="${PARAMS} --hpkp" +fi + +if [ -n "${DO_REMOTE_SETTINGS}" ] +then + PARAMS="${PARAMS} --remote-settings" +fi + +if [ -n "${DO_SUFFIX_LIST}" ] +then + PARAMS="${PARAMS} --suffix-list" +fi + +if [ -n "${DONTBUILD}" ] +then + PARAMS="${PARAMS} -d" +fi + + +export ARTIFACTS_DIR="/home/worker/artifacts" +mkdir -p "$ARTIFACTS_DIR" + +# duplicate the functionality of taskcluster-lib-urls, but in bash.. +queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1" + +# Get Arcanist API token + +if [ -n "${TASK_ID}" ] +then + curl --location --retry 10 --retry-delay 10 -o /home/worker/task.json "$queue_base/task/$TASK_ID" + ARC_SECRET=$(jq -r '.scopes[] | select(contains ("arc-phabricator-token"))' /home/worker/task.json | awk -F: '{print $3}') +fi +if [ -n "${ARC_SECRET}" ] && getent hosts taskcluster +then + set +x # Don't echo these + secrets_url="${TASKCLUSTER_PROXY_URL}/api/secrets/v1/secret/${ARC_SECRET}" + SECRET=$(curl "${secrets_url}") + TOKEN=$(echo "${SECRET}" | jq -r '.secret.token') +elif [ -n "${ARC_TOKEN}" ] # Allow for local testing. +then + TOKEN="${ARC_TOKEN}" +fi + +if [ -n "${TOKEN}" ] +then + cat >"${HOME}/.arcrc" < " + + "" + ); +} + +var { NetUtil } = ChromeUtils.import("resource://gre/modules/NetUtil.jsm"); +var { FileUtils } = ChromeUtils.importESModule( + "resource://gre/modules/FileUtils.sys.mjs" +); + +var gCertDB = Cc["@mozilla.org/security/x509certdb;1"].getService( + Ci.nsIX509CertDB +); + +const SHA256_PREFIX = "sha256/"; +const GOOGLE_PIN_PREFIX = "GOOGLE_PIN_"; + +// Pins expire in 14 weeks (6 weeks on Beta + 8 weeks on stable) +const PINNING_MINIMUM_REQUIRED_MAX_AGE = 60 * 60 * 24 * 7 * 14; + +const FILE_HEADER = + "/* This Source Code Form is subject to the terms of the Mozilla Public\n" + + " * License, v. 2.0. If a copy of the MPL was not distributed with this\n" + + " * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n" + + "\n" + + "/*****************************************************************************/\n" + + "/* This is an automatically generated file. If you're not */\n" + + "/* PublicKeyPinningService.cpp, you shouldn't be #including it. */\n" + + "/*****************************************************************************/\n" + + "#include " + + "\n"; + +const DOMAINHEADER = + "/* Domainlist */\n" + + "struct TransportSecurityPreload {\n" + + " // See bug 1338873 about making these fields const.\n" + + " const char* mHost;\n" + + " bool mIncludeSubdomains;\n" + + " bool mTestMode;\n" + + " bool mIsMoz;\n" + + " int32_t mId;\n" + + " const StaticFingerprints* pinset;\n" + + "};\n\n"; + +const PINSETDEF = + "/* Pinsets are each an ordered list by the actual value of the fingerprint */\n" + + "struct StaticFingerprints {\n" + + " // See bug 1338873 about making these fields const.\n" + + " size_t size;\n" + + " const char* const* data;\n" + + "};\n\n"; + +// Command-line arguments +var gStaticPins = parseJson(arguments[0]); + +// Open the output file. +var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); +file.initWithPath(arguments[1]); +var gFileOutputStream = FileUtils.openSafeFileOutputStream(file); + +function writeString(string) { + gFileOutputStream.write(string, string.length); +} + +function readFileToString(filename) { + let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); + file.initWithPath(filename); + let stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance( + Ci.nsIFileInputStream + ); + stream.init(file, -1, 0, 0); + let buf = NetUtil.readInputStreamToString(stream, stream.available()); + return buf; +} + +function stripComments(buf) { + let lines = buf.split("\n"); + let entryRegex = /^\s*\/\//; + let data = ""; + for (let i = 0; i < lines.length; ++i) { + let match = entryRegex.exec(lines[i]); + if (!match) { + data = data + lines[i]; + } + } + return data; +} + +function download(filename) { + let req = new XMLHttpRequest(); + req.open("GET", filename, false); // doing the request synchronously + try { + req.send(); + } catch (e) { + throw new Error(`ERROR: problem downloading '${filename}': ${e}`); + } + + if (req.status != 200) { + throw new Error( + "ERROR: problem downloading '" + filename + "': status " + req.status + ); + } + + let resultDecoded; + try { + resultDecoded = atob(req.responseText); + } catch (e) { + throw new Error( + "ERROR: could not decode data as base64 from '" + filename + "': " + e + ); + } + return resultDecoded; +} + +function downloadAsJson(filename) { + // we have to filter out '//' comments, while not mangling the json + let result = download(filename).replace(/^(\s*)?\/\/[^\n]*\n/gm, ""); + let data = null; + try { + data = JSON.parse(result); + } catch (e) { + throw new Error( + "ERROR: could not parse data from '" + filename + "': " + e + ); + } + return data; +} + +// Returns a Subject Public Key Digest from the given pem, if it exists. +function getSKDFromPem(pem) { + let cert = gCertDB.constructX509FromBase64(pem, pem.length); + return cert.sha256SubjectPublicKeyInfoDigest; +} + +/** + * Hashes |input| using the SHA-256 algorithm in the following manner: + * btoa(sha256(atob(input))) + * + * @param {string} input Base64 string to decode and return the hash of. + * @returns {string} Base64 encoded SHA-256 hash. + */ +function sha256Base64(input) { + let decodedValue; + try { + decodedValue = atob(input); + } catch (e) { + throw new Error(`ERROR: could not decode as base64: '${input}': ${e}`); + } + + // Convert |decodedValue| to an array so that it can be hashed by the + // nsICryptoHash instance below. + // In most cases across the code base, convertToByteArray() of + // nsIScriptableUnicodeConverter is used to do this, but the method doesn't + // seem to work here. + let data = []; + for (let i = 0; i < decodedValue.length; i++) { + data[i] = decodedValue.charCodeAt(i); + } + + let hasher = Cc["@mozilla.org/security/hash;1"].createInstance( + Ci.nsICryptoHash + ); + hasher.init(hasher.SHA256); + hasher.update(data, data.length); + + // true is passed so that the hasher returns a Base64 encoded string. + return hasher.finish(true); +} + +// Downloads the static certs file and tries to map Google Chrome nicknames +// to Mozilla nicknames, as well as storing any hashes for pins for which we +// don't have root PEMs. Each entry consists of a line containing the name of +// the pin followed either by a hash in the format "sha256/" + base64(hash), +// a PEM encoded public key, or a PEM encoded certificate. +// For certificates that we have in our database, +// return a map of Google's nickname to ours. For ones that aren't return a +// map of Google's nickname to SHA-256 values. This code is modeled after agl's +// https://github.com/agl/transport-security-state-generate, which doesn't +// live in the Chromium repo because go is not an official language in +// Chromium. +// For all of the entries in this file: +// - If the entry has a hash format, find the Mozilla pin name (cert nickname) +// and stick the hash into certSKDToName +// - If the entry has a PEM format, parse the PEM, find the Mozilla pin name +// and stick the hash in certSKDToName +// We MUST be able to find a corresponding cert nickname for the Chrome names, +// otherwise we skip all pinsets referring to that Chrome name. +function downloadAndParseChromeCerts(filename, certNameToSKD, certSKDToName) { + // Prefixes that we care about. + const BEGIN_CERT = "-----BEGIN CERTIFICATE-----"; + const END_CERT = "-----END CERTIFICATE-----"; + const BEGIN_PUB_KEY = "-----BEGIN PUBLIC KEY-----"; + const END_PUB_KEY = "-----END PUBLIC KEY-----"; + + // Parsing states. + const PRE_NAME = 0; + const POST_NAME = 1; + const IN_CERT = 2; + const IN_PUB_KEY = 3; + let state = PRE_NAME; + + let lines = download(filename).split("\n"); + let pemCert = ""; + let pemPubKey = ""; + let hash = ""; + let chromeNameToHash = {}; + let chromeNameToMozName = {}; + let chromeName; + for (let line of lines) { + // Skip comments and newlines. + if (!line.length || line[0] == "#") { + continue; + } + switch (state) { + case PRE_NAME: + chromeName = line; + state = POST_NAME; + break; + case POST_NAME: + if (line.startsWith(SHA256_PREFIX)) { + hash = line.substring(SHA256_PREFIX.length); + chromeNameToHash[chromeName] = hash; + certNameToSKD[chromeName] = hash; + certSKDToName[hash] = chromeName; + state = PRE_NAME; + } else if (line.startsWith(BEGIN_CERT)) { + state = IN_CERT; + } else if (line.startsWith(BEGIN_PUB_KEY)) { + state = IN_PUB_KEY; + } else if ( + chromeName == "PinsListTimestamp" && + line.match(/^[0-9]+$/) + ) { + // If the name of this entry is "PinsListTimestamp", this line should + // be the pins list timestamp. It should consist solely of digits. + // Ignore it and expect other entries to come. + state = PRE_NAME; + } else { + throw new Error( + "ERROR: couldn't parse Chrome certificate file line: " + line + ); + } + break; + case IN_CERT: + if (line.startsWith(END_CERT)) { + state = PRE_NAME; + hash = getSKDFromPem(pemCert); + pemCert = ""; + let mozName; + if (hash in certSKDToName) { + mozName = certSKDToName[hash]; + } else { + // Not one of our built-in certs. Prefix the name with + // GOOGLE_PIN_. + mozName = GOOGLE_PIN_PREFIX + chromeName; + dump( + "Can't find hash in builtin certs for Chrome nickname " + + chromeName + + ", inserting " + + mozName + + "\n" + ); + certSKDToName[hash] = mozName; + certNameToSKD[mozName] = hash; + } + chromeNameToMozName[chromeName] = mozName; + } else { + pemCert += line; + } + break; + case IN_PUB_KEY: + if (line.startsWith(END_PUB_KEY)) { + state = PRE_NAME; + hash = sha256Base64(pemPubKey); + pemPubKey = ""; + chromeNameToHash[chromeName] = hash; + certNameToSKD[chromeName] = hash; + certSKDToName[hash] = chromeName; + } else { + pemPubKey += line; + } + break; + default: + throw new Error( + "ERROR: couldn't parse Chrome certificate file " + line + ); + } + } + return [chromeNameToHash, chromeNameToMozName]; +} + +// We can only import pinsets from chrome if for every name in the pinset: +// - We have a hash from Chrome's static certificate file +// - We have a builtin cert +// If the pinset meets these requirements, we store a map array of pinset +// objects: +// { +// pinset_name : { +// // Array of names with entries in certNameToSKD +// sha256_hashes: [] +// } +// } +// and an array of imported pinset entries: +// { name: string, include_subdomains: boolean, test_mode: boolean, +// pins: pinset_name } +function downloadAndParseChromePins( + filename, + chromeNameToHash, + chromeNameToMozName, + certNameToSKD, + certSKDToName +) { + let chromePreloads = downloadAsJson(filename); + let chromePins = chromePreloads.pinsets; + let chromeImportedPinsets = {}; + let chromeImportedEntries = []; + + chromePins.forEach(function (pin) { + let valid = true; + let pinset = { name: pin.name, sha256_hashes: [] }; + // Translate the Chrome pinset format to ours + pin.static_spki_hashes.forEach(function (name) { + if (name in chromeNameToHash) { + let hash = chromeNameToHash[name]; + pinset.sha256_hashes.push(certSKDToName[hash]); + + // We should have already added hashes for all of these when we + // imported the certificate file. + if (!certNameToSKD[name]) { + throw new Error("ERROR: No hash for name: " + name); + } + } else if (name in chromeNameToMozName) { + pinset.sha256_hashes.push(chromeNameToMozName[name]); + } else { + dump( + "Skipping Chrome pinset " + + pinset.name + + ", couldn't find " + + "builtin " + + name + + " from cert file\n" + ); + valid = false; + } + }); + if (valid) { + chromeImportedPinsets[pinset.name] = pinset; + } + }); + + // Grab the domain entry lists. Chrome's entry format is similar to + // ours, except theirs includes a HSTS mode. + const cData = gStaticPins.chromium_data; + let entries = chromePreloads.entries; + entries.forEach(function (entry) { + // HSTS entry only + if (!entry.pins) { + return; + } + let pinsetName = cData.substitute_pinsets[entry.pins]; + if (!pinsetName) { + pinsetName = entry.pins; + } + + // We trim the entry name here to avoid breaking hostname comparisons in the + // HPKP implementation. + entry.name = entry.name.trim(); + + let isProductionDomain = cData.production_domains.includes(entry.name); + let isProductionPinset = cData.production_pinsets.includes(pinsetName); + let excludeDomain = cData.exclude_domains.includes(entry.name); + let isTestMode = !isProductionPinset && !isProductionDomain; + if (entry.pins && !excludeDomain && chromeImportedPinsets[entry.pins]) { + chromeImportedEntries.push({ + name: entry.name, + include_subdomains: entry.include_subdomains, + test_mode: isTestMode, + is_moz: false, + pins: pinsetName, + }); + } + }); + return [chromeImportedPinsets, chromeImportedEntries]; +} + +// Returns a pair of maps [certNameToSKD, certSKDToName] between cert +// nicknames and digests of the SPKInfo for the mozilla trust store +function loadNSSCertinfo(extraCertificates) { + let allCerts = gCertDB.getCerts(); + let certNameToSKD = {}; + let certSKDToName = {}; + for (let cert of allCerts) { + if (!cert.isBuiltInRoot) { + continue; + } + let name = cert.displayName; + let SKD = cert.sha256SubjectPublicKeyInfoDigest; + certNameToSKD[name] = SKD; + certSKDToName[SKD] = name; + } + + for (let cert of extraCertificates) { + let name = cert.commonName; + let SKD = cert.sha256SubjectPublicKeyInfoDigest; + certNameToSKD[name] = SKD; + certSKDToName[SKD] = name; + } + + { + // This is the pinning test certificate. The key hash identifies the + // default RSA key from pykey. + let name = "End Entity Test Cert"; + let SKD = "VCIlmPM9NkgFQtrs4Oa5TeFcDu6MWRTKSNdePEhOgD8="; + certNameToSKD[name] = SKD; + certSKDToName[SKD] = name; + } + return [certNameToSKD, certSKDToName]; +} + +function parseJson(filename) { + let json = stripComments(readFileToString(filename)); + return JSON.parse(json); +} + +function nameToAlias(certName) { + // change the name to a string valid as a c identifier + // remove non-ascii characters + certName = certName.replace(/[^[:ascii:]]/g, "_"); + // replace non word characters + certName = certName.replace(/[^A-Za-z0-9]/g, "_"); + + return "k" + certName + "Fingerprint"; +} + +function compareByName(a, b) { + return a.name.localeCompare(b.name); +} + +function genExpirationTime() { + let now = new Date(); + let nowMillis = now.getTime(); + let expirationMillis = nowMillis + PINNING_MINIMUM_REQUIRED_MAX_AGE * 1000; + let expirationMicros = expirationMillis * 1000; + return ( + "static const PRTime kPreloadPKPinsExpirationTime = INT64_C(" + + expirationMicros + + ");\n" + ); +} + +function writeFullPinset(certNameToSKD, certSKDToName, pinset) { + if (!pinset.sha256_hashes || !pinset.sha256_hashes.length) { + throw new Error(`ERROR: Pinset ${pinset.name} does not contain any hashes`); + } + writeFingerprints( + certNameToSKD, + certSKDToName, + pinset.name, + pinset.sha256_hashes + ); +} + +function writeFingerprints(certNameToSKD, certSKDToName, name, hashes) { + let varPrefix = "kPinset_" + name; + writeString("static const char* const " + varPrefix + "_Data[] = {\n"); + let SKDList = []; + for (let certName of hashes) { + if (!(certName in certNameToSKD)) { + throw new Error(`ERROR: Can't find '${certName}' in certNameToSKD`); + } + SKDList.push(certNameToSKD[certName]); + } + for (let skd of SKDList.sort()) { + writeString(" " + nameToAlias(certSKDToName[skd]) + ",\n"); + } + if (!hashes.length) { + // ANSI C requires that an initialiser list be non-empty. + writeString(" 0\n"); + } + writeString("};\n"); + writeString( + "static const StaticFingerprints " + + varPrefix + + " = {\n " + + "sizeof(" + + varPrefix + + "_Data) / sizeof(const char*),\n " + + varPrefix + + "_Data\n};\n\n" + ); +} + +function writeEntry(entry) { + let printVal = ` { "${entry.name}", `; + if (entry.include_subdomains) { + printVal += "true, "; + } else { + printVal += "false, "; + } + // Default to test mode if not specified. + let testMode = true; + if (entry.hasOwnProperty("test_mode")) { + testMode = entry.test_mode; + } + if (testMode) { + printVal += "true, "; + } else { + printVal += "false, "; + } + if ( + entry.is_moz || + (entry.pins.includes("mozilla") && entry.pins != "mozilla_test") + ) { + printVal += "true, "; + } else { + printVal += "false, "; + } + if ("id" in entry) { + if (entry.id >= 256) { + throw new Error("ERROR: Not enough buckets in histogram"); + } + if (entry.id >= 0) { + printVal += entry.id + ", "; + } + } else { + printVal += "-1, "; + } + printVal += "&kPinset_" + entry.pins; + printVal += " },\n"; + writeString(printVal); +} + +function writeDomainList(chromeImportedEntries) { + writeString("/* Sort hostnames for binary search. */\n"); + writeString( + "static const TransportSecurityPreload " + + "kPublicKeyPinningPreloadList[] = {\n" + ); + let count = 0; + let mozillaDomains = {}; + gStaticPins.entries.forEach(function (entry) { + mozillaDomains[entry.name] = true; + }); + // For any domain for which we have set pins, exclude them from + // chromeImportedEntries. + for (let i = chromeImportedEntries.length - 1; i >= 0; i--) { + if (mozillaDomains[chromeImportedEntries[i].name]) { + dump( + "Skipping duplicate pinset for domain " + + JSON.stringify(chromeImportedEntries[i], undefined, 2) + + "\n" + ); + chromeImportedEntries.splice(i, 1); + } + } + let sortedEntries = gStaticPins.entries; + sortedEntries.push.apply(sortedEntries, chromeImportedEntries); + for (let entry of sortedEntries.sort(compareByName)) { + count++; + writeEntry(entry); + } + writeString("};\n"); + + writeString("\n// Pinning Preload List Length = " + count + ";\n"); + writeString("\nstatic const int32_t kUnknownId = -1;\n"); +} + +function writeFile( + certNameToSKD, + certSKDToName, + chromeImportedPinsets, + chromeImportedEntries +) { + // Compute used pins from both Chrome's and our pinsets, so we can output + // them later. + let usedFingerprints = {}; + let mozillaPins = {}; + gStaticPins.pinsets.forEach(function (pinset) { + mozillaPins[pinset.name] = true; + pinset.sha256_hashes.forEach(function (name) { + usedFingerprints[name] = true; + }); + }); + for (let key in chromeImportedPinsets) { + let pinset = chromeImportedPinsets[key]; + pinset.sha256_hashes.forEach(function (name) { + usedFingerprints[name] = true; + }); + } + + writeString(FILE_HEADER); + + // Write actual fingerprints. + Object.keys(usedFingerprints) + .sort() + .forEach(function (certName) { + if (certName) { + writeString("/* " + certName + " */\n"); + writeString("static const char " + nameToAlias(certName) + "[] =\n"); + writeString(' "' + certNameToSKD[certName] + '";\n'); + writeString("\n"); + } + }); + + // Write the pinsets + writeString(PINSETDEF); + writeString("/* PreloadedHPKPins.json pinsets */\n"); + gStaticPins.pinsets.sort(compareByName).forEach(function (pinset) { + writeFullPinset(certNameToSKD, certSKDToName, pinset); + }); + writeString("/* Chrome static pinsets */\n"); + for (let key in chromeImportedPinsets) { + if (mozillaPins[key]) { + dump("Skipping duplicate pinset " + key + "\n"); + } else { + dump("Writing pinset " + key + "\n"); + writeFullPinset(certNameToSKD, certSKDToName, chromeImportedPinsets[key]); + } + } + + // Write the domainlist entries. + writeString(DOMAINHEADER); + writeDomainList(chromeImportedEntries); + writeString("\n"); + writeString(genExpirationTime()); +} + +function loadExtraCertificates(certStringList) { + let constructedCerts = []; + for (let certString of certStringList) { + constructedCerts.push(gCertDB.constructX509FromBase64(certString)); + } + return constructedCerts; +} + +var extraCertificates = loadExtraCertificates(gStaticPins.extra_certificates); +var [certNameToSKD, certSKDToName] = loadNSSCertinfo(extraCertificates); +var [chromeNameToHash, chromeNameToMozName] = downloadAndParseChromeCerts( + gStaticPins.chromium_data.cert_file_url, + certNameToSKD, + certSKDToName +); +var [chromeImportedPinsets, chromeImportedEntries] = downloadAndParseChromePins( + gStaticPins.chromium_data.json_file_url, + chromeNameToHash, + chromeNameToMozName, + certNameToSKD, + certSKDToName +); + +writeFile( + certNameToSKD, + certSKDToName, + chromeImportedPinsets, + chromeImportedEntries +); + +FileUtils.closeSafeFileOutputStream(gFileOutputStream); diff --git a/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js b/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js new file mode 100644 index 0000000000..aeaa29bc2d --- /dev/null +++ b/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js @@ -0,0 +1,557 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +// How to run this file: +// 1. [obtain firefox source code] +// 2. [build/obtain firefox binaries] +// 3. run `[path to]/run-mozilla.sh [path to]/xpcshell [path to]/getHSTSPreloadlist.js [absolute path to]/nsSTSPreloadlist.inc' +// Note: Running this file outputs a new nsSTSPreloadlist.inc in the current +// working directory. + +var gSSService = Cc["@mozilla.org/ssservice;1"].getService( + Ci.nsISiteSecurityService +); + +const { FileUtils } = ChromeUtils.importESModule( + "resource://gre/modules/FileUtils.sys.mjs" +); + +const SOURCE = + "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/http/transport_security_state_static.json?format=TEXT"; +const TOOL_SOURCE = + "https://hg.mozilla.org/mozilla-central/file/default/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js"; +const OUTPUT = "nsSTSPreloadList.inc"; +const MINIMUM_REQUIRED_MAX_AGE = 60 * 60 * 24 * 7 * 18; +const MAX_CONCURRENT_REQUESTS = 500; +const MAX_RETRIES = 1; +const REQUEST_TIMEOUT = 30 * 1000; +const ERROR_NONE = "no error"; +const ERROR_CONNECTING_TO_HOST = "could not connect to host"; +const ERROR_NO_HSTS_HEADER = "did not receive HSTS header"; +const ERROR_MAX_AGE_TOO_LOW = "max-age too low: "; +const HEADER = `/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/*****************************************************************************/ +/* This is an automatically generated file. If you're not */ +/* nsSiteSecurityService.cpp, you shouldn't be #including it. */ +/*****************************************************************************/ + +#include +`; + +const GPERF_DELIM = "%%\n"; + +function download() { + let req = new XMLHttpRequest(); + req.open("GET", SOURCE, false); // doing the request synchronously + try { + req.send(); + } catch (e) { + throw new Error(`ERROR: problem downloading '${SOURCE}': ${e}`); + } + + if (req.status != 200) { + throw new Error( + "ERROR: problem downloading '" + SOURCE + "': status " + req.status + ); + } + + let resultDecoded; + try { + resultDecoded = atob(req.responseText); + } catch (e) { + throw new Error( + "ERROR: could not decode data as base64 from '" + SOURCE + "': " + e + ); + } + + // we have to filter out '//' comments, while not mangling the json + let result = resultDecoded.replace(/^(\s*)?\/\/[^\n]*\n/gm, ""); + let data = null; + try { + data = JSON.parse(result); + } catch (e) { + throw new Error(`ERROR: could not parse data from '${SOURCE}': ${e}`); + } + return data; +} + +function getHosts(rawdata) { + let hosts = []; + + if (!rawdata || !rawdata.entries) { + throw new Error( + "ERROR: source data not formatted correctly: 'entries' not found" + ); + } + + for (let entry of rawdata.entries) { + if (entry.mode && entry.mode == "force-https") { + if (entry.name) { + // We trim the entry name here to avoid malformed URI exceptions when we + // later try to connect to the domain. + entry.name = entry.name.trim(); + entry.retries = MAX_RETRIES; + // We prefer the camelCase variable to the JSON's snake case version + entry.includeSubdomains = entry.include_subdomains; + hosts.push(entry); + } else { + throw new Error("ERROR: entry not formatted correctly: no name found"); + } + } + } + + return hosts; +} + +function processStsHeader(host, header, status, securityInfo) { + let maxAge = { + value: 0, + }; + let includeSubdomains = { + value: false, + }; + let error = ERROR_NONE; + if ( + header != null && + securityInfo != null && + securityInfo.overridableErrorCategory == + Ci.nsITransportSecurityInfo.ERROR_UNSET + ) { + try { + let uri = Services.io.newURI("https://" + host.name); + gSSService.processHeader(uri, header, {}, maxAge, includeSubdomains); + } catch (e) { + dump( + "ERROR: could not process header '" + + header + + "' from " + + host.name + + ": " + + e + + "\n" + ); + error = e; + } + } else if (status == 0) { + error = ERROR_CONNECTING_TO_HOST; + } else { + error = ERROR_NO_HSTS_HEADER; + } + + if (error == ERROR_NONE && maxAge.value < MINIMUM_REQUIRED_MAX_AGE) { + error = ERROR_MAX_AGE_TOO_LOW; + } + + return { + name: host.name, + maxAge: maxAge.value, + includeSubdomains: includeSubdomains.value, + error, + retries: host.retries - 1, + forceInclude: host.forceInclude, + }; +} + +// RedirectAndAuthStopper prevents redirects and HTTP authentication +function RedirectAndAuthStopper() {} + +RedirectAndAuthStopper.prototype = { + // nsIChannelEventSink + asyncOnChannelRedirect(oldChannel, newChannel, flags, callback) { + throw Components.Exception("", Cr.NS_ERROR_ENTITY_CHANGED); + }, + + // nsIAuthPrompt2 + promptAuth(channel, level, authInfo) { + return false; + }, + + asyncPromptAuth(channel, callback, context, level, authInfo) { + throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED); + }, + + getInterface(iid) { + return this.QueryInterface(iid); + }, + + QueryInterface: ChromeUtils.generateQI([ + "nsIChannelEventSink", + "nsIAuthPrompt2", + ]), +}; + +function fetchstatus(host) { + return new Promise((resolve, reject) => { + let xhr = new XMLHttpRequest(); + let uri = "https://" + host.name + "/"; + + xhr.open("head", uri, true); + xhr.setRequestHeader("X-Automated-Tool", TOOL_SOURCE); + xhr.timeout = REQUEST_TIMEOUT; + + let errorHandler = () => { + dump("ERROR: exception making request to " + host.name + "\n"); + resolve( + processStsHeader( + host, + null, + xhr.status, + xhr.channel && xhr.channel.securityInfo + ) + ); + }; + + xhr.onerror = errorHandler; + xhr.ontimeout = errorHandler; + xhr.onabort = errorHandler; + + xhr.onload = () => { + let header = xhr.getResponseHeader("strict-transport-security"); + resolve( + processStsHeader(host, header, xhr.status, xhr.channel.securityInfo) + ); + }; + + xhr.channel.notificationCallbacks = new RedirectAndAuthStopper(); + xhr.send(); + }); +} + +async function getHSTSStatus(host) { + do { + host = await fetchstatus(host); + } while (shouldRetry(host)); + return host; +} + +function compareHSTSStatus(a, b) { + if (a.name > b.name) { + return 1; + } + if (a.name < b.name) { + return -1; + } + return 0; +} + +function writeTo(string, fos) { + fos.write(string, string.length); +} + +// Determines and returns a string representing a declaration of when this +// preload list should no longer be used. +// This is the current time plus MINIMUM_REQUIRED_MAX_AGE. +function getExpirationTimeString() { + let now = new Date(); + let nowMillis = now.getTime(); + // MINIMUM_REQUIRED_MAX_AGE is in seconds, so convert to milliseconds + let expirationMillis = nowMillis + MINIMUM_REQUIRED_MAX_AGE * 1000; + let expirationMicros = expirationMillis * 1000; + return ( + "const PRTime gPreloadListExpirationTime = INT64_C(" + + expirationMicros + + ");\n" + ); +} + +function shouldRetry(response) { + return ( + response.error != ERROR_NO_HSTS_HEADER && + response.error != ERROR_MAX_AGE_TOO_LOW && + response.error != ERROR_NONE && + response.retries > 0 + ); +} + +// Copied from browser/components/migration/MigrationUtils.sys.mjs +function spinResolve(promise) { + if (!(promise instanceof Promise)) { + return promise; + } + let done = false; + let result = null; + let error = null; + promise + .catch(e => { + error = e; + }) + .then(r => { + result = r; + done = true; + }); + + Services.tm.spinEventLoopUntil( + "getHSTSPreloadList.js:spinResolve", + () => done + ); + if (error) { + throw error; + } else { + return result; + } +} + +async function probeHSTSStatuses(inHosts) { + let totalLength = inHosts.length; + dump("Examining " + totalLength + " hosts.\n"); + + // Make requests in batches of MAX_CONCURRENT_REQUESTS. Otherwise, we have + // too many in-flight requests and the time it takes to process them causes + // them all to time out. + let allResults = []; + while (inHosts.length) { + let promises = []; + for (let i = 0; i < MAX_CONCURRENT_REQUESTS && inHosts.length; i++) { + let host = inHosts.shift(); + promises.push(getHSTSStatus(host)); + } + let results = await Promise.all(promises); + let progress = ( + (100 * (totalLength - inHosts.length)) / + totalLength + ).toFixed(2); + dump(progress + "% done\n"); + allResults = allResults.concat(results); + } + + dump("HSTS Probe received " + allResults.length + " statuses.\n"); + return allResults; +} + +function readCurrentList(filename) { + var currentHosts = {}; + var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); + file.initWithPath(filename); + var fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance( + Ci.nsILineInputStream + ); + fis.init(file, -1, -1, Ci.nsIFileInputStream.CLOSE_ON_EOF); + var line = {}; + + // While we generate entries matching the latest version format, + // we still need to be able to read entries in the previous version formats + // for bootstrapping a latest version preload list from a previous version + // preload list. Hence these regexes. + const entryRegexes = [ + /([^,]+), (0|1)/, // v3 + / {2}\/\* "([^"]*)", (true|false) \*\//, // v2 + / {2}{ "([^"]*)", (true|false) },/, // v1 + ]; + + while (fis.readLine(line)) { + let match; + entryRegexes.find(r => { + match = r.exec(line.value); + return match; + }); + if (match) { + currentHosts[match[1]] = match[2] == "1" || match[2] == "true"; + } + } + return currentHosts; +} + +function combineLists(newHosts, currentHosts) { + let newHostsSet = new Set(); + + for (let newHost of newHosts) { + newHostsSet.add(newHost.name); + } + + for (let currentHost in currentHosts) { + if (!newHostsSet.has(currentHost)) { + newHosts.push({ name: currentHost, retries: MAX_RETRIES }); + } + } +} + +const TEST_ENTRIES = [ + { + name: "includesubdomains.preloaded.test", + includeSubdomains: true, + }, + { + name: "includesubdomains2.preloaded.test", + includeSubdomains: true, + }, + { + name: "noincludesubdomains.preloaded.test", + includeSubdomains: false, + }, +]; + +function deleteTestHosts(currentHosts) { + for (let testEntry of TEST_ENTRIES) { + delete currentHosts[testEntry.name]; + } +} + +function getTestHosts() { + let hosts = []; + for (let testEntry of TEST_ENTRIES) { + hosts.push({ + name: testEntry.name, + maxAge: MINIMUM_REQUIRED_MAX_AGE, + includeSubdomains: testEntry.includeSubdomains, + error: ERROR_NONE, + // This deliberately doesn't have a value for `retries` (because we should + // never attempt to connect to this host). + forceInclude: true, + }); + } + return hosts; +} + +async function insertHosts(inoutHostList, inAddedHosts) { + for (let host of inAddedHosts) { + inoutHostList.push(host); + } +} + +function filterForcedInclusions(inHosts, outNotForced, outForced) { + // Apply our filters (based on policy today) to determine which entries + // will be included without being checked (forced); the others will be + // checked using active probing. + for (let host of inHosts) { + if ( + host.policy == "google" || + host.policy == "public-suffix" || + host.policy == "public-suffix-requested" + ) { + host.forceInclude = true; + host.error = ERROR_NONE; + outForced.push(host); + } else { + outNotForced.push(host); + } + } +} + +function output(statuses) { + dump("INFO: Writing output to " + OUTPUT + "\n"); + try { + let file = new FileUtils.File( + PathUtils.join(Services.dirsvc.get("CurWorkD", Ci.nsIFile).path, OUTPUT) + ); + let fos = FileUtils.openSafeFileOutputStream(file); + writeTo(HEADER, fos); + writeTo(getExpirationTimeString(), fos); + + writeTo(GPERF_DELIM, fos); + + for (let status of statuses) { + let includeSubdomains = status.includeSubdomains ? 1 : 0; + writeTo(status.name + ", " + includeSubdomains + "\n", fos); + } + + writeTo(GPERF_DELIM, fos); + FileUtils.closeSafeFileOutputStream(fos); + dump("finished writing output file\n"); + } catch (e) { + dump("ERROR: problem writing output to '" + OUTPUT + "': " + e + "\n"); + throw e; + } +} + +function errorToString(status) { + return status.error == ERROR_MAX_AGE_TOO_LOW + ? status.error + status.maxAge + : status.error; +} + +async function main(args) { + if (args.length != 1) { + throw new Error( + "Usage: getHSTSPreloadList.js " + ); + } + + // get the current preload list + let currentHosts = readCurrentList(args[0]); + // delete any hosts we use in tests so we don't actually connect to them + deleteTestHosts(currentHosts); + // disable the current preload list so it won't interfere with requests we make + Services.prefs.setBoolPref( + "network.stricttransportsecurity.preloadlist", + false + ); + // download and parse the raw json file from the Chromium source + let rawdata = download(); + // get just the hosts with mode: "force-https" + let hosts = getHosts(rawdata); + // add hosts in the current list to the new list (avoiding duplicates) + combineLists(hosts, currentHosts); + + // Don't contact hosts that are forced to be included anyway + let hostsToContact = []; + let forcedHosts = []; + filterForcedInclusions(hosts, hostsToContact, forcedHosts); + + // Initialize the final status list + let hstsStatuses = []; + // Add the hosts we use in tests + dump("Adding test hosts\n"); + insertHosts(hstsStatuses, getTestHosts()); + // Add in the hosts that are forced + dump("Adding forced hosts\n"); + insertHosts(hstsStatuses, forcedHosts); + + let total = await probeHSTSStatuses(hostsToContact) + .then(function (probedStatuses) { + return hstsStatuses.concat(probedStatuses); + }) + .then(function (statuses) { + return statuses.sort(compareHSTSStatus); + }) + .then(function (statuses) { + for (let status of statuses) { + // If we've encountered an error for this entry (other than the site not + // sending an HSTS header), be safe and don't remove it from the list + // (given that it was already on the list). + if ( + !status.forceInclude && + status.error != ERROR_NONE && + status.error != ERROR_NO_HSTS_HEADER && + status.error != ERROR_MAX_AGE_TOO_LOW && + status.name in currentHosts + ) { + // dump("INFO: error connecting to or processing " + status.name + " - using previous status on list\n"); + status.maxAge = MINIMUM_REQUIRED_MAX_AGE; + status.includeSubdomains = currentHosts[status.name]; + } + } + return statuses; + }) + .then(function (statuses) { + // Filter out entries we aren't including. + var includedStatuses = statuses.filter(function (status) { + if (status.maxAge < MINIMUM_REQUIRED_MAX_AGE && !status.forceInclude) { + // dump("INFO: " + status.name + " NOT ON the preload list\n"); + return false; + } + + // dump("INFO: " + status.name + " ON the preload list (includeSubdomains: " + status.includeSubdomains + ")\n"); + if (status.forceInclude && status.error != ERROR_NONE) { + dump( + status.name + + ": " + + errorToString(status) + + " (error ignored - included regardless)\n" + ); + } + return true; + }); + return includedStatuses; + }); + + // Write the output file + output(total); + + dump("HSTS probing all done\n"); +} + +// arguments is a global within xpcshell +spinResolve(main(arguments)); diff --git a/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh new file mode 100755 index 0000000000..b88ee476da --- /dev/null +++ b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh @@ -0,0 +1,618 @@ +#!/bin/bash + +set -ex + +function usage { + cat <&2 + exit 31 + fi + if [ ! -f "${TESTS_ARCHIVE}" ]; then + echo "Downloaded file '${TESTS_ARCHIVE}' not found in directory '$(pwd)'." >&2 + exit 32 + fi + # Unpack the browser and move xpcshell in place for updating the preload list. + echo "INFO: Unpacking resources..." + ${UNPACK_CMD} "${BROWSER_ARCHIVE}" + mkdir -p tests + cd tests + ${UNTAR} "../${TESTS_ARCHIVE}" + cd "${BASEDIR}" + cp tests/bin/xpcshell "${PRODUCT}" +} + +# Downloads the current in-tree HSTS (HTTP Strict Transport Security) files. +# Runs a simple xpcshell script to generate up-to-date HSTS information. +# Compares the new HSTS output with the old to determine whether we need to update. +function compare_hsts_files { + cd "${BASEDIR}" + + HSTS_PRELOAD_INC_HG="${HGREPO}/raw-file/default/security/manager/ssl/$(basename "${HSTS_PRELOAD_INC_OLD}")" + + echo "INFO: Downloading existing include file..." + rm -rf "${HSTS_PRELOAD_ERRORS}" "${HSTS_PRELOAD_INC_OLD}" + echo "INFO: ${WGET} ${HSTS_PRELOAD_INC_HG}" + ${WGET} -O "${HSTS_PRELOAD_INC_OLD}" "${HSTS_PRELOAD_INC_HG}" + + if [ ! -f "${HSTS_PRELOAD_INC_OLD}" ]; then + echo "Downloaded file '${HSTS_PRELOAD_INC_OLD}' not found in directory '$(pwd)' - this should have been downloaded above from ${HSTS_PRELOAD_INC_HG}." >&2 + exit 41 + fi + + # Run the script to get an updated preload list. + echo "INFO: Generating new HSTS preload list..." + cd "${BASEDIR}/${PRODUCT}" + if ! LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:. ./xpcshell "${HSTS_PRELOAD_SCRIPT}" "${HSTS_PRELOAD_INC_OLD}"; then + echo "HSTS preload list generation failed" >&2 + exit 43 + fi + + # The created files should be non-empty. + echo "INFO: Checking whether new HSTS preload list is valid..." + if [ ! -s "${HSTS_PRELOAD_INC_NEW}" ]; then + echo "New HSTS preload list ${HSTS_PRELOAD_INC_NEW} is empty. That's less good." >&2 + exit 42 + fi + cd "${BASEDIR}" + + # Check for differences + echo "INFO: diffing old/new HSTS preload lists into ${HSTS_DIFF_ARTIFACT}" + ${DIFF} "${HSTS_PRELOAD_INC_OLD}" "${HSTS_PRELOAD_INC_NEW}" | tee "${HSTS_DIFF_ARTIFACT}" + if [ -s "${HSTS_DIFF_ARTIFACT}" ] + then + return 0 + fi + return 1 +} + +# Downloads the current in-tree HPKP (HTTP public key pinning) files. +# Runs a simple xpcshell script to generate up-to-date HPKP information. +# Compares the new HPKP output with the old to determine whether we need to update. +function compare_hpkp_files { + cd "${BASEDIR}" + HPKP_PRELOAD_JSON_HG="${HGREPO}/raw-file/default/security/manager/tools/$(basename "${HPKP_PRELOAD_JSON}")" + + HPKP_PRELOAD_OUTPUT_HG="${HGREPO}/raw-file/default/security/manager/ssl/${HPKP_PRELOAD_INC}" + + rm -f "${HPKP_PRELOAD_OUTPUT}" + ${WGET} -O "${HPKP_PRELOAD_INPUT}" "${HPKP_PRELOAD_OUTPUT_HG}" + ${WGET} -O "${HPKP_PRELOAD_JSON}" "${HPKP_PRELOAD_JSON_HG}" + + # Run the script to get an updated preload list. + echo "INFO: Generating new HPKP preload list..." + cd "${BASEDIR}/${PRODUCT}" + if ! LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:. ./xpcshell "${HPKP_PRELOAD_SCRIPT}" "${HPKP_PRELOAD_JSON}" "${HPKP_PRELOAD_OUTPUT}" > "${HPKP_PRELOAD_ERRORS}"; then + echo "HPKP preload list generation failed" >&2 + exit 54 + fi + + # The created files should be non-empty. + echo "INFO: Checking whether new HPKP preload list is valid..." + + if [ ! -s "${HPKP_PRELOAD_OUTPUT}" ]; then + echo "${HPKP_PRELOAD_OUTPUT} is empty. That's less good." >&2 + exit 52 + fi + if ! grep kPreloadPKPinsExpirationTime "${HPKP_PRELOAD_OUTPUT}"; then + echo "${HPKP_PRELOAD_OUTPUT} is missing an expiration time. Truncated?" >&2 + exit 53 + fi + cd "${BASEDIR}" + + echo "INFO: diffing old/new HPKP preload lists..." + ${DIFF} "${HPKP_PRELOAD_INPUT}" "${HPKP_PRELOAD_OUTPUT}" | tee "${HPKP_DIFF_ARTIFACT}" + if [ -s "${HPKP_DIFF_ARTIFACT}" ] + then + return 0 + fi + return 1 +} + +function is_valid_xml { + xmlfile=$1 + XMLLINT=$(command -v xmllint 2>/dev/null | head -n1) + + if [ ! -x "${XMLLINT}" ]; then + echo "ERROR: xmllint not found in PATH" + exit 60 + fi + ${XMLLINT} --nonet --noout "${xmlfile}" +} + +# Downloads the public suffix list +function compare_suffix_lists { + HG_SUFFIX_URL="${HGREPO}/raw-file/default/${HG_SUFFIX_PATH}" + cd "${BASEDIR}" + + echo "INFO: ${WGET} -O ${GITHUB_SUFFIX_LOCAL} ${GITHUB_SUFFIX_URL}" + rm -f "${GITHUB_SUFFIX_LOCAL}" + ${WGET} -O "${GITHUB_SUFFIX_LOCAL}" "${GITHUB_SUFFIX_URL}" + + echo "INFO: ${WGET} -O ${HG_SUFFIX_LOCAL} ${HG_SUFFIX_URL}" + rm -f "${HG_SUFFIX_LOCAL}" + ${WGET} -O "${HG_SUFFIX_LOCAL}" "${HG_SUFFIX_URL}" + + echo "INFO: diffing in-tree suffix list against the suffix list from AMO..." + ${DIFF} ${GITHUB_SUFFIX_LOCAL} ${HG_SUFFIX_LOCAL} | tee "${SUFFIX_LIST_DIFF_ARTIFACT}" + if [ -s "${SUFFIX_LIST_DIFF_ARTIFACT}" ] + then + return 0 + fi + return 1 +} + +function compare_remote_settings_files { + REMOTE_SETTINGS_SERVER="https://firefox.settings.services.mozilla.com/v1" + + # 1. List remote settings collections from server. + echo "INFO: fetch remote settings list from server" + ${WGET} -qO- "${REMOTE_SETTINGS_SERVER}/buckets/monitor/collections/changes/records" |\ + ${JQ} -r '.data[] | .bucket+"/"+.collection+"/"+(.last_modified|tostring)' |\ + # 2. For each entry ${bucket, collection, last_modified} + while IFS="/" read -r bucket collection last_modified; do + + # 3. Download the dump from HG into REMOTE_SETTINGS_INPUT folder + hg_dump_url="${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${bucket}/${collection}.json" + local_location_input="$REMOTE_SETTINGS_INPUT/${bucket}/${collection}.json" + mkdir -p "$REMOTE_SETTINGS_INPUT/${bucket}" + ${WGET} -qO "$local_location_input" "$hg_dump_url" + if [ $? -eq 8 ]; then + # We don't keep any dump for this collection, skip it. + # Try to clean up in case no collection in this bucket has dump. + rmdir "$REMOTE_SETTINGS_INPUT/${bucket}" --ignore-fail-on-non-empty + continue + fi + + # 4. Download server version into REMOTE_SETTINGS_OUTPUT folder + remote_records_url="$REMOTE_SETTINGS_SERVER/buckets/${bucket}/collections/${collection}/changeset?_expected=${last_modified}" + local_location_output="$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}.json" + mkdir -p "$REMOTE_SETTINGS_OUTPUT/${bucket}" + ${WGET} -qO- "$remote_records_url" | ${JQ} '{"data": .changes, "timestamp": .timestamp}' > "${local_location_output}" + + # 5. Download attachments if needed. + if [ "${bucket}" = "blocklists" ] && [ "${collection}" = "addons-bloomfilters" ]; then + # Find the attachment with the most recent generation_time, like _updateMLBF in Blocklist.jsm. + # The server should return one "bloomfilter-base" record, but in case it returns multiple, + # return the most recent one. The server may send multiple entries if we ever decide to use + # the "filter_expression" feature of Remote Settings to send different records to specific + # channels. In that case this code should be updated to recognize the filter expression, + # but until we do, simply select the most recent record - can't go wrong with that. + # Note that "attachment_type" and "generation_time" are specific to addons-bloomfilters. + update_remote_settings_attachment "${bucket}" "${collection}" addons-mlbf.bin \ + 'map(select(.attachment_type == "bloomfilter-base")) | sort_by(.generation_time) | last' + fi + # Here is an example to download an attachment with record identifier "ID": + # update_remote_settings_attachment "${bucket}" "${collection}" ID '.[] | select(.id == "ID")' + # NOTE: The downloaded data is not validated. xpcshell should be used for that. + done + + echo "INFO: diffing old/new remote settings dumps..." + ${DIFF} -r "${REMOTE_SETTINGS_INPUT}" "${REMOTE_SETTINGS_OUTPUT}" > "${REMOTE_SETTINGS_DIFF_ARTIFACT}" + if [ -s "${REMOTE_SETTINGS_DIFF_ARTIFACT}" ] + then + return 0 + fi + return 1 +} + +# Helper for compare_remote_settings_files to download attachments from remote settings. +# The format and location is documented at: +# https://firefox-source-docs.mozilla.org/services/common/services/RemoteSettings.html#packaging-attachments +function update_remote_settings_attachment() { + local bucket=$1 + local collection=$2 + local attachment_id=$3 + # $4 is a jq filter on the arrays that should return one record with the attachment + local jq_attachment_selector=".data | map(select(.attachment)) | $4" + + # These paths match _readAttachmentDump in services/settings/Attachments.jsm. + local path_to_attachment="${bucket}/${collection}/${attachment_id}" + local path_to_meta="${bucket}/${collection}/${attachment_id}.meta.json" + local old_meta="$REMOTE_SETTINGS_INPUT/${path_to_meta}" + local new_meta="$REMOTE_SETTINGS_OUTPUT/${path_to_meta}" + + # Those files should have been created by compare_remote_settings_files before the function call. + local local_location_input="$REMOTE_SETTINGS_INPUT/${bucket}/${collection}.json" + local local_location_output="$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}.json" + + # Compute the metadata based on already-downloaded records. + mkdir -p "$REMOTE_SETTINGS_INPUT/${bucket}/${collection}" + ${JQ} -cj <"$local_location_input" "${jq_attachment_selector}" > "${old_meta}" + mkdir -p "$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}" + ${JQ} -cj <"$local_location_output" "${jq_attachment_selector}" > "${new_meta}" + + if cmp --silent "${old_meta}" "${new_meta}" ; then + # Metadata not changed, don't bother downloading the attachments themselves. + return + fi + # Metadata changed. Download attachments. + + echo "INFO: Downloading updated remote settings dump: ${bucket}/${collection}/${attachment_id}" + + # Overwrited old_meta with the actual file from the repo. The content should be equivalent, + # but can have minor differences (e.g. different line endings) if the checked in file was not + # generated by this script (e.g. manually checked in). + ${WGET} -qO "${old_meta}" "${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${path_to_meta}" + + ${WGET} -qO "${REMOTE_SETTINGS_INPUT}/${path_to_attachment}" "${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${path_to_attachment}" + + if [ -z "${ATTACHMENT_BASE_URL}" ] ; then + ATTACHMENT_BASE_URL=$(${WGET} -qO- "${REMOTE_SETTINGS_SERVER}" | ${JQ} -r .capabilities.attachments.base_url) + fi + attachment_path_from_meta=$(${JQ} -r < "${new_meta}" .attachment.location) + ${WGET} -qO "${REMOTE_SETTINGS_OUTPUT}/${path_to_attachment}" "${ATTACHMENT_BASE_URL}${attachment_path_from_meta}" +} + +# Clones an hg repo +function clone_repo { + cd "${BASEDIR}" + if [ ! -d "${REPODIR}" ]; then + ${HG} robustcheckout --sharebase /tmp/hg-store -b default "${HGREPO}" "${REPODIR}" + fi + + ${HG} -R "${REPODIR}" pull + ${HG} -R "${REPODIR}" update -C default +} + +# Copies new HSTS files in place, and commits them. +function stage_hsts_files { + cd "${BASEDIR}" + cp -f "${HSTS_PRELOAD_INC_NEW}" "${REPODIR}/security/manager/ssl/" +} + +function stage_hpkp_files { + cd "${BASEDIR}" + cp -f "${HPKP_PRELOAD_OUTPUT}" "${REPODIR}/security/manager/ssl/${HPKP_PRELOAD_INC}" +} + +function stage_remote_settings_files { + cd "${BASEDIR}" + cp -a "${REMOTE_SETTINGS_OUTPUT}"/* "${REPODIR}${REMOTE_SETTINGS_DIR}" +} + +function stage_tld_suffix_files { + cd "${BASEDIR}" + cp -a "${GITHUB_SUFFIX_LOCAL}" "${REPODIR}/${HG_SUFFIX_PATH}" +} + +# Push all pending commits to Phabricator +function push_repo { + cd "${REPODIR}" + if [ ! -r "${HOME}/.arcrc" ] + then + return 1 + fi + if ! ARC=$(command -v arc) + then + return 1 + fi + if [ -z "${REVIEWERS}" ] + then + return 1 + fi + # Clean up older review requests + # Turn Needs Review D624: No bug, Automated HSTS ... + # into D624 + for diff in $($ARC list | grep "Needs Review" | grep -E "${BRANCH} repo-update" | awk 'match($0, /D[0-9]+[^: ]/) { print substr($0, RSTART, RLENGTH) }') + do + echo "Removing old request $diff" + # There is no 'arc abandon', see bug 1452082 + echo '{"transactions": [{"type":"abandon", "value": true}], "objectIdentifier": "'"${diff}"'"}' | $ARC call-conduit -- differential.revision.edit + done + + $ARC diff --verbatim --reviewers "${REVIEWERS}" +} + + + +# Main + +# Parse our command-line options. +while [ $# -gt 0 ]; do + case "$1" in + -h) usage; exit 0 ;; + -p) PRODUCT="$2"; shift ;; + -b) BRANCH="$2"; shift ;; + -n) DRY_RUN=true ;; + -c) CLOSED_TREE=true ;; + -d) DONTBUILD=true ;; + -a) APPROVAL=true ;; + --pinset) DO_PRELOAD_PINSET=true ;; + --hsts) DO_HSTS=true ;; + --hpkp) DO_HPKP=true ;; + --remote-settings) DO_REMOTE_SETTINGS=true ;; + --suffix-list) DO_SUFFIX_LIST=true ;; + -r) REPODIR="$2"; shift ;; + --use-mozilla-central) USE_MC=true ;; + --use-ftp-builds) USE_TC=false ;; + -*) usage + exit 11 ;; + *) break ;; # terminate while loop + esac + shift +done + +# Must supply a code branch to work with. +if [ "${BRANCH}" == "" ]; then + echo "Error: You must specify a branch with -b branchname." >&2 + usage + exit 12 +fi + +# Must choose at least one update action. +if [ "$DO_HSTS" == "false" ] && [ "$DO_HPKP" == "false" ] && [ "$DO_REMOTE_SETTINGS" == "false" ] && [ "$DO_SUFFIX_LIST" == "false" ] +then + echo "Error: you must specify at least one action from: --hsts, --hpkp, --remote-settings, or --suffix-list" >&2 + usage + exit 13 +fi + +# per-product constants +case "${PRODUCT}" in + thunderbird) + COMMIT_AUTHOR="tbirdbld " + ;; + firefox) + ;; + *) + echo "Error: Invalid product specified" + usage + exit 14 + ;; +esac + +if [ "${REPODIR}" == "" ]; then + REPODIR="$(basename "${BRANCH}")" +fi + +case "${BRANCH}" in + mozilla-central|comm-central|try ) + HGREPO="https://${HGHOST}/${BRANCH}" + ;; + mozilla-*|comm-* ) + HGREPO="https://${HGHOST}/releases/${BRANCH}" + ;; + * ) + HGREPO="https://${HGHOST}/projects/${BRANCH}" + ;; +esac + +BROWSER_ARCHIVE="target.${PLATFORM_EXT}" +TESTS_ARCHIVE="target.common.tests.tar.gz" + +preflight_cleanup +if [ "${DO_HSTS}" == "true" ] || [ "${DO_HPKP}" == "true" ] || [ "${DO_PRELOAD_PINSET}" == "true" ] +then + if [ "${USE_TC}" == "true" ]; then + download_shared_artifacts_from_tc + else + download_shared_artifacts_from_ftp + fi + unpack_artifacts +fi + +if [ "${DO_HSTS}" == "true" ]; then + if compare_hsts_files + then + HSTS_UPDATED=true + fi +fi +if [ "${DO_HPKP}" == "true" ]; then + if compare_hpkp_files + then + HPKP_UPDATED=true + fi +fi +if [ "${DO_REMOTE_SETTINGS}" == "true" ]; then + if compare_remote_settings_files + then + REMOTE_SETTINGS_UPDATED=true + fi +fi +if [ "${DO_SUFFIX_LIST}" == "true" ]; then + if compare_suffix_lists + then + SUFFIX_LIST_UPDATED=true + fi +fi + + +if [ "${HSTS_UPDATED}" == "false" ] && [ "${HPKP_UPDATED}" == "false" ] && [ "${REMOTE_SETTINGS_UPDATED}" == "false" ] && [ "${SUFFIX_LIST_UPDATED}" == "false" ]; then + echo "INFO: no updates required. Exiting." + exit 0 +else + if [ "${DRY_RUN}" == "true" ]; then + echo "INFO: Updates are available, not updating hg in dry-run mode." + exit 2 + fi +fi + +clone_repo + +COMMIT_MESSAGE="No Bug, ${BRANCH} repo-update" +if [ "${HSTS_UPDATED}" == "true" ] +then + stage_hsts_files + COMMIT_MESSAGE="${COMMIT_MESSAGE} HSTS" +fi + +if [ "${HPKP_UPDATED}" == "true" ] +then + stage_hpkp_files + COMMIT_MESSAGE="${COMMIT_MESSAGE} HPKP" +fi + +if [ "${REMOTE_SETTINGS_UPDATED}" == "true" ] +then + stage_remote_settings_files + COMMIT_MESSAGE="${COMMIT_MESSAGE} remote-settings" +fi + +if [ "${SUFFIX_LIST_UPDATED}" == "true" ] +then + stage_tld_suffix_files + COMMIT_MESSAGE="${COMMIT_MESSAGE} tld-suffixes" +fi + + +if [ ${DONTBUILD} == true ]; then + COMMIT_MESSAGE="${COMMIT_MESSAGE} - (DONTBUILD)" +fi +if [ ${CLOSED_TREE} == true ]; then + COMMIT_MESSAGE="${COMMIT_MESSAGE} - CLOSED TREE" +fi +if [ ${APPROVAL} == true ]; then + COMMIT_MESSAGE="${COMMIT_MESSAGE} - a=repo-update" +fi + + +if ${HG} -R "${REPODIR}" commit -u "${COMMIT_AUTHOR}" -m "${COMMIT_MESSAGE}" +then + push_repo +fi + +echo "All done" diff --git a/taskcluster/docker/periodic-updates/setup.sh b/taskcluster/docker/periodic-updates/setup.sh new file mode 100755 index 0000000000..d05c60883c --- /dev/null +++ b/taskcluster/docker/periodic-updates/setup.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +set -ve + +apt-get update -q +apt-get install \ + arcanist \ + curl \ + jq \ + libasound2 \ + libdbus-glib-1-2 \ + libgtk-3-0 \ + libx11-xcb1 \ + libxml2-utils \ + libxt6 \ + libxtst6 \ + shellcheck \ + unzip \ + bzip2 \ + wget + +rm -rf /setup diff --git a/taskcluster/docker/push-to-try/Dockerfile b/taskcluster/docker/push-to-try/Dockerfile new file mode 100644 index 0000000000..4725c7e48b --- /dev/null +++ b/taskcluster/docker/push-to-try/Dockerfile @@ -0,0 +1,22 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +FROM $DOCKER_IMAGE_PARENT + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +RUN apt-get update && \ + apt-get install \ + openssh-client + +COPY known_hosts /etc/ssh/ssh_known_hosts +COPY hgrc /etc/mercurial/hgrc.d/push-to-try.rc + +RUN hg clone -r 19a77a5d7b2a90ba225cf5015afd1ac44787abec https://hg.mozilla.org/hgcustom/version-control-tools /builds/worker/.mozbuild/version-control-tools + +# Create directory for scripts to put an hg config in, for configuring ssh +RUN mkdir /builds/worker/.config/hg +RUN chown -R worker:worker /builds/worker/.config/hg diff --git a/taskcluster/docker/push-to-try/hgrc b/taskcluster/docker/push-to-try/hgrc new file mode 100644 index 0000000000..d1a0318499 --- /dev/null +++ b/taskcluster/docker/push-to-try/hgrc @@ -0,0 +1,2 @@ +[extensions] +push-to-try = ~/.mozbuild/version-control-tools/hgext/push-to-try diff --git a/taskcluster/docker/push-to-try/known_hosts b/taskcluster/docker/push-to-try/known_hosts new file mode 100644 index 0000000000..1dc2e39e70 --- /dev/null +++ b/taskcluster/docker/push-to-try/known_hosts @@ -0,0 +1,2 @@ +hg.mozilla.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEsS2fK+TVkHl4QvvOHB6R5xxngsSYJR+pA4+xDhw4mZT9tgCRU9BBG3LazSLp6PUxnpfok78475/tx6Z8QwbTyUTmLElZ9Z9eJzjaGz/olHzQSWv0VB3kT+VZt0LK7pEuaG+Ph/qwxbtUZZOApYLEvu8uctDlS66doofxZylbsgl1kpRQ5HNu+/DgVo9K9dyMOm9OLoy4tXHSE5pofn4tKYdFRa2lt6OVtIP5/hKNb2i0+JmgM8C3bJTPvzJ4C8p2h83ro29XPUkNAfWrgD5CmAPPqHFXyefDCfdefcvI8B8Za9v4j4LynBDZHsGfII+wIfzyLIxy9K6Op6nqDZgCciBRdgxh4uZQINEhB/JJP03Pxo42ExdG28oU3aL8kRRTORT5ehFtImFfr9QESHaUnbVzBbU5DmOB5voYDMle3RgyY+RXJ7+4OxjLRnJvGks9QCn8QrIvabs/PTCnenI8+yDhMlLUkWTiR4JK8vDBYB2Rm++EmVsN9WjllfDNg3Aj1aYe8XiBD4tS+lg7Ur4rJL8X20H4yMvq56sQ0qfH8PCIQGyGL725E7Yuwj/MHvou5xrPM/Lqo/MtX5T2njrzkeaBmI/zFJaLwbphdrwmrzepbcim7OYJFF2pz8u56KDPD1pUQ7C1gEIAx/4mHiDOGCYooSvyfD+JRdjkZUZMiQ== +hg.mozilla.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGuRsL+/OrvIekv3iBST1zdVBLBuh/DMIj+ZN72N9a0g diff --git a/taskcluster/docker/recipes/common.sh b/taskcluster/docker/recipes/common.sh new file mode 100644 index 0000000000..0182154495 --- /dev/null +++ b/taskcluster/docker/recipes/common.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +tooltool_fetch() { + cat >manifest.tt + python3 /setup/tooltool.py fetch + rm manifest.tt +} diff --git a/taskcluster/docker/recipes/debian-test-system-setup.sh b/taskcluster/docker/recipes/debian-test-system-setup.sh new file mode 100644 index 0000000000..a0023220a9 --- /dev/null +++ b/taskcluster/docker/recipes/debian-test-system-setup.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +set -ve + +test "$(whoami)" == 'root' + +mkdir -p /setup +cd /setup + +apt_packages=() + +apt_packages+=('autoconf2.13') +apt_packages+=('bluez-cups') +apt_packages+=('build-essential') +apt_packages+=('ccache') +apt_packages+=('curl') +apt_packages+=('fonts-kacst') +apt_packages+=('fonts-kacst-one') +apt_packages+=('fonts-liberation') +apt_packages+=('fonts-stix') +apt_packages+=('fonts-unfonts-core') +apt_packages+=('fonts-unfonts-extra') +apt_packages+=('fonts-vlgothic') +apt_packages+=('g++-multilib') +apt_packages+=('gcc-multilib') +apt_packages+=('gir1.2-gnomebluetooth-1.0') +apt_packages+=('gnome-keyring') +apt_packages+=('libasound2-dev') +apt_packages+=('libcanberra-pulse') +apt_packages+=('libcurl4-openssl-dev') +apt_packages+=('libdbus-1-dev') +apt_packages+=('libdbus-glib-1-dev') +apt_packages+=('libgconf2-dev') +apt_packages+=('libiw-dev') +apt_packages+=('libnotify-dev') +apt_packages+=('libpulse-dev') +apt_packages+=('libsox-fmt-alsa') +apt_packages+=('libxt-dev') +apt_packages+=('libxxf86vm1') +apt_packages+=('llvm') +apt_packages+=('llvm-dev') +apt_packages+=('llvm-runtime') +apt_packages+=('locales') +apt_packages+=('locales-all') +apt_packages+=('net-tools') +apt_packages+=('openssh-client') +apt_packages+=('qemu-kvm') +apt_packages+=('rlwrap') +apt_packages+=('screen') +apt_packages+=('software-properties-common') +apt_packages+=('sudo') +apt_packages+=('tar') +apt_packages+=('ttf-dejavu') +apt_packages+=('unzip') +apt_packages+=('uuid') +apt_packages+=('wget') +apt_packages+=('xdg-user-dirs') +apt_packages+=('xvfb') +apt_packages+=('zip') + +# use Ubuntu's Python-2.7 (2.7.3 on Precise) +apt_packages+=('python-dev') +apt_packages+=('python-pip') + +apt-get update +apt-get install "${apt_packages[@]}" + +dpkg-reconfigure locales + +# pip 19.3 is causing errors building the docker image, pin to 19.2.3 for now. +# See https://github.com/pypa/pip/issues/7206 +pip install --upgrade pip==19.2.3 +hash -r +pip install virtualenv==15.2.0 + +# clean up +apt-get autoremove + +# We don't need no docs! +rm -rf /usr/share/help /usr/share/doc /usr/share/man + +cd / +rm -rf /setup ~/.ccache ~/.cache ~/.npm +rm -f "$0" diff --git a/taskcluster/docker/recipes/dot-config/pip/pip.conf b/taskcluster/docker/recipes/dot-config/pip/pip.conf new file mode 100644 index 0000000000..73c2b2a52c --- /dev/null +++ b/taskcluster/docker/recipes/dot-config/pip/pip.conf @@ -0,0 +1,2 @@ +[global] +disable-pip-version-check = true diff --git a/taskcluster/docker/recipes/hgrc b/taskcluster/docker/recipes/hgrc new file mode 100755 index 0000000000..f6a2f6643c --- /dev/null +++ b/taskcluster/docker/recipes/hgrc @@ -0,0 +1,33 @@ +# By default the progress bar starts after 3s and updates every 0.1s. We +# change this so it shows and updates every 1.0s. +# We also tell progress to assume a TTY is present so updates are printed +# even if there is no known TTY. +[progress] +delay = 1.0 +refresh = 1.0 +assume-tty = true + +[extensions] +share = +sparse = +robustcheckout = /usr/local/mercurial/robustcheckout.py + +[hostsecurity] +# When running a modern Python, Mercurial will default to TLS 1.1+. +# When running on a legacy Python, Mercurial will default to TLS 1.0+. +# There is no good reason we shouldn't be running a modern Python +# capable of speaking TLS 1.2. And the only Mercurial servers we care +# about should be running TLS 1.2. So make TLS 1.2 the minimum. +minimumprotocol = tls1.2 + +# Settings to make 1-click loaners more useful. +[extensions] +histedit = +rebase = + +[diff] +git = 1 +showfunc = 1 + +[pager] +pager = LESS=FRSXQ less diff --git a/taskcluster/docker/recipes/install-node.sh b/taskcluster/docker/recipes/install-node.sh new file mode 100644 index 0000000000..daeba2edc9 --- /dev/null +++ b/taskcluster/docker/recipes/install-node.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# This script installs Node v16. +# XXX For now, this should match the version installed in +# taskcluster/scripts/misc/repack-node.sh. Later we'll get the ESLint builder +# to use the linux64-node toolchain directly. + +wget -O node.xz --progress=dot:mega https://nodejs.org/dist/v16.19.0/node-v16.19.0-linux-x64.tar.xz +echo 'c88b52497ab38a3ddf526e5b46a41270320409109c3f74171b241132984fd08f' node.xz | sha256sum -c +tar -C /usr/local -xJ --strip-components 1 < node.xz +node -v # verify +npm -v diff --git a/taskcluster/docker/recipes/setup_packages.sh b/taskcluster/docker/recipes/setup_packages.sh new file mode 100755 index 0000000000..48dbf493f3 --- /dev/null +++ b/taskcluster/docker/recipes/setup_packages.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +TASKCLUSTER_ROOT_URL=$1 +shift + +# duplicate the functionality of taskcluster-lib-urls, but in bash.. +queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1" + + +for task in "$@"; do + echo "adding package source $queue_base/task/$task/artifacts/public/build/" + echo "deb [trusted=yes] $queue_base/task/$task/artifacts/public/build/ apt/" > "/etc/apt/sources.list.d/99$task.list" +done diff --git a/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh b/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh new file mode 100644 index 0000000000..cb934529bf --- /dev/null +++ b/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh @@ -0,0 +1,163 @@ +#!/usr/bin/env bash + +set -ve + +test "$(whoami)" == 'root' + +# We do want to install recommended packages. +sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster + +# To speed up docker image build times as well as number of network/disk I/O +# build a list of packages to be installed nad call it in one go. +apt_packages=() + +apt_packages+=('autoconf2.13') +apt_packages+=('bluez-cups') +apt_packages+=('build-essential') +apt_packages+=('ca-certificates') +apt_packages+=('ccache') +apt_packages+=('compiz') +apt_packages+=('curl') +apt_packages+=('fontconfig') +apt_packages+=('fonts-kacst') +apt_packages+=('fonts-kacst-one') +apt_packages+=('fonts-liberation') +apt_packages+=('fonts-stix') +apt_packages+=('fonts-unfonts-core') +apt_packages+=('fonts-unfonts-extra') +apt_packages+=('fonts-vlgothic') +apt_packages+=('g++-multilib') +apt_packages+=('gcc-multilib') +apt_packages+=('gir1.2-gnomebluetooth-1.0') +apt_packages+=('git') +apt_packages+=('gnome-icon-theme') +apt_packages+=('gstreamer1.0-gtk3') +apt_packages+=('gstreamer1.0-plugins-base') +apt_packages+=('gstreamer1.0-plugins-good') +apt_packages+=('gstreamer1.0-tools') +apt_packages+=('gstreamer1.0-pulseaudio') +apt_packages+=('language-pack-en-base') +apt_packages+=('libc6-dbg') +apt_packages+=('libasound2-dev') +apt_packages+=('libavcodec-extra57') +apt_packages+=('libcanberra-gtk3-module') +apt_packages+=('libcanberra-pulse') +apt_packages+=('libcurl4-openssl-dev') +apt_packages+=('libdbus-1-dev') +apt_packages+=('libdbus-glib-1-dev') +apt_packages+=('libfreetype6') +apt_packages+=('libgconf2-dev') +apt_packages+=('libgl1-mesa-dri') +apt_packages+=('libgl1-mesa-glx') +apt_packages+=('libgstreamer-plugins-base1.0-dev') +apt_packages+=('libgstreamer1.0-dev') +apt_packages+=('libgtk-3-0') +apt_packages+=('libiw-dev') +apt_packages+=('libx11-xcb1') +apt_packages+=('libxcb1') +apt_packages+=('libxcb-render0') +apt_packages+=('libxcb-shm0') +apt_packages+=('libxcb-glx0') +apt_packages+=('libxcb-shape0') +apt_packages+=('libnotify-dev') +apt_packages+=('libpulse0') +apt_packages+=('libpulse-dev') +apt_packages+=('libxt-dev') +apt_packages+=('libxxf86vm1') +apt_packages+=('llvm') +apt_packages+=('llvm-dev') +apt_packages+=('llvm-runtime') +apt_packages+=('mesa-common-dev') +apt_packages+=('net-tools') +apt_packages+=('pulseaudio') +apt_packages+=('pulseaudio-module-bluetooth') +apt_packages+=('pulseaudio-module-gconf') +apt_packages+=('python-dev') +apt_packages+=('python-pip') +apt_packages+=('python3-pip') +apt_packages+=('qemu-kvm') +apt_packages+=('rlwrap') +apt_packages+=('screen') +apt_packages+=('software-properties-common') +apt_packages+=('sudo') +apt_packages+=('ttf-dejavu') +apt_packages+=('ubuntu-desktop') +apt_packages+=('unzip') +apt_packages+=('uuid') +apt_packages+=('wget') +apt_packages+=('xvfb') +apt_packages+=('xwit') +apt_packages+=('yasm') +apt_packages+=('zip') + +# xvinfo for test-linux.sh to monitor Xvfb startup +apt_packages+=('x11-utils') + +# Bug 1232407 - this allows the user to start vnc +apt_packages+=('x11vnc') + +# Bug 1176031 - need `xset` to disable screensavers +apt_packages+=('x11-xserver-utils') + +# Build a list of packages to install from the multiverse repo. +apt_packages+=('ubuntu-restricted-extras') + +# APT update takes very long on Ubuntu. Run it at the last possible minute. +apt-get update + +# Also force the cleanup after installation of packages to reduce image size. +apt-get install --allow-downgrades "${apt_packages[@]}" + +# Enable i386 packages +dpkg --add-architecture i386 +apt-get update + +# Make sure we have libraries for 32-bit tests +apt_packages=() +apt_packages+=('libavcodec-extra57:i386') +apt_packages+=('libdbus-glib-1-2:i386') +apt_packages+=('libpulse0:i386') +apt_packages+=('libxt6:i386') +apt_packages+=('libxtst6:i386') +apt_packages+=('libsecret-1-0:i386') +apt_packages+=('libgtk-3-0:i386') +apt_packages+=('libx11-xcb1:i386') +apt_packages+=('libxcb1:i386') +apt_packages+=('libasound2:i386') + +apt-get install --allow-downgrades "${apt_packages[@]}" +rm -rf /var/lib/apt/lists/* + +# Build a list of packages to purge from the image. +apt_packages=() +apt_packages+=('*cheese*') +apt_packages+=('example-content') +apt_packages+=('git') +apt_packages+=('gnome-calendar') +apt_packages+=('gnome-initial-setup') +apt_packages+=('gnome-mahjongg') +apt_packages+=('gnome-mines') +apt_packages+=('gnome-sudoku') +apt_packages+=('libx11-doc') +apt_packages+=('manpages-dev') +apt_packages+=('orca') +apt_packages+=('rhythmbox') +apt_packages+=('thunderbird') +apt_packages+=('ubuntu-release-upgrader*') +apt_packages+=('update-manager-core') +apt_packages+=('update-manager') +apt_packages+=('yelp') + +# Purge unnecessary packages +apt-get purge "${apt_packages[@]}" + +# We don't need no docs! +rm -rf /usr/share/help /usr/share/doc /usr/share/man + +# Remove all locale files other than en_US.UTF-8 +rm -rf /usr/share/locale/ /usr/share/locale-langpack/ /usr/share/locales/ + +# Further cleanup +apt-get autoremove + +rm -f "$0" diff --git a/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh b/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh new file mode 100644 index 0000000000..e22b21f51d --- /dev/null +++ b/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -ve + +test "$(whoami)" == 'root' + +cd /setup + +# Install tooltool and node now that dependencies are in place. +. /setup/common.sh +. /setup/install-node.sh + +# Upgrade pip and install virtualenv to specified versions. +pip install --upgrade pip==19.2.3 +hash -r +pip install virtualenv==15.2.0 + +pip3 install -r /setup/psutil_requirements.txt +pip install -r /setup/psutil_requirements.txt + +# Cleanup +cd / +rm -rf /setup ~/.ccache ~/.cache ~/.npm +rm -f "$0" diff --git a/taskcluster/docker/recipes/xvfb.sh b/taskcluster/docker/recipes/xvfb.sh new file mode 100644 index 0000000000..6e0e79f7d4 --- /dev/null +++ b/taskcluster/docker/recipes/xvfb.sh @@ -0,0 +1,75 @@ +#! /bin/bash -x + +set -x + +fail() { + echo # make sure error message is on a new line + echo "[xvfb.sh:error]" "${@}" + exit 1 +} + +cleanup_xvfb() { + # When you call this script with START_VNC or TASKCLUSTER_INTERACTIVE + # we make sure we do not kill xvfb so you do not lose your connection + local xvfb_pid=`pidof Xvfb` + local vnc=${START_VNC:-false} + local interactive=${TASKCLUSTER_INTERACTIVE:-false} + if [ -n "$xvfb_pid" ] && [[ $vnc == false ]] && [[ $interactive == false ]] ; then + kill $xvfb_pid || true + screen -XS xvfb quit || true + fi +} + +# Attempt to start xvfb in a screen session with the given resolution and display +# number. Up to 5 attempts will be made to start xvfb with a short delay +# between retries +try_xvfb() { + screen -dmS xvfb Xvfb :$2 -nolisten tcp -screen 0 $1 \ + > ~/artifacts/xvfb/xvfb.log 2>&1 + export DISPLAY=:$2 + + # Only error code 255 matters, because it signifies that no + # display could be opened. As long as we can open the display + # tests should work. We'll retry a few times with a sleep before + # failing. + local retry_count=0 + local max_retries=5 + xvfb_test=0 + until [ $retry_count -gt $max_retries ]; do + xvinfo || xvfb_test=$? + if [ $xvfb_test != 255 ]; then + retry_count=$(($max_retries + 1)) + else + retry_count=$(($retry_count + 1)) + echo "Failed to start Xvfb, retry: $retry_count" + sleep 2 + fi + done + if [ $xvfb_test == 255 ]; then + return 1 + else + return 0 + fi +} + +start_xvfb() { + set +e + mkdir -p ~/artifacts/xvfb + local retry_count=0 + local max_retries=2 + local success=1 + until [ $retry_count -gt $max_retries ]; do + try_xvfb $1 $2 + success=$? + if [ $success -eq 0 ]; then + retry_count=$(($max_retries + 1)) + else + retry_count=$(($retry_count + 1)) + sleep 10 + fi + done + set -e + if [ $success -eq 1 ]; then + fail "Could not start xvfb after ${max_retries} attempts" + fi +} diff --git a/taskcluster/docker/sentry/Dockerfile b/taskcluster/docker/sentry/Dockerfile new file mode 100644 index 0000000000..2f606c5529 --- /dev/null +++ b/taskcluster/docker/sentry/Dockerfile @@ -0,0 +1,11 @@ +FROM $DOCKER_IMAGE_PARENT +LABEL maintainer="Mitchell Hentges mhentges@mozilla.com" + +VOLUME /builds/worker/checkouts + +ADD prepare.sh /setup/prepare-docker.sh +ADD submit_sentry_release.sh /usr/bin/submit_sentry_release.sh +RUN /bin/bash /setup/prepare-docker.sh && rm -R /setup + +# Set a default command useful for debugging +CMD ["/bin/sh", "--login"] diff --git a/taskcluster/docker/sentry/prepare.sh b/taskcluster/docker/sentry/prepare.sh new file mode 100755 index 0000000000..7cce3e1955 --- /dev/null +++ b/taskcluster/docker/sentry/prepare.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -o errexit +set -o nounset +set -o xtrace + +apt-get -y update + +# Install: +# * curl to fetch sentry-cli +# * jq to parse hgmo pushlog +apt-get install -y \ + curl \ + jq + +# Install sentry-cli to publish releases +curl -L https://github.com/getsentry/sentry-cli/releases/download/1.63.1/sentry-cli-Linux-x86_64 -o /usr/bin/sentry-cli +chmod +x /usr/bin/sentry-cli diff --git a/taskcluster/docker/sentry/submit_sentry_release.sh b/taskcluster/docker/sentry/submit_sentry_release.sh new file mode 100644 index 0000000000..136e06a58a --- /dev/null +++ b/taskcluster/docker/sentry/submit_sentry_release.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -o nounset +set -o pipefail + +run() { + revisions=$(curl "$HG_PUSHLOG_URL" | jq -c -r ".pushes[].changesets | @sh" | tr -d \') || return 1 + sentry_api_key=$(curl "http://taskcluster/secrets/v1/secret/$SENTRY_SECRET" | jq -r ".secret.sentryToken") || return 1 + for revision in $revisions; do + SENTRY_AUTH_TOKEN=$sentry_api_key SENTRY_ORG=mozilla sentry-cli --url https://sentry.io/ releases --project mach new "hg-rev-$revision" || return 1 + done +} + +with_backoff() { + failures=0 + while ! "$@"; do + failures=$(( failures + 1 )) + if (( failures >= 5 )); then + echo "[with_backoff] Unable to succeed after 5 tries, failing the job." + return 1 + else + seconds=$(( 2 ** (failures - 1) )) + echo "[with_backoff] Retrying in $seconds second(s)" + sleep $seconds + fi + done +} + +with_backoff run diff --git a/taskcluster/docker/static-analysis-build/Dockerfile b/taskcluster/docker/static-analysis-build/Dockerfile new file mode 100644 index 0000000000..e53ff4fa2e --- /dev/null +++ b/taskcluster/docker/static-analysis-build/Dockerfile @@ -0,0 +1,61 @@ +FROM $DOCKER_IMAGE_PARENT +LABEL maintainer="Andi-Bogdan Postelnicu " + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +RUN apt-get update && \ + apt-get install \ + autoconf2.13 \ + automake \ + bison \ + bzip2 \ + cmake \ + flex \ + curl \ + libsqlite3-dev \ + file \ + gawk \ + gcc-multilib \ + gnupg \ + jq \ + libc6-dev \ + libstdc++-*-dev \ + libmpfr-dev \ + nasm \ + opam \ + patch \ + p7zip-full \ + procps \ + python3-dev \ + rsync \ + screen \ + tar \ + unzip \ + uuid \ + valgrind \ + wget \ + zip \ + zlib1g-dev \ + x11-utils \ + xvfb \ + linux-libc-dev \ + libdbus-glib-1-dev \ + libfontconfig1-dev \ + libfreetype6-dev \ + libgconf2-dev \ + libgmp-dev \ + libgtk-3-dev \ + libpango1.0-dev \ + libpulse-dev \ + libx11-xcb-dev \ + libxt-dev \ + lib32z1 \ + patchelf diff --git a/taskcluster/docker/system-symbols-linux-scraper/Dockerfile b/taskcluster/docker/system-symbols-linux-scraper/Dockerfile new file mode 100644 index 0000000000..1b2c340ff0 --- /dev/null +++ b/taskcluster/docker/system-symbols-linux-scraper/Dockerfile @@ -0,0 +1,28 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Gabriele Svelto + +RUN mkdir -p /builds +RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker +WORKDIR /builds/worker + +# We need to declare all potentially cache volumes as caches. Also, +# making high I/O paths volumes increase I/O throughput because of +# AUFS slowness. +VOLUME /builds/worker/checkouts + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + binutils build-essential cpio curl elfutils jq libxml2-utils \ + python3-pip rpm2cpio squashfs-tools unzip wget zip && \ + apt-get autoremove -y && rm -rf /var/lib/apt/lists/* + +COPY run.sh /builds/worker/run.sh + +COPY SHA256SUMS.txt /builds/worker/ + +RUN chown -R worker:worker /builds/worker + +RUN pip3 install crashstats-tools==1.3.0 + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt b/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt new file mode 100644 index 0000000000..46a456d21a --- /dev/null +++ b/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt @@ -0,0 +1,6 @@ +b4ba66e218aa6f27e19bfbc48142f86f3fddb64b6540fd5beb30bad11f73a409 arch/SHA256SUMS.zip +6083ab8cb46a5be2a4d9bc51dce1443375f71d9536c325da39a14ba68c1de81a debian/SHA256SUMS.zip +64003a50133900e5d01b29e37022b3029652788a0e094b67330e5e32f1bf5e12 fedora/SHA256SUMS.zip +00e3e54788b2d7867535eb25bc9ce41541dc6299dca0a8ce8d0d4e5b49839ac3 mint/SHA256SUMS.zip +c4d02cc24f2a50b0caea20dd5fd0cd6bc960d0a619e8a355f7fec14a766e7966 opensuse/SHA256SUMS.zip +aed77c596f5652f4ecdc48b37aaa1c2b0b516c7e74ccc0cf183e7d7de101b6d7 ubuntu/SHA256SUMS.zip diff --git a/taskcluster/docker/system-symbols-linux-scraper/run.sh b/taskcluster/docker/system-symbols-linux-scraper/run.sh new file mode 100755 index 0000000000..d7837d112e --- /dev/null +++ b/taskcluster/docker/system-symbols-linux-scraper/run.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +set -ex + +SHA256SUMS=SHA256SUMS.zip + +function get_route() +{ + local task_url=${TASKCLUSTER_ROOT_URL}/api/queue/v1/task/${TASK_ID} + local payload + payload=$(curl -sSL "${task_url}") + + local route + route=$(echo "${payload}" | jq -r '.routes[] | select(contains("latest")) | select(contains("pushdate") | not) ' | sed -e 's/^index\.//') + echo "${route}" +} + +function get_sha256sum_url() +{ + local route + route=$(get_route) + local sha256sums_url=${TASKCLUSTER_ROOT_URL}/api/index/v1/task/${route}/artifacts/public/build/${SHA256SUMS} + echo "${sha256sums_url}" +} + +function has_sha256sums_on_index() +{ + local url + url=$(get_sha256sum_url) + curl -sSL --head --fail -o /dev/null "${url}" +} + +function download_verify_extract_sha256sums() +{ + local url=$1 + + if [ ! -f "/builds/worker/SHA256SUMS.txt" ]; then + echo "Missing checksums, aborting." + exit 1 + fi + + curl -sSL "${url}" -o ${SHA256SUMS} + + # We verify SHA256SUMS when we bootstrap and thus download from GitHub + # The one downloaded from TaskCluster will have been updated by previous tasks + if [ -n "${BOOTSTRAP_SHA256}" ]; then + echo "BOOTSTRAP_SHA256 was set, ensuring consistent set of SHA256SUMS" + local sha_check + sha256sum --quiet --status -c <(grep "${DISTRO}/" /builds/worker/SHA256SUMS.txt | sed -e "s/${DISTRO}\///") + sha_check=$? + if [ ${sha_check} -ne 0 ]; then + echo "Checksum verification failed, aborting." + exit 1 + fi + fi + + unzip ${SHA256SUMS} && rm ${SHA256SUMS} +} + +DISTRO=$1 + +sha256=https://mozilla.github.io/symbol-scrapers/${DISTRO}/${SHA256SUMS} +if [ -z "${BOOTSTRAP_SHA256}" ]; then + if has_sha256sums_on_index; then + sha256=$(get_sha256sum_url) + fi +fi + +mkdir -p /builds/worker/artifacts/ + +pushd "${MOZ_FETCHES_DIR}/symbol-scrapers/${DISTRO}" + download_verify_extract_sha256sums "${sha256}" + DUMP_SYMS=${MOZ_FETCHES_DIR}/dump_syms/dump_syms /bin/bash script.sh + zip -r9 /builds/worker/artifacts/${SHA256SUMS} SHA256SUMS + cp wget*.log /builds/worker/artifacts/ +popd + +if [ ! -f "/builds/worker/artifacts/target.crashreporter-symbols.zip" ]; then + echo "No symbols zip produced, upload task will fail" +fi diff --git a/taskcluster/docker/system-symbols-mac/Dockerfile b/taskcluster/docker/system-symbols-mac/Dockerfile new file mode 100644 index 0000000000..6b4c1fbec2 --- /dev/null +++ b/taskcluster/docker/system-symbols-mac/Dockerfile @@ -0,0 +1,37 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Gabriele Svelto + +RUN mkdir -p /builds +RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker +WORKDIR /builds/worker + +# We need to declare all potentially cache volumes as caches. Also, +# making high I/O paths volumes increase I/O throughput because of +# AUFS slowness. +VOLUME /builds/worker/checkouts + +RUN apt-get update && \ + apt-get install --no-install-recommends -y python3-dev python3-pip python3-requests-futures python3-setuptools curl pax build-essential libxml2-dev libssl-dev zlib1g-dev libusb-dev cmake libbz2-dev libpng-dev wget zip liblzma-dev && \ + rm -rf /var/lib/apt/lists/* + +RUN mkdir /opt/data-reposado/ +RUN chown -R worker.worker /opt/data-reposado/ + +COPY setup.sh /setup/ +COPY requirements.txt /setup/ +# %include tools/crashreporter/system-symbols/mac + +RUN /bin/sh /setup/setup.sh + +ADD https://github.com/marco-c/breakpad-mac-update-symbols/raw/21221733edfbcac49d40e50fc219fab7d17437a0/lipo /usr/local/bin/ +RUN chmod +x /usr/local/bin/lipo + +COPY topsrcdir/tools/crashreporter/system-symbols/mac /builds/worker/mac-update-symbols +# %include python/mozbuild/mozpack/macpkg.py +COPY topsrcdir/python/mozbuild/mozpack/macpkg.py /builds/worker/mac-update-symbols/mozpack/ +WORKDIR /builds/worker/mac-update-symbols + +RUN chown -R worker:worker /builds/worker + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/system-symbols-mac/requirements.txt b/taskcluster/docker/system-symbols-mac/requirements.txt new file mode 100644 index 0000000000..775756115c --- /dev/null +++ b/taskcluster/docker/system-symbols-mac/requirements.txt @@ -0,0 +1,2 @@ +futures +requests diff --git a/taskcluster/docker/system-symbols-mac/setup.sh b/taskcluster/docker/system-symbols-mac/setup.sh new file mode 100644 index 0000000000..c0c4e766ac --- /dev/null +++ b/taskcluster/docker/system-symbols-mac/setup.sh @@ -0,0 +1,27 @@ +#!/bin/sh +set -v -e -x + +ncpu=-j$(grep -c ^processor /proc/cpuinfo) + +WORK=/setup/ +cd $WORK +git clone --depth=1 --single-branch -b system-symbols-mac https://github.com/gabrielesvelto/libdmg-hfsplus.git +cd libdmg-hfsplus +cmake . +make "$ncpu" dmg-bin hfsplus +# `make install` installs way too much stuff +cp dmg/dmg hfs/hfsplus /builds/worker/bin +strip /builds/worker/bin/dmg /builds/worker/bin/hfsplus + +pip3 install --no-cache-dir git+https://github.com/mozilla/reposado + +python3 /usr/local/bin/repoutil --configure < + +RUN mkdir -p /builds +RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker +WORKDIR /builds/worker + +# We need to declare all potentially cache volumes as caches. Also, +# making high I/O paths volumes increase I/O throughput because of +# AUFS slowness. +VOLUME /builds/worker/checkouts + +COPY requirements.txt /builds/worker/requirements.txt +RUN apt-get update && \ + apt-get install --no-install-recommends -y gcc python3-dev python3-pip python3-setuptools libffi-dev && \ + rm -rf /var/lib/apt/lists/* +RUN pip3 install pip==20.3.4 --upgrade +RUN pip3 install --no-cache-dir --require-hashes -r /builds/worker/requirements.txt + +# %include tools/crashreporter/system-symbols/win +COPY topsrcdir/tools/crashreporter/system-symbols/win /builds/worker + +RUN chown -R worker:worker /builds/worker + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/system-symbols-win/requirements.txt b/taskcluster/docker/system-symbols-win/requirements.txt new file mode 100644 index 0000000000..d717b6efda --- /dev/null +++ b/taskcluster/docker/system-symbols-win/requirements.txt @@ -0,0 +1,19 @@ +aiodns==3.0.0 --hash=sha256:2b19bc5f97e5c936638d28e665923c093d8af2bf3aa88d35c43417fa25d136a2 +aiofile==3.7.4 --hash=sha256:0e2a524e4714efda47ce8964b13d4da94cf553411f9f6da813df615a4cd73d95 +aiohttp==3.8.1 --hash=sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd +aiosignal==1.2.0 --hash=sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a +asyncio==3.4.3 --hash=sha256:c4d18b22701821de07bd6aea8b53d21449ec0ec5680645e5317062ea21817d2d +asynctest==0.13.0 --hash=sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676 +async-timeout==4.0.2 --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c +attrs==21.4.0 --hash=sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4 +caio==0.9.0 --hash=sha256:399de8f266ede4e87ffa1c647c8bb6859df14039354b6fcf74a47d3d756fdc41 +cffi==1.15.0 --hash=sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954 +chardet==4.0.0 --hash=sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5 +charset-normalizer==2.0.12 --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df +frozenlist==1.3.0 --hash=sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51 +idna==3.3 --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff +multidict==6.0.2 --hash=sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013 +pycares==4.1.2 --hash=sha256:dc942692fca0e27081b7bb414bb971d34609c80df5e953f6d0c62ecc8019acd9 +pycparser==2.21 --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 +typing_extensions==4.2.0 --hash=sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708 +yarl==1.7.2 --hash=sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794 diff --git a/taskcluster/docker/toolchain-build/Dockerfile b/taskcluster/docker/toolchain-build/Dockerfile new file mode 100644 index 0000000000..6e56172ab2 --- /dev/null +++ b/taskcluster/docker/toolchain-build/Dockerfile @@ -0,0 +1,62 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ENV XZ_OPT=-T0 + +ARG DOCKER_IMAGE_PACKAGES +ARG TASKCLUSTER_ROOT_URL +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +RUN apt-get update && \ + apt-get install \ + autoconf \ + autoconf2.13 \ + automake \ + bison \ + build-essential \ + cabextract \ + curl \ + clang-13 \ + cmake \ + flex \ + gawk \ + gcc-multilib \ + git \ + gnupg \ + jq \ + libbz2-dev \ + libexpat1-dev \ + libffi-dev \ + libncursesw5-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libucl-dev \ + libxml2-dev \ + lld-13 \ + msitools \ + ninja-build \ + openssh-client \ + p7zip-full \ + pkg-config \ + procps \ + python3-distutils-extra \ + python3-requests \ + python3-toml \ + scons \ + subversion \ + tar \ + unzip \ + uuid \ + uuid-dev \ + wget \ + zip \ + zlib1g-dev + +# mmdebstrap is not available in jessie, but we only need it in the buster-based image. +# We also want zstd when available. +RUN apt-get install fakechroot fakeroot mmdebstrap zstd || true diff --git a/taskcluster/docker/ubuntu1804-base/Dockerfile b/taskcluster/docker/ubuntu1804-base/Dockerfile new file mode 100644 index 0000000000..3a54e58180 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-base/Dockerfile @@ -0,0 +1,70 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +### Add worker user and setup its workspace. +RUN mkdir /builds && \ + groupadd -g 1000 worker && \ + useradd -u 1000 -g 1000 -d /builds/worker -s /bin/bash -m worker && \ + mkdir -p /builds/worker/workspace && \ + chown -R worker:worker /builds + +# Declare default working folder +WORKDIR /builds/worker + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +# Set variable normally configured at login, by the shells parent process, these +# are taken from GNU su manual +ENV HOME=/builds/worker \ + SHELL=/bin/bash \ + USER=worker \ + LOGNAME=worker \ + HOSTNAME=taskcluster-worker + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \ + apt-get update && \ + apt-get dist-upgrade && \ + apt-get install \ + git \ + less \ + make \ + mercurial \ + patch \ + python3.7 \ + python3.7-dev \ + python3.7-venv \ + python3-distutils-extra \ + python3-minimal \ + python3-zstandard \ + python3-psutil \ + python3-venv \ + vim-tiny \ + xz-utils \ + zstd + +RUN test $(readlink /usr/bin/python3) = python3.6 && ln -sf python3.7 /usr/bin/python3 + +# %include testing/mozharness/external_tools/robustcheckout.py +COPY topsrcdir/testing/mozharness/external_tools/robustcheckout.py /usr/local/mercurial/robustcheckout.py + +# %include taskcluster/docker/recipes/hgrc +COPY topsrcdir/taskcluster/docker/recipes/hgrc /etc/mercurial/hgrc.d/mozilla.rc + +# Add pip configuration, among other things. +# %include taskcluster/docker/recipes/dot-config +COPY topsrcdir/taskcluster/docker/recipes/dot-config /builds/worker/.config + +# %include taskcluster/scripts/run-task +COPY topsrcdir/taskcluster/scripts/run-task /builds/worker/bin/run-task + +# %include taskcluster/scripts/misc/fetch-content +ADD topsrcdir/taskcluster/scripts/misc/fetch-content /builds/worker/bin/fetch-content + +RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* diff --git a/taskcluster/docker/ubuntu1804-test-base/Dockerfile b/taskcluster/docker/ubuntu1804-test-base/Dockerfile new file mode 100644 index 0000000000..a8556340e5 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test-base/Dockerfile @@ -0,0 +1,24 @@ +# This docker image only sets up packages on top of the original Ubuntu image. +# Everything else is setup is a child docker image derived from this one, such +# that changes to our scripts don't trigger the rebuild of this base image, +# possibly leading to breakage. (See bug 1503756 and bug 1678451 for examples +# of such recent breakages) +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Edwin Takahashi + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +# %include taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh +ADD topsrcdir/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh /setup/system-setup.sh +RUN bash /setup/system-setup.sh + +# gnome-keyring-daemon is configured to have the IPC_LOCK capability (to lock pages with secrets in +# memory), but docker isn't run with that capability granted. So, if we were to try running +# gnome-keyring-daemon without first clearing the capability, it would just exit with the message +# "Operation not permitted". Luckily it doesn't actually require the capability. +RUN setcap -r /usr/bin/gnome-keyring-daemon + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/ubuntu1804-test/Dockerfile b/taskcluster/docker/ubuntu1804-test/Dockerfile new file mode 100644 index 0000000000..69385ca632 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/Dockerfile @@ -0,0 +1,86 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Edwin Takahashi + +# Create necessary directories +RUN mkdir -p /artifacts + +# We need to declare all potentially cache volumes as caches. Also, +# making high I/O paths volumes increase I/O throughput because of +# AUFS slowness. +VOLUME /builds/worker/.cache +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/tooltool-cache +VOLUME /builds/worker/workspace + +# In test.sh we accept START_VNC to start a vnc daemon. +# Exposing this port allows it to work. +EXPOSE 5900 + +# %include python/mozbuild/mozbuild/action/tooltool.py +ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /setup/tooltool.py + +# %include taskcluster/docker/recipes/common.sh +ADD topsrcdir/taskcluster/docker/recipes/common.sh /setup/common.sh + +# %include taskcluster/docker/recipes/install-node.sh +ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /setup/install-node.sh + +# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb +# %include taskcluster/docker/recipes/xvfb.sh +ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh + +ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /builds/worker/scripts/tooltool.py + +# %include build/psutil_requirements.txt +ADD topsrcdir/build/psutil_requirements.txt /setup/psutil_requirements.txt +# %include taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh +ADD topsrcdir/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh /setup/system-setup.sh +RUN bash /setup/system-setup.sh + +# %include taskcluster/scripts/tester/test-linux.sh +ADD topsrcdir/taskcluster/scripts/tester/test-linux.sh /builds/worker/bin/test-linux.sh + +# Set variable normally configured at login, by the shells parent process, these +# are taken from GNU su manual +ENV LANG en_US.UTF-8 +ENV LC_ALL en_US.UTF-8 +ENV PATH $PATH:/builds/worker/bin + +# This helps not forgetting setting DISPLAY=:0 when running +# tests outside of test.sh +ENV DISPLAY :0 + +# Add utilities and configuration +COPY dot-files/config /builds/worker/.config + +# Disable apport (app crash reporter) to avoid stealing focus from test runs +ADD apport /etc/default/apport + +# Disable font antialiasing for now to match releng's setup +ADD fonts.conf /builds/worker/.fonts.conf + +# Bug 1345105 - Do not run periodical update checks and downloads +ADD autostart/gnome-software-service.desktop /etc/xdg/autostart/ + +# allow the worker user to access video devices +RUN usermod -a -G video worker + +# Set execution and ownership privileges +RUN chmod +x bin/*; chown -R worker:worker /builds/worker + +# Set up first-run experience for interactive mode +ADD motd /etc/taskcluster-motd +ADD taskcluster-interactive-shell /bin/taskcluster-interactive-shell +RUN chmod +x /bin/taskcluster-interactive-shell + +# Bug 1638183 - increase xserver maximum client count +COPY dot-files/config/xorg/99-serverflags.conf /usr/share/X11/xorg.conf.d/ + +# Ubuntu 18.04 (or any other GNOME3 based systems) needs dbus to have various +# test function as expected. Use entrypoint to initialize dbus as root. +COPY dbus.sh /usr/local/bin/dbus.sh +RUN chmod +x /usr/local/bin/dbus.sh +ENTRYPOINT ["/usr/local/bin/dbus.sh"] + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/ubuntu1804-test/apport b/taskcluster/docker/ubuntu1804-test/apport new file mode 100644 index 0000000000..42e5f8d3a1 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/apport @@ -0,0 +1 @@ +enabled=0 diff --git a/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop b/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop new file mode 100644 index 0000000000..c3b8a4c676 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop @@ -0,0 +1,19 @@ +[Desktop Entry] +Version=1.0 +X-Ubuntu-Gettext-Domain=deja-dup + +Name=Backup Monitor +Comment=Schedules backups at regular intervals + +Icon=deja-dup +TryExec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor +Exec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor + +# Bug 984944/1240084 - It prevents taking screenshots +X-GNOME-Autostart-Delay=false + +StartupNotify=false +NoDisplay=true + +Type=Application +Categories=System;Utility;Archiving; diff --git a/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop b/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop new file mode 100644 index 0000000000..b563cc306b --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Name=GNOME Software +Exec=/usr/bin/gnome-software --gapplication-service +OnlyShowIn=GNOME;Unity; +X-Ubuntu-Gettext-Domain=gnome-software + +# Bug 1345105 - Do not run periodical update checks and downloads +X-GNOME-Autostart-enabled=false diff --git a/taskcluster/docker/ubuntu1804-test/dbus.sh b/taskcluster/docker/ubuntu1804-test/dbus.sh new file mode 100644 index 0000000000..f27ec664f1 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/dbus.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +/etc/init.d/dbus start 2>&1 + +exec "${@}" diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs new file mode 100644 index 0000000000..2db2718d24 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs @@ -0,0 +1,15 @@ +# This file is written by xdg-user-dirs-update +# If you want to change or add directories, just edit the line you're +# interested in. All local changes will be retained on the next run +# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped +# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an +# absolute path. No other format is supported. + +XDG_DESKTOP_DIR="$HOME/Desktop" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_PUBLICSHARE_DIR="$HOME/Public" +XDG_DOCUMENTS_DIR="$HOME/Documents" +XDG_MUSIC_DIR="$HOME/Music" +XDG_PICTURES_DIR="$HOME/Pictures" +XDG_VIDEOS_DIR="$HOME/Videos" diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale new file mode 100644 index 0000000000..7741b83a3e --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale @@ -0,0 +1 @@ +en_US diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf b/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf new file mode 100644 index 0000000000..4c335f44e3 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf @@ -0,0 +1,3 @@ +Section "ServerFlags" + Option "MaxClients" "2048" +EndSection \ No newline at end of file diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf b/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf new file mode 100644 index 0000000000..4b2dab2a66 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf @@ -0,0 +1 @@ +autospawn = no \ No newline at end of file diff --git a/taskcluster/docker/ubuntu1804-test/fonts.conf b/taskcluster/docker/ubuntu1804-test/fonts.conf new file mode 100644 index 0000000000..9784fcc981 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/fonts.conf @@ -0,0 +1,5 @@ + + + false + + diff --git a/taskcluster/docker/ubuntu1804-test/motd b/taskcluster/docker/ubuntu1804-test/motd new file mode 100644 index 0000000000..f958393cd8 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/motd @@ -0,0 +1,6 @@ +Welcome to your taskcluster interactive shell! The regularly scheduled task +has been paused to give you a chance to set up your debugging environment. + +For your convenience, the exact mozharness command needed for this task can +be invoked using the 'run-mozharness' command. + diff --git a/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell b/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell new file mode 100644 index 0000000000..c782c0ea96 --- /dev/null +++ b/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +download() { + name=`basename $1` + url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/$1 + if ! curl --fail --silent -o ./$name --retry 10 $url; then + fail "failed downloading $1 from ${GECKO_HEAD_REPOSITORY}" + fi +} + +cd $HOME/bin; +download taskcluster/scripts/tester/run-wizard; +chmod +x run-wizard; +./run-wizard; + +SPAWN="$SHELL"; +if [ "$SHELL" = "bash" ]; then + SPAWN="bash -li"; +fi; + +cd $HOME; +exec $SPAWN; diff --git a/taskcluster/docker/update-verify/Dockerfile b/taskcluster/docker/update-verify/Dockerfile new file mode 100644 index 0000000000..5cddeac1f0 --- /dev/null +++ b/taskcluster/docker/update-verify/Dockerfile @@ -0,0 +1,32 @@ +# This is an LTS! We should upgrade after the next LTS is released, unless +# we've switched to the in-tree debian base images by then. +FROM $DOCKER_IMAGE_PARENT + +MAINTAINER release@mozilla.com + +# We do want to install recommended packages. +RUN sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster + +RUN dpkg --add-architecture i386 && apt-get -q update \ + # p7zip-full is for extracting Windows and OS X packages + # wget is for downloading update.xml, installers, and MARs + # libgtk-3-0 is required to run the Firefox updater + && apt-get -q --yes install p7zip-full wget libgtk-3-0 libgtk-3.0:i386 python3-cairo + +VOLUME /builds/worker/.cache +VOLUME /builds/worker/checkouts + +RUN mkdir /build +ADD system-setup.sh /tmp/system-setup.sh +RUN bash /tmp/system-setup.sh + +RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* +ENV PATH $PATH:/builds/worker/bin + +# Set variable normally configured at login, by the shells parent process, these +# are taken from GNU su manual +ENV LANG en_US.UTF-8 +ENV LC_ALL en_US.UTF-8 + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docker/update-verify/system-setup.sh b/taskcluster/docker/update-verify/system-setup.sh new file mode 100644 index 0000000000..8a55f255f8 --- /dev/null +++ b/taskcluster/docker/update-verify/system-setup.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -ve + +test "$(whoami)" == 'root' + +mkdir -p /setup +cd /setup + +apt_packages=() +apt_packages+=('curl') +apt_packages+=('locales') +apt_packages+=('python3-pip') +apt_packages+=('python3-aiohttp') +apt_packages+=('shellcheck') +apt_packages+=('sudo') + +apt-get update +apt-get install "${apt_packages[@]}" + +# Without this we get spurious "LC_ALL: cannot change locale (en_US.UTF-8)" errors, +# and python scripts raise UnicodeEncodeError when trying to print unicode characters. +locale-gen en_US.UTF-8 +dpkg-reconfigure locales + +su -c 'git config --global user.email "worker@mozilla.test"' worker +su -c 'git config --global user.name "worker"' worker + +rm -rf /setup diff --git a/taskcluster/docker/updatebot/Dockerfile b/taskcluster/docker/updatebot/Dockerfile new file mode 100644 index 0000000000..a58c9c07a8 --- /dev/null +++ b/taskcluster/docker/updatebot/Dockerfile @@ -0,0 +1,24 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Tom Ritter + +VOLUME /builds/worker/checkouts + +# %include taskcluster/docker/recipes/install-node.sh +ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /setup/install-node.sh + +COPY privileged-setup.sh /setup/privileged-setup.sh +COPY updatebot-version.sh /setup/updatebot-version.sh +COPY setup.sh /builds/worker/setup.sh +COPY run.py /builds/worker/run.py +COPY hgrc /etc/mercurial/hgrc.d/updatebot.rc + +RUN cd /setup && ./privileged-setup.sh + +ENV HOME /builds/worker +ENV SHELL /bin/bash +ENV USER worker +ENV LOGNAME worker +ENV PYTHONUNBUFFERED 1 +ENV PATH "/builds/worker/go/bin:/builds/worker/fetches/rustc/bin:/builds/worker/fetches/cargo-vet:${PATH}" + +RUN cd /builds/worker && ./setup.sh diff --git a/taskcluster/docker/updatebot/VERSION b/taskcluster/docker/updatebot/VERSION new file mode 100644 index 0000000000..56a6051ca2 --- /dev/null +++ b/taskcluster/docker/updatebot/VERSION @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/taskcluster/docker/updatebot/arcanist_patch_size.patch b/taskcluster/docker/updatebot/arcanist_patch_size.patch new file mode 100644 index 0000000000..7540c76fbd --- /dev/null +++ b/taskcluster/docker/updatebot/arcanist_patch_size.patch @@ -0,0 +1,13 @@ +diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php +index 38aa4b62..c9b7e215 100644 +--- a/src/workflow/ArcanistDiffWorkflow.php ++++ b/src/workflow/ArcanistDiffWorkflow.php +@@ -899,7 +899,7 @@ EOTEXT + throw new Exception(pht('Repository API is not supported.')); + } + +- $limit = 1024 * 1024 * 4; ++ $limit = 1024 * 1024 * 12; + foreach ($changes as $change) { + $size = 0; + foreach ($change->getHunks() as $hunk) { diff --git a/taskcluster/docker/updatebot/arcanist_windows_stream.patch b/taskcluster/docker/updatebot/arcanist_windows_stream.patch new file mode 100644 index 0000000000..953fbdce85 --- /dev/null +++ b/taskcluster/docker/updatebot/arcanist_windows_stream.patch @@ -0,0 +1,19 @@ +diff --git a/src/channel/PhutilSocketChannel.php b/src/channel/PhutilSocketChannel.php +index 4bd2a47a..2ad3fd85 100644 +--- a/src/channel/PhutilSocketChannel.php ++++ b/src/channel/PhutilSocketChannel.php +@@ -46,9 +46,11 @@ final class PhutilSocketChannel extends PhutilChannel { + if (!$socket) { + continue; + } +- $ok = stream_set_blocking($socket, false); +- if (!$ok) { +- throw new Exception(pht('Failed to set socket nonblocking!')); ++ if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { ++ $ok = stream_set_blocking($socket, false); ++ if (!$ok) { ++ throw new Exception(pht('Failed to set socket nonblocking!')); ++ } + } + } + diff --git a/taskcluster/docker/updatebot/hgrc b/taskcluster/docker/updatebot/hgrc new file mode 100644 index 0000000000..7d1db24ae0 --- /dev/null +++ b/taskcluster/docker/updatebot/hgrc @@ -0,0 +1,7 @@ +[ui] +ssh = ssh -i $HOME/id_rsa -l updatebot@mozilla.com -o UserKnownHostsFile=$HOME/ssh_known_hosts +username = Updatebot + +[extensions] +strip = +push-to-try = $HOME/.mozbuild/version-control-tools/hgext/push-to-try \ No newline at end of file diff --git a/taskcluster/docker/updatebot/moz.build b/taskcluster/docker/updatebot/moz.build new file mode 100644 index 0000000000..315dc32600 --- /dev/null +++ b/taskcluster/docker/updatebot/moz.build @@ -0,0 +1,8 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +with Files("**"): + BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot") diff --git a/taskcluster/docker/updatebot/privileged-setup.sh b/taskcluster/docker/updatebot/privileged-setup.sh new file mode 100755 index 0000000000..640b0826e2 --- /dev/null +++ b/taskcluster/docker/updatebot/privileged-setup.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +set -vex + +. ./updatebot-version.sh # Get UPDATEBOT_REVISION + +# If you edit this, be sure to edit fetch/updatebot.yml +export SQLPROXY_REVISION=fb1939ab92846761595833361c6b0b0ecd543861 + +export DEBIAN_FRONTEND=noninteractive + +# Update apt-get lists +apt-get update -y + +# Install dependencies +apt-get install -y --no-install-recommends \ + arcanist \ + ca-certificates \ + curl \ + ed \ + golang-go \ + gcc \ + libc6-dev \ + python3-minimal \ + python3-wheel \ + python3-pip \ + python3-venv \ + python3-requests \ + python3-requests-unixsocket \ + python3-setuptools \ + openssh-client \ + rsync \ + wget + +mkdir -p /builds/worker/.mozbuild +chown -R worker:worker /builds/worker/ +export GOPATH=/builds/worker/go + +# nodejs 16 for pdfjs +. install-node.sh + +# pdf.js setup +# We want to aviod downloading a ton of packages all the time, so +# we will preload the pdf.js repo (and packages) in the Docker image +# and only update it at runtime. This means that the `./mach vendor` +# behavior for pdf.js will also be kind of custom +npm install -g gulp-cli +cd /builds/worker/ +git clone https://github.com/mozilla/pdf.js.git +cd /builds/worker/pdf.js +npm ci --legacy-peer-deps + +# seed a v8 repository because it's large, and doing an update will +# be much faster than a new clone each time. +cd /builds/worker/ +git clone https://github.com/v8/v8.git + +# Build Google's Cloud SQL Proxy from source +cd /builds/worker/ +mkdir cloud_sql_proxy +cd cloud_sql_proxy +go mod init cloud_sql_proxy +go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy@$SQLPROXY_REVISION + +# Check out source code +cd /builds/worker/ +git clone https://github.com/mozilla-services/updatebot.git +cd updatebot +git checkout "$UPDATEBOT_REVISION" + +# Set up dependencies +cd /builds/worker/ +chown -R worker:worker . +chown -R worker:worker .* + +python3 -m pip install -U pip +python3 -m pip install poetry==1.2.2 + +rm -rf /setup diff --git a/taskcluster/docker/updatebot/run.py b/taskcluster/docker/updatebot/run.py new file mode 100755 index 0000000000..ad9bcb8788 --- /dev/null +++ b/taskcluster/docker/updatebot/run.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, # You can obtain one at http://mozilla.org/MPL/2.0/. + +import sys + +sys.path.append("/builds/worker/checkouts/gecko/third_party/python") +sys.path.append(".") + +import base64 +import os +import platform +import signal +import stat +import subprocess + +import requests + +import taskcluster + +# Bump this number when you need to cause a commit for the job to re-run: 21 + +if len(sys.argv) < 3: + print("Usage:", sys.argv[0], "gecko-dev-path updatebot-path [moz-fetches-dir]") + sys.exit(1) + +GECKO_DEV_PATH = sys.argv[1].replace("/", os.path.sep) +UPDATEBOT_PATH = sys.argv[2].replace("/", os.path.sep) + +# Only needed on Windows +if len(sys.argv) > 3: + FETCHES_PATH = sys.argv[3].replace("/", os.path.sep) +else: + FETCHES_PATH = None + +HOME_PATH = os.path.expanduser("~") + +OPERATING_MODE = ( + "prod" + if os.environ.get("GECKO_HEAD_REPOSITORY", "") + == "https://hg.mozilla.org/mozilla-central" + else "dev" +) + +DEV_PHAB_URL = "https://phabricator-dev.allizom.org/" +PROD_PHAB_URL = "https://phabricator.services.mozilla.com/" + +phabricator_url = DEV_PHAB_URL if OPERATING_MODE == "dev" else PROD_PHAB_URL + + +def log(*args): + print(*args) + + +def get_secret(name): + secret = None + if "TASK_ID" in os.environ: + secrets_url = ( + "http://taskcluster/secrets/v1/secret/project/updatebot/" + + ("3" if OPERATING_MODE == "prod" else "2") + + "/" + + name + ) + res = requests.get(secrets_url) + res.raise_for_status() + secret = res.json() + else: + secrets = taskcluster.Secrets(taskcluster.optionsFromEnvironment()) + secret = secrets.get("project/updatebot/" + OPERATING_MODE + "/" + name) + secret = secret["secret"] if "secret" in secret else None + secret = secret["value"] if "value" in secret else None + return secret + + +# Get TC Secrets ======================================= +log("Operating mode is ", OPERATING_MODE) +log("Getting secrets...") +bugzilla_api_key = get_secret("bugzilla-api-key") +phabricator_token = get_secret("phabricator-token") +try_sshkey = get_secret("try-sshkey") +database_config = get_secret("database-password") +sentry_url = get_secret("sentry-url") +sql_proxy_config = get_secret("sql-proxy-config") + +# Update Updatebot ======================================= +if OPERATING_MODE == "dev": + """ + If we are in development mode, we will update from github. + (This command will probably only work if we checkout a branch FWIW.) + + This allows us to iterate faster by committing to github and + re-running the cron job on Taskcluster, without rebuilding the + Docker image. + + However, this mechanism is bypassing the security feature we + have in-tree, where upstream out-of-tree code is fixed at a known + revision and cannot be changed without a commit to m-c. + + Therefore, we only do this in dev mode when running on try. + """ + + os.chdir(UPDATEBOT_PATH) + log("Performing git repo update...") + command = ["git", "symbolic-ref", "-q", "HEAD"] + + r = subprocess.run(command) + if r.returncode == 0: + # This indicates we are on a branch, and not a specific revision + subprocess.check_call(["git", "pull", "origin"]) + +# Set Up SSH & Phabricator ============================== +os.chdir(HOME_PATH) +log("Setting up ssh and phab keys...") +with open("id_rsa", "w") as sshkey: + sshkey.write(try_sshkey) +os.chmod("id_rsa", stat.S_IRUSR | stat.S_IWUSR) + +arc_filename = ".arcrc" +if platform.system() == "Windows": + arc_path = os.path.join(FETCHES_PATH, "..", "AppData", "Roaming") + os.makedirs(arc_path, exist_ok=True) + os.chdir(arc_path) + log("Writing %s to %s" % (arc_filename, arc_path)) +else: + os.chdir(HOME_PATH) + +arcrc = open(arc_filename, "w") +towrite = """ +{ + "hosts": { + "PHAB_URL_HERE": { + "token": "TOKENHERE" + } + } +} +""".replace( + "TOKENHERE", phabricator_token +).replace( + "PHAB_URL_HERE", phabricator_url + "api/" +) +arcrc.write(towrite) +arcrc.close() +os.chmod(arc_filename, stat.S_IRUSR | stat.S_IWUSR) + +# Set up the Cloud SQL Proxy ============================= +os.chdir(HOME_PATH) +log("Setting up cloud_sql_proxy...") +with open("sql-proxy-key", "w") as proxy_key_file: + proxy_key_file.write( + base64.b64decode(sql_proxy_config["key-value"]).decode("utf-8") + ) + +instance_name = sql_proxy_config["instance-name"] +if platform.system() == "Linux": + sql_proxy_command = "/builds/worker/go/bin/cloud_sql_proxy" +else: + sql_proxy_command = os.path.join(UPDATEBOT_PATH, "..", "cloud_sql_proxy.exe") + +sql_proxy_command += ( + " -instances=" + instance_name + "=tcp:3306 -credential_file=sql-proxy-key" +) +sql_proxy_args = { + "stdout": subprocess.PIPE, + "stderr": subprocess.PIPE, + "shell": True, + "start_new_session": True, +} + +if platform.system() == "Windows": + si = subprocess.STARTUPINFO() + si.dwFlags = subprocess.CREATE_NEW_PROCESS_GROUP + + sql_proxy_args["startupinfo"] = si + +sql_proxy = subprocess.Popen((sql_proxy_command), **sql_proxy_args) + +try: + (stdout, stderr) = sql_proxy.communicate(input=None, timeout=2) + log("sql proxy stdout:", stdout.decode("utf-8")) + log("sql proxy stderr:", stderr.decode("utf-8")) +except subprocess.TimeoutExpired: + log("no sqlproxy output in 2 seconds, this means it probably didn't error.") + log("sqlproxy pid:", sql_proxy.pid) + +database_config["host"] = "127.0.0.1" + +# Vendor ================================================= +log("Getting Updatebot ready...") +os.chdir(UPDATEBOT_PATH) +localconfig = { + "General": { + "env": OPERATING_MODE, + "gecko-path": GECKO_DEV_PATH, + }, + "Logging": { + "local": True, + "sentry": True, + "sentry_config": {"url": sentry_url, "debug": False}, + }, + "Database": database_config, + "Bugzilla": { + "apikey": bugzilla_api_key, + }, + "Taskcluster": { + "url_treeherder": "https://treeherder.mozilla.org/", + "url_taskcluster": "http://taskcluster/", + }, +} + +log("Writing local config file") +config = open("localconfig.py", "w") +config.write("localconfig = " + str(localconfig)) +config.close() + +log("Running updatebot") +# On Windows, Updatebot is run by windows-setup.sh +if platform.system() == "Linux": + subprocess.check_call(["python3", "-m", "poetry", "run", "./automation.py"]) + + # Clean up =============================================== + log("Killing cloud_sql_proxy") + os.kill(sql_proxy.pid, signal.SIGTERM) diff --git a/taskcluster/docker/updatebot/setup.sh b/taskcluster/docker/updatebot/setup.sh new file mode 100755 index 0000000000..e7c6fe03e0 --- /dev/null +++ b/taskcluster/docker/updatebot/setup.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +set -vex + +# Copy the system known_hosts to the home directory so we have uniformity with Windows +# and the ssh command will find them in the same place. +cp /etc/ssh/ssh_known_hosts "$HOME/ssh_known_hosts" + +# If poetry is not run as worker, then it won't work when run as user later. +cd /builds/worker/updatebot +/usr/local/bin/poetry install --no-ansi diff --git a/taskcluster/docker/updatebot/updatebot-version.sh b/taskcluster/docker/updatebot/updatebot-version.sh new file mode 100644 index 0000000000..2dd61412ce --- /dev/null +++ b/taskcluster/docker/updatebot/updatebot-version.sh @@ -0,0 +1,2 @@ +export UPDATEBOT_REVISION=dee7a25bb71daf3356d146ab9582720d4a490264 + diff --git a/taskcluster/docker/updatebot/windows-php.ini b/taskcluster/docker/updatebot/windows-php.ini new file mode 100644 index 0000000000..8ccaa05ce4 --- /dev/null +++ b/taskcluster/docker/updatebot/windows-php.ini @@ -0,0 +1,130 @@ +[PHP] + +engine = On +short_open_tag = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = -1 +disable_functions = +disable_classes = +zend.enable_gc = On +zend.exception_ignore_args = Off +expose_php = On +max_execution_time = 30 +max_input_time = 60 +memory_limit = 128M +error_reporting = E_ALL +display_errors = On +display_startup_errors = On +log_errors = On +log_errors_max_len = 1024 +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 8M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" +doc_root = +user_dir = +extension_dir = "ext" +enable_dl = Off +file_uploads = On +upload_max_filesize = 2M +max_file_uploads = 20 +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 +extension=curl + +[CLI Server] +cli_server.color = On + +[Pdo_mysql] +pdo_mysql.default_socket= + +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = Off + +[ODBC] +odbc.allow_persistent = On +odbc.check_persistent = On +odbc.max_persistent = -1 +odbc.max_links = -1 +odbc.defaultlrl = 4096 +odbc.defaultbinmode = 1 + +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = +mysqli.reconnect = Off + +[mysqlnd] +mysqlnd.collect_statistics = On +mysqlnd.collect_memory_statistics = On + +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 + +[bcmath] +bcmath.scale = 0 + +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.cookie_samesite = +session.serialize_handler = php +session.gc_probability = 1 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.sid_length = 26 +session.trans_sid_tags = "a=href,area=href,frame=src,form=" +session.sid_bits_per_character = 5 + +[Assertion] +zend.assertions = 1 + +[Tidy] +tidy.clean_output = Off + +[soap] +soap.wsdl_cache_enabled=1 +soap.wsdl_cache_dir="/tmp" +soap.wsdl_cache_ttl=86400 +soap.wsdl_cache_limit = 5 + +[ldap] +ldap.max_links = -1 diff --git a/taskcluster/docker/updatebot/windows-setup.sh b/taskcluster/docker/updatebot/windows-setup.sh new file mode 100644 index 0000000000..c04d0a6fbf --- /dev/null +++ b/taskcluster/docker/updatebot/windows-setup.sh @@ -0,0 +1,135 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +set -vex + +. ./taskcluster/docker/updatebot/updatebot-version.sh # Get UPDATEBOT_REVISION + +HOME=$(python3 -c "import os;print(os.path.expanduser('~'))") +export HOME +GECKO_PATH="$PWD" +UPDATEBOT_PATH="$MOZ_FETCHES_DIR/updatebot" + +# MOZ_FETCHES_DIR is in Z:/ format. When we update the PATH we need to use +# /z/ format. Fortunately, we can translate them like so: +cd "$MOZ_FETCHES_DIR" +MOZ_FETCHES_PATH="$PWD" + +######################################################### +# Install dependencies + +# Move depot_tools +cd "$MOZ_FETCHES_DIR" +mv depot_tools.git depot_tools + + +# Generating a new version of the preloaded depot_tools download can be done by: +# 1) Running the task, uncommenting the variable assignment below, uncommenting the +# _GENERATE_DEPOT_TOOLS_BINARIES_ section in taskcluster/ci/updatebot/kind.yml, +# and ensuring that an angle update will actually take place (so it downloads the depot_tools) +# 2) Downloading and sanity-checking the depot_tools-preloaded-binaries-GIT_HASH-DATE.zip artifact +# 3) Adding it to tooltool +# 4) Updating the updatebot manifest +# Note that even for the same git revision the downloaded tools can change, so they are tagged +# with both the git hash and the date it was generated + +# export GENERATE_DEPOT_TOOLS_BINARIES=1 + +if test -n "$GENERATE_DEPOT_TOOLS_BINARIES"; then + cp -r depot_tools depot_tools-from-git +fi + +# Git is at /c/Program Files/Git/cmd/git.exe +# It's in PATH for this script (confusingly) but not in PATH so we need to add it +export PATH="/c/Program Files/Git/cmd:$PATH" + +# php & arcanist +if [ -n "$TOOLTOOL_MANIFEST" ]; then + . "$GECKO_PATH/taskcluster/scripts/misc/tooltool-download.sh" +fi + +cp "$MOZ_FETCHES_DIR/vcruntime140.dll" "$MOZ_FETCHES_DIR/php-win" +cp "$GECKO_PATH/taskcluster/docker/updatebot/windows-php.ini" "$MOZ_FETCHES_DIR/php-win/php.ini" + +cd "$MOZ_FETCHES_DIR/arcanist" +patch -p1 < "$GECKO_PATH/taskcluster/docker/updatebot/arcanist_windows_stream.patch" +patch -p1 < "$GECKO_PATH/taskcluster/docker/updatebot/arcanist_patch_size.patch" +cd "$MOZ_FETCHES_DIR" + +export PATH="$MOZ_FETCHES_PATH/php-win:$PATH" +export PATH="$MOZ_FETCHES_PATH/arcanist/bin:$PATH" + +# get Updatebot +cd "$MOZ_FETCHES_DIR" +git clone https://github.com/mozilla-services/updatebot.git +cd updatebot +git checkout "$UPDATEBOT_REVISION" + +# base python needs +python3 -m pip install --no-warn-script-location --user -U pip +python3 -m pip install --no-warn-script-location --user poetry wheel requests setuptools + +# updatebot dependencies +cd "$UPDATEBOT_PATH" +python3 -m poetry install + +# taskcluster secrets and writing out localconfig +cd "$GECKO_PATH" +python3 ./taskcluster/docker/updatebot/run.py "$GECKO_PATH" "$UPDATEBOT_PATH" "$MOZ_FETCHES_PATH" + +# mercurial configuration +cp "$GECKO_PATH/taskcluster/docker/updatebot/hgrc" "$HOME/.hgrc" +# Windows is not happy with $HOME in the hgrc so we need to do a hack to replace it +# with the actual value +( echo "cat < tmp +mv tmp "$HOME/.hgrc" + +# ssh known hosts +cp "$GECKO_PATH/taskcluster/docker/push-to-try/known_hosts" "$HOME/ssh_known_hosts" + +######################################################### +# Run it +export PYTHONIOENCODING=utf8 +export PYTHONUNBUFFERED=1 + +cd "$UPDATEBOT_PATH" +python3 -m poetry run python3 ./automation.py + +######################################################### +if test -n "$GENERATE_DEPOT_TOOLS_BINARIES"; then + # Artifacts + + cd "$MOZ_FETCHES_PATH" + mv depot_tools depot_tools-from-tc + + # Clean out unneeded files + # Need to use cmd because for some reason rm from bash throws 'Access Denied' + cmd '/c for /d /r %i in (*__pycache__) do rmdir /s /q %i' + rm -rf depot_tools-from-git/.git || true + + # Delete the files that are already in git + find depot_tools-from-git -mindepth 1 -maxdepth 1 | sed s/depot_tools-from-git/depot_tools-from-tc/ | while read -r d; do rm -rf "$d"; done + + # Make the artifact + rm -rf depot_tools-preloaded-binaries #remove it if it existed (i.e. we probably have one from tooltool already) + mv depot_tools-from-tc depot_tools-preloaded-binaries + + # zip can't add symbolic links, and exits with an error code. || true avoids a script crash + zip -r depot_tools-preloaded-binaries.zip depot_tools-preloaded-binaries/ || true + + # Convoluted way to get the git hash, because we don't have a .git directory + # Adding extra print statements just in case we need to debug it + GIT_HASH=$(grep depot_tools -A 1 "$GECKO_PATH/taskcluster/ci/fetch/updatebot.yml" | tee /dev/tty | grep revision | tee /dev/tty | awk -F': *' '{print $2}' | tee /dev/tty) + DATE=$(date -I) + mv depot_tools-preloaded-binaries.zip "depot_tools-preloaded-binaries-$GIT_HASH-$DATE.zip" + + # Put the artifact into the directory we will look for it + mkdir -p "$GECKO_PATH/obj-build/depot_tools" || true + mv "depot_tools-preloaded-binaries-$GIT_HASH-$DATE.zip" "$GECKO_PATH/obj-build/depot_tools" +fi + +######################################################### +echo "Killing SQL Proxy" +taskkill -f -im cloud_sql_proxy.exe || true diff --git a/taskcluster/docker/valgrind-build/Dockerfile b/taskcluster/docker/valgrind-build/Dockerfile new file mode 100644 index 0000000000..a585b5771c --- /dev/null +++ b/taskcluster/docker/valgrind-build/Dockerfile @@ -0,0 +1,66 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Mike Hommey + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +ARG TASKCLUSTER_ROOT_URL +ARG DOCKER_IMAGE_PACKAGES +RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES + +# We could try to be smart and install all the -dbg packages corresponding to +# the installed packages, but, not all of them are actually for libraries used +# by Firefox, leading to a larger docker image. Moreover, some of the -dbg +# packages for unnecessary libraries pull other packages through dependencies, +# that make for even larger docker images. +RUN apt-get update && apt-get install \ + dbus-x11 \ + libgtk-3-bin \ + libdbus-1-3-dbgsym \ + libatk-bridge2.0-0-dbgsym \ + libatk1.0-0-dbgsym \ + libcairo2-dbgsym \ + libdbus-glib-1-2-dbgsym \ + libdrm2-dbgsym \ + libffi7-dbgsym \ + libfontconfig1-dbgsym \ + libglx-mesa0-dbgsym \ + libglapi-mesa-dbgsym \ + libglib2.0-0-dbgsym \ + libgdk-pixbuf-2.0-0-dbgsym \ + libgtk-3-0-dbgsym \ + libice6-dbgsym \ + libicu67-dbgsym \ + libpango-1.0-0-dbgsym \ + libpcre3-dbg \ + libpixman-1-0-dbgsym \ + libsm6-dbgsym \ + libvorbis0a-dbgsym \ + libwayland-client0-dbgsym \ + libwayland-cursor0-dbgsym \ + libx11-6-dbgsym \ + libx11-xcb1-dbgsym \ + libxau6-dbgsym \ + libxcb-glx0-dbgsym \ + libxcb-render0-dbgsym \ + libxcb-shm0-dbgsym \ + libxcb1-dbgsym \ + libxcomposite1-dbgsym \ + libxcursor1-dbgsym \ + libxdamage1-dbgsym \ + libxdmcp6-dbg \ + libxext6-dbg \ + libxfixes3-dbgsym \ + libxi6-dbgsym \ + libxinerama1-dbgsym \ + libxrandr2-dbgsym \ + libxrender1-dbgsym \ + libxt6-dbgsym \ + libxxf86vm1-dbg \ + valgrind-dbgsym \ + xvfb \ + zlib1g-dbgsym + +# %include taskcluster/docker/recipes/xvfb.sh +COPY topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh diff --git a/taskcluster/docker/webrender/Dockerfile b/taskcluster/docker/webrender/Dockerfile new file mode 100644 index 0000000000..73b876cf78 --- /dev/null +++ b/taskcluster/docker/webrender/Dockerfile @@ -0,0 +1,16 @@ +FROM $DOCKER_IMAGE_PARENT +MAINTAINER Kartikaya Gupta + +VOLUME /builds/worker/checkouts +VOLUME /builds/worker/workspace +VOLUME /builds/worker/tooltool-cache + +# %include gfx/wr/ci-scripts/docker-image/setup.sh +ADD topsrcdir/gfx/wr/ci-scripts/docker-image/setup.sh /tmp/wr-setup.sh +RUN /bin/bash /tmp/wr-setup.sh && rm /tmp/wr-setup.sh + +# We need this to install cargo-vendor as part of the wrench-deps task +RUN apt-get install libssl-dev + +# Set a default command useful for debugging +CMD ["/bin/bash", "--login"] diff --git a/taskcluster/docs/attributes.rst b/taskcluster/docs/attributes.rst new file mode 100644 index 0000000000..6808d8fb20 --- /dev/null +++ b/taskcluster/docs/attributes.rst @@ -0,0 +1,461 @@ +=============== +Task Attributes +=============== + +Tasks can be filtered, for example to support "try" pushes which only perform a +subset of the task graph or to link dependent tasks. This filtering is the +difference between a full task graph and a target task graph. + +Filtering takes place on the basis of attributes. Each task has a dictionary +of attributes and filters over those attributes can be expressed in Python. A +task may not have a value for every attribute. + +The attributes, and acceptable values, are defined here. In general, attribute +names and values are the short, lower-case form, with underscores. + +kind +==== + +A task's ``kind`` attribute gives the name of the kind that generated it, e.g., +``build`` or ``spidermonkey``. + +run_on_projects +=============== + +The projects where this task should be in the target task set. This is how +requirements like "only run this on autoland" get implemented. + +.. note:: + + Please use this configuration. Running a job for all projects can quickly add up + in term of cost while not providing any value for some projects. + +`run-on-projects` can use either aliases or project names. + +These are the aliases: + + * `integration` -- integration repository (autoland) + * `trunk` -- integration repository plus mozilla-central + * `release` -- release repositories (beta, release, esr) including mozilla-central + * `all` -- everywhere (the default) + +Project names are the repositories. They can be: + +* `autoland` +* `mozilla-central` +* `mozilla-beta` +* `mozilla-release` +* `mozilla-esr102` +* ... A partial list can be found in taskcluster/gecko_taskgraph/util/attributes.py + +For try, this attribute applies only if ``-p all`` is specified. All jobs can +be specified by name regardless of ``run_on_projects``. + +If ``run_on_projects`` is set to an empty list, then the task will not run +anywhere, unless its build platform is specified explicitly in try syntax. + + +.. note:: + + As `try` pushes don't use filter_for_projects by design, there isn't a way + to define that a task will run on `try`. + + +.. note:: + + A given task `[taskA]` may not respect `run-on-projects` if there another task + `[taskB]` which is scheduled to run (such as via run-on-projects) which depends it + `[taskA]`. Because by nature of `TaskB` running we must run `TaskA`. + + See `bug 1640603 `_ as example. + +run_on_hg_branches +================== + +On a given project, the mercurial branch where this task should be in the target +task set. This is how requirements like "only run this RELBRANCH" get implemented. +These are either the regular expression of a branch (e.g.: ``GECKOVIEW_\d+_RELBRANCH``) +or the following alias: + + * `all` -- everywhere (the default) + +Like ``run_on_projects``, the same behavior applies if it is set to an empty list. + +task_duplicates +=============== + +This is used to indicate that we want multiple copies of the task created. +This feature is used to track down intermittent job failures. + +If this value is set to N, the task-creation machinery will create a total of N +copies of the task. Only the first copy will be included in the taskgraph +output artifacts, although all tasks will be contained in the same taskGroup. + +While most attributes are considered read-only, target task methods may alter +this attribute of tasks they include in the target set. + +build_platform +============== + +The build platform defines the platform for which the binary was built. It is +set for both build and test jobs, although test jobs may have a different +``test_platform``. + +build_type +========== + +The type of build being performed. This is a subdivision of ``build_platform``, +used for different kinds of builds that target the same platform. Values are + + * ``debug`` + * ``opt`` + +test_platform +============= + +The test platform defines the platform on which tests are run. It is only +defined for test jobs and may differ from ``build_platform`` when the same binary +is tested on several platforms (for example, on several versions of Windows). +This applies for both talos and unit tests. + +Unlike build_platform, the test platform is represented in a slash-separated +format, e.g., ``linux64/opt``. + +unittest_suite +============== + +This is the unit test suite being run in a unit test task. For example, +``mochitest`` or ``cppunittest``. + +unittest_category +================= + +This is the high-level category of test the suite corresponds to. This is +usually the test harness used to run the suite. + +unittest_try_name +================= + +This is the name used to refer to a unit test via try syntax. It +may not match ``unittest_suite``. + +unittest_variant +================ + +The configuration variant the test suite is running with. If set, this usually +means the tests are running with a special pref enabled. These are defined in +``taskgraph.transforms.test.TEST_VARIANTS``. + +talos_try_name +============== + +This is the name used to refer to a talos job via try syntax. + +raptor_try_name +=============== + +This is the name used to refer to a raptor job via try syntax. + +job_try_name +============ + +This is the name used to refer to a "job" via try syntax (``-j``). Note that for +some kinds, ``-j`` also matches against ``build_platform``. + +test_chunk +========== + +This is the chunk number of a chunked test suite. Note that this is a string! + +test_manifests +============== + +A list of the test manifests that run in this task. + +image_name +========== + +For the ``docker_image`` kind, this attribute contains the docker image name. + +nightly +======= + +Signals whether the task is part of a nightly graph. Useful when filtering +out nightly tasks from full task set at target stage. + +shippable +========= +Signals whether the task is considered "shippable", that it should get signed and is ok to +be used for nightlies or releases. + +all_locales +=========== + +For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains the list +of relevant locales for the platform. + +all_locales_with_changesets +=========================== + +Contains a dict of l10n changesets, mapped by locales (same as in ``all_locales``). + +l10n_chunk +========== +For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains the chunk +number of the job. Note that this is a string! + +chunk_locales +============= +For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains an array of +the individual locales this chunk is responsible for processing. + +locale +====== +For jobs that operate on only one locale, we set the attribute ``locale`` to the +specific locale involved. Currently this is only in l10n versions of the +``beetmover`` and ``balrog`` kinds. + +signed +====== +Signals that the output of this task contains signed artifacts. + +stub-installer +============== +Signals to the build system that this build is expected to have a stub installer +present, and informs followon tasks to expect it. + +repackage_type +============== +This is the type of repackage. Can be ``repackage`` or +``repackage_signing``. + +fetch-artifact +============== + +For fetch jobs, this is the path to the artifact for that fetch operation. + +fetch-alias +=========== +An alias that can be used instead of the real fetch job name in fetch +stanzas for jobs. + +toolchain-artifact +================== +For toolchain jobs, this is the path to the artifact for that toolchain. + +toolchain-alias +=============== +An alias that can be used instead of the real toolchain job name in fetch +stanzas for jobs. + +toolchain-env +============= +Extra environment variables that will be set on the worker when fetching this +toolchain. + +toolchain-command +================= +An extra attribute used to communicate to the build system bootstrap code the +command used to build the toolchain. This is useful because the commands are +formatted differently depending on the worker type, sometimes unconveniently +to parse afterwards. + +always_target +============= + +Tasks with this attribute will be included in the ``target_task_graph`` if +``parameters["tasks_for"]`` is ``hg-push``, regardless of any target task +filtering that occurs. When a task is included in this manner (i.e it otherwise +would have been filtered out), it will be considered for optimization even if +the ``optimize_target_tasks`` parameter is False. + +This is meant to be used for tasks which a developer would almost always want to +run. Typically these tasks will be short running and have a high risk of causing +a backout. For example ``lint`` or ``python-unittest`` tasks. + +shipping_product +================ +For release promotion jobs, this is the product we are shipping. + +shipping_phase +============== +For release promotion jobs, this is the shipping phase (build, promote, push, ship). +During the build phase, we build and sign shippable builds. During the promote phase, +we generate l10n repacks and push to the candidates directory. During the push phase, +we push to the releases directory. During the ship phase, we update bouncer, push to +Google Play, version bump, mark as shipped in ship-it. + +Using the "snowman model", we depend on previous graphs if they're defined. So if we +ask for a ``push`` (the head of the snowman) and point at the body and base, we only +build the head. If we don't point at the body and base, we build the whole snowman +(build, promote, push). + +artifact_prefix +=============== +Most taskcluster artifacts are public, so we've hardcoded ``public/build`` in a +lot of places. To support private artifacts, we've moved this to the +``artifact_prefix`` attribute. It will default to ``public/build`` but will be +overridable per-task. + +artifact_map +=============== +For beetmover jobs, this indicates which yaml file should be used to +generate the upstream artifacts and payload instructions to the task. + +release_artifacts +================= +A set of artifacts that are candidates for downstream release tasks to operate +on. + +batch +===== +Used by `perftest` to indicates that a task can be run as a batch. + + +enable-full-crashsymbols +======================== +In automation, full crashsymbol package generation is normally disabled. For +build kinds where the full crashsymbols should be enabled, set this attribute +to True. The full symbol packages will then be generated and uploaded on +release branches and on try. + +skip-upload-crashsymbols +======================== +Shippable/nightly builds are normally required to set enable-full-crashsymbols, +but in some limited corner cases (universal builds), that is not wanted, because +the symbols are uploaded independently already. + +upload-generated-sources +======================== +generated-sources are normally only uploaded to S3 for shippable/nightly +builds. This attributes turns that on for other builds such as macosx +before unification. + +cron +==== +Indicates that a task is meant to be run via cron tasks, and should not be run +on push. + +cached_task +=========== +Some tasks generate artifacts that are cached between pushes. This is a +dictionary with the type and name of the cache, and the unique string used to +identify the current version of the artifacts. See :py:mod:`taskgraph.util.cached_task`. + +.. code:: yaml + + cached_task: + digest: 66dfc2204600b48d92a049b6a18b83972bb9a92f9504c06608a9c20eb4c9d8ae + name: debian7-base + type: docker-images.v2 + +eager_indexes +============= +A list of strings of indexes to populate before the task ever completes. Some tasks (e.g. cached tasks) we +want to exist in the index before they even run/complete. Our current use is to allow us to depend on an +unfinished cached task in future pushes. This avoids extra overhead from multiple tasks running, and +can allow us to have our results in just a bit earlier. + +required_signoffs +================= +A list of release signoffs that this kind requires, should the release also +require these signoffs. For example, ``mar-signing`` signoffs may be required +by some releases in the future; for any releases that require ``mar-signing`` +signoffs, the kinds that also require that signoff are marked with this +attribute. + +update-channel +============== +The update channel the build is configured to use. + +mar-channel-id +============== +The mar-channel-id the build is configured to use. + +accepted-mar-channel-ids +======================== +The mar-channel-ids this build will accept updates to. It should usually be the same as +the value mar_channel_id. If more than one ID is needed, then you should use a +comma separated list of values. + +openh264_rev +============ +Only used for openh264 plugin builds, used to signify the revision (and thus inform artifact name) of the given build. + +code-review +=========== +If a task set this boolean attribute to `true`, it will be processed by the code +review bot, the task will ran for every new Phabricator diff. +Any supported and detected issue will be automatically reported on the +Phabricator revision. + +resource-monitor +================ +If a task set this boolean attribute to `true`, it will collect CPU, memory, and +- if available - Disk and Network IO by running the resource-monitor utility, +provided through fetches. + +retrigger +========= +Whether the task can be retriggered, or if it needs to be re-run. + +disable-push-apk +================ +Some GeckoView-only Android tasks produce APKs that shouldn't be +pushed to the Google Play Store. Set this to ``true`` to disable +pushing. + +disable-build-signing +===================== +Some GeckoView-only tasks produce APKs, but not APKs that should be +signed. Set this to ``true`` to disable APK signing. + +enable-build-signing +==================== +We enable build-signing for ``shippable``, ``nightly``, and ``enable-build-signing`` tasks. + +run-visual-metrics +================== +If set to true, will run the visual metrics task on the provided +video files. + +skip-verify-test-packaging +========================== +If set to true, this task will not be checked to see that +MOZ_AUTOMATION_PACKAGE_TESTS is set correctly based on whether or not the task +has dependent tests. This should only be used in very unique situations, such +as Windows AArch64 builds that copy test packages between build tasks. + +geckodriver +=========== +If non-empty, declares that the (toolchain) task is a `geckodriver` +task that produces a binary that should be signed. + +rebuild-on-release +================== +If true, the digest for this task will also depend on if the branch is a +release branch. This will cause tasks like toolchains to be rebuilt as they +move from e.g. autoland to mozilla-central. + +local-toolchain +=============== +This toolchain is used for local development, so should be built on trunk, even +if it does not have any in-graph consumers. + +artifact-build +============== + +This build is an artifact build. + +This deliberately excludes builds that are implemented using the artifact build +machinery, but are not primarily intended to short-circuit build time. In +particular the Windows aarch64 builds are not marked this way. + +maven_packages +=============== +List of maven packages produced by the build. + +supports-artifact-builds +======================== + +If false, the task requires a compiled build and will not work with artifact builds. diff --git a/taskcluster/docs/balrog.rst b/taskcluster/docs/balrog.rst new file mode 100644 index 0000000000..cd00fbb325 --- /dev/null +++ b/taskcluster/docs/balrog.rst @@ -0,0 +1,45 @@ +Balrog in Release Promotion +=========================== + +Overview +-------- +Balrog is Mozilla's update server. It is responsible for delivering newer versions of Firefox to existing Firefox installations. If you are not already, it would be useful to be familiar with Balrog's core concepts before continuing with this doc. You can find that information on `Balrog's official documentation`_. + +The basic interactions that Release Promotion has with Balrog are as follows: + +#. Submit new release metadata to Balrog with a number of ``balrog`` tasks and the ``release-balrog-submit-toplevel`` task. +#. Update test channels to point at the new release in the ``release-balrog-submit-toplevel`` task. +#. Verify the new release updates with ``release-update-verify`` and ``release-final-verify`` tasks. +#. Schedule the new release to be shipped in the ``release-balrog-scheduling`` task. + +Submit New Release Metadata +--------------------------- +Balrog requires many different pieces of information before it can ship updates. Most of this information revolves around update file (MAR) metadata (hash, filesize, target platform, target locale). This information is submitted by ``balrog`` tasks. + +We also submit some more general information about releases (version number, MAR url templates, release name, etc.) as part of the ``release-balrog-submit-toplevel`` task. + +All balrog submission is done by `balrogscript workers`_, and happens in the ``promote`` phase. + +Update Test Channels +-------------------- +Balrog has "test" channels that we use to allow verification of new release updates prior to shipping. The ``release-balrog-submit-toplevel`` task is responsible for updating these test channels whenever we prepare a new release. This happens in the ``promote`` phase. + +Verify the Release +------------------ +Once a release is live on a test channel ``release-update-verify`` begins and performs same sanity checks. This happens in the ``promote`` phase. + +After a release has been pushed to cdns, ``release-final-verify`` runs and performs some additional checks. This happens in the ``push`` phase. + +Schedule Shipping +----------------- +When we're ready to ship a release we need to let Balrog know about it by scheduling a change to the appropriate Balrog rule. If ``release_eta`` is set it will be used as the ship date and time. If not, the release will be scheduled for shipping 5 minutes in the future. In either case, signoff will need to be done in Balrog by multiple parties before the release is actually made live. + +This step is done by the ``release-balrog-scheduling`` task in the ``ship`` phase. + +``secondary`` tasks +------------------- +You may have noticed ``secondary`` variants of the ``release-balrog-submit-toplevel``, ``release-update-verify``, ``release-final-verify``, and ``release-balrog-scheduling`` tasks. These fulfill the same function as their primary counterparts, but for the "beta" update channel. They are only used when we build Release Candidates. + + +.. _Balrog's official documentation: http://mozilla-balrog.readthedocs.io/en/latest/ +.. _balrogscript workers: https://github.com/mozilla-releng/balrogscript diff --git a/taskcluster/docs/caches.rst b/taskcluster/docs/caches.rst new file mode 100644 index 0000000000..dcda4102dd --- /dev/null +++ b/taskcluster/docs/caches.rst @@ -0,0 +1,98 @@ +.. taskcluster_caches: + +Caches +====== + +There are various caches used by the in-tree tasks. This page attempts to +document them and their appropriate use. + +Caches are essentially isolated filesystems that are persisted between +tasks. For example, if 2 tasks run on a worker - one after the other - +and both tasks request the same cache, the subsequent task will be +able to see files in the cache that were created by the first task. +It's also worth noting that TaskCluster workers ensure a cache can only +be used by 1 task at a time. If a worker is simultaneously running +multiple tasks requesting the same named cache, the worker will +have multiple caches of the same name on the worker. + +Caches and ``run-task`` +----------------------- + +``run-task`` is our generic task wrapper script. It does common activities +like ensure a version control checkout is present. + +One of the roles of ``run-task`` is to verify and sanitize caches. +It does this by storing state in a cache on its first use. If the recorded +*capabilities* of an existing cache don't match expectations for the +current task, ``run-task`` bails. This ensures that caches are only +reused by tasks with similar execution *profiles*. This prevents +accidental cache use across incompatible tasks. It also allows run-task +to make assumptions about the state of caches, which can help avoid +costly operations. + +In addition, the hash of ``run-task`` is used to derive the cache name. +So any time ``run-task`` changes, a new set of caches are used. This +ensures that any backwards incompatible changes or bug fixes to +``run-task`` result in fresh caches. + +Some caches are reserved for use with run-task. That property will be denoted +below. + +Common Caches +------------- + +Version Control Caches +:::::::::::::::::::::: + +``level-{{level}}-checkouts-{{hash}}`` + This cache holds version control checkouts, each in a subdirectory named + after the repo (e.g., ``gecko``). + + Checkouts should be read-only. If a task needs to create new files from + content of a checkout, this content should be written in a separate + directory/cache (like a workspace). + + This cache name pattern is managed by ``run-task`` and must only be + used with ``run-task``. + +``level-{{level}}-checkouts-sparse-{{hash}}`` + This is like the above but is used when the checkout is sparse (contains + a subset of files). + +``level-{{level}}-checkouts-{{version}}`` (deprecated) + This cache holds version control checkouts, each in a subdirectory named + after the repo (e.g., ``gecko``). + + Checkouts should be read-only. If a task needs to create new files from + content of a checkout, this content should be written in a separate + directory/cache (like a workspace). + + A ``version`` parameter appears in the cache name to allow + backwards-incompatible changes to the cache's behavior. + + The ``hg-store`` contains a `shared store ` + that is is used by ``hg robustcheckout``. If you are using ``run-task`` you + should set the ``HG_STORE_PATH`` environment variable to point to this + directory. If you are using ``hg robustcheckout``, pass this directory to the + ``--sharebase`` option. + +Workspace Caches +:::::::::::::::: + +``level-{{level}}-*-workspace`` + These caches (of various names typically ending with ``workspace``) + contain state to be shared between task invocations. Use cases are + dependent on the task. + +Other +::::: + +``level-{{level}}-tooltool-cache-{{hash}}`` + Tooltool invocations should use this cache. Tooltool will store files here + indexed by their hash. + + This cache name pattern is reserved for use with ``run-task`` and must only + be used by ``run-task`` + +``tooltool-cache`` (deprecated) + Legacy location for tooltool files. Use the per-level one instead. diff --git a/taskcluster/docs/config.rst b/taskcluster/docs/config.rst new file mode 100644 index 0000000000..fefe1265b9 --- /dev/null +++ b/taskcluster/docs/config.rst @@ -0,0 +1,35 @@ +Taskcluster Configuration +========================= + +Taskcluster requires configuration of many resources to correctly support Firefox CI. +Many of those span multiple projects (branches) instead of riding the trains. + +Global Settings +--------------- + +The data behind configuration of all of these resources is kept in the `ci-configuration`_ repository. +The files in this repository are intended to be self-documenting, but one of particular interest is ``projects.yml``, which describes the needs of each project. + +Configuration Implementation +---------------------------- + +Translation of `ci-configuration`_ to Taskcluster resources, and updating those resources, is handled by `ci-admin`_. +This is a small Python application with commands to generate the expected configuration, compare the expected to actual configuration, and apply the expected configuration. +Only the ``apply`` subcommand requires elevated privileges. + +This tool automatically annotates all managed resources with "DO NOT EDIT", warning users of the administrative UI that changes made through the UI may be reverted. + +Changing Configuration +---------------------- + +To change Taskcluster configuration, make patches to `ci-configuration`_ or (if necessary) `ci-admin`_, using the Firefox Build System :: Task Configuration Bugzilla component. +Part of the landing process is for someone with administrative scopes to apply the resulting configuration. + +You can test your patches with something like this, assuming ``.`` is a checkout of the `ci-configuration`_ repository containing your changes: + +.. code-block: shell + + ci-admin diff --ci-configuration-directory . + +.. _ci-configuration: https://hg.mozilla.org/ci/ci-configuration/file +.. _ci-admin: https://hg.mozilla.org/ci/ci-admin/file diff --git a/taskcluster/docs/cron.rst b/taskcluster/docs/cron.rst new file mode 100644 index 0000000000..86552114c1 --- /dev/null +++ b/taskcluster/docs/cron.rst @@ -0,0 +1,102 @@ +Periodic Taskgraphs +=================== + +The cron functionality allows in-tree scheduling of task graphs that run +periodically, instead of on a push. + +Cron.yml +-------- + +In the root of the Gecko directory, you will find `.cron.yml`. This defines +the periodic tasks ("cron jobs") run for Gecko. Each specifies a name, what to +do, and some parameters to determine when the cron job should occur. + +See `the scema `_ +for details on the format and meaning of this file. + +How It Works +------------ + +The `TaskCluster Hooks Service `_ +has a hook configured for each repository supporting periodic task graphs. The +hook runs every 15 minutes, and the resulting task is referred to as a "cron task". +That cron task runs the `build-decision +`_ image in a +checkout of the Gecko source tree. + +The task reads ``.cron.yml``, then consults the current time (actually the time +the cron task was created, rounded down to the nearest 15 minutes) and creates +tasks for any cron jobs scheduled at that time. + +Each cron job in ``.cron.yml`` specifies a ``job.type``, corresponding to a +function responsible for creating TaskCluster tasks when the job runs. + +Describing Time +--------------- + +This cron implementation understands the following directives when +describing when to run: + +* ``minute``: The minute in which to run, must be in 15 minute increments (see above) +* ``hour``: The hour of the day in which to run, in 24 hour time. +* ``day``: The day of the month as an integer, such as `1`, `16`. Be cautious above `28`, remember February. +* ``weekday``: The day of the week, `Monday`, `Tuesday`, etc. Full length ISO compliant words. + +Setting both 'day' and 'weekday' will result in a cron job that won't run very often, +and so is undesirable. + +*Examples* + +.. code-block:: yaml + + # Never + when: [] + + # 4 AM and 4 PM, on the hour, every day. + when: + - {hour: 16, minute: 0} + - {hour: 4, minute: 0} + + # The same as above, on a single line + when: [{hour: 16, minute: 0}, {hour: 4, minute: 0}] + + # 4 AM on the second day of every month. + when: + - {day: 2, hour: 4, minute: 0} + + # Mondays and Thursdays at 10 AM + when: + - {weekday: 'Monday', hour: 10, minute: 0} + - {weekday: 'Thursday', hour: 10, minute: 0} + +.. note:: + + Times are expressed in UTC (Coordinated Universal Time) + + +Decision Tasks +.............. + +For ``job.type`` "decision-task", tasks are created based on +``.taskcluster.yml`` just like the decision tasks that result from a push to a +repository. They run with a distinct ``taskGroupId``, and are free to create +additional tasks comprising a task graph. + +Scopes +------ + +The cron task runs with the sum of all cron job scopes for the given repo. For +example, for the "sequoia" project, the scope would be +``assume:repo:hg.mozilla.org/projects/sequoia:cron:*``. Each cron job creates +tasks with scopes for that particular job, by name. For example, the +``check-frob`` cron job on that repo would run with +``assume:repo:hg.mozilla.org/projects/sequoia:cron:check-frob``. + +.. important:: + + The individual cron scopes are a useful check to ensure that a job is not + accidentally doing something it should not, but cannot actually *prevent* a + job from using any of the scopes afforded to the cron task itself (the + ``..cron:*`` scope). This is simply because the cron task runs arbitrary + code from the repo, and that code can be easily modified to create tasks + with any scopes that it possesses. diff --git a/taskcluster/docs/howto/index.rst b/taskcluster/docs/howto/index.rst new file mode 100644 index 0000000000..ab1010666b --- /dev/null +++ b/taskcluster/docs/howto/index.rst @@ -0,0 +1,203 @@ +How Tos +======= + +All of this equipment is here to help you get your work done more efficiently. +However, learning how task-graphs are generated is probably not the work you +are interested in doing. This section should help you accomplish some of the +more common changes to the task graph with minimal fuss. + +Taskgraph's documentation provides many relevant how-to guides: + +.. note:: + + If you come across references to the ``taskgraph`` command, simply prepend + ``./mach`` to the command to make it work in ``mozilla-central``. + +.. toctree:: + + Run Taskgraph Locally + Debug Taskgraph + Use Fetches + Use Docker Images + Create Actions + +See Taskgraph's `how-to section`_ for even more guides! + +.. _how-to section: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/index.html + +Common Changes +-------------- + +Additionally, here are some tips for common changes you wish to make within +``mozilla-central``. + +Changing Test Characteristics +............................. + +First, find the test description. This will be in +``taskcluster/ci/*/tests.yml``, for the appropriate kind (consult +:ref:`kinds`). You will find a YAML stanza for each test suite, and each +stanza defines the test's characteristics. For example, the ``chunks`` +property gives the number of chunks to run. This can be specified as a simple +integer if all platforms have the same chunk count, or it can be keyed by test +platform. For example: + +.. code-block:: yaml + + chunks: + by-test-platform: + linux64/debug: 10 + default: 8 + +The full set of available properties is in +``taskcluster/gecko_taskgraph/transforms/test/__init__.py``. Some other +commonly-modified properties are ``max-run-time`` (useful if tests are being +killed for exceeding maxRunTime) and ``treeherder-symbol``. + +.. note:: + + Android tests are also chunked at the mozharness level, so you will need to + modify the relevant mozharness config, as well. + +Adding a Test Suite +................... + +To add a new test suite, you will need to know the proper mozharness invocation +for that suite, and which kind it fits into (consult :ref:`kinds`). + +Add a new stanza to ``taskcluster/ci//tests.yml``, copying from the other +stanzas in that file. The meanings should be clear, but authoritative +documentation is in +``taskcluster/gecko_taskgraph/transforms/test/__init__.py`` should you need +it. The stanza name is the name by which the test will be referenced in try +syntax. + +Add your new test to a test set in ``test-sets.yml`` in the same directory. If +the test should only run on a limited set of platforms, you may need to define +a new test set and reference that from the appropriate platforms in +``test-platforms.yml``. If you do so, include some helpful comments in +``test-sets.yml`` for the next person. + +Greening Up a New Test +...................... + +When a test is not yet reliably green, configuration for that test should not +be landed on integration branches. Of course, you can control where the +configuration is landed! For many cases, it is easiest to green up a test in +try: push the configuration to run the test to try along with your work to fix +the remaining test failures. + +When working with a group, check out a "twig" repository to share among your +group, and land the test configuration in that repository. Once the test is +green, merge to an integration branch and the test will begin running there as +well. + +Adding a New Task +................. + +If you are adding a new task that is not a test suite, there are a number of +options. A few questions to consider: + + * Is this a new build platform or variant that will produce an artifact to + be run through the usual test suites? + + * Does this task depend on other tasks? Do other tasks depend on it? + + * Is this one of a few related tasks, or will you need to generate a large + set of tasks using some programmatic means (for example, chunking)? + + * How is the task actually executed? Mozharness? Mach? + + * What kind of environment does the task require? + +Armed with that information, you can choose among a few options for +implementing this new task. Try to choose the simplest solution that will +satisfy your near-term needs. Since this is all implemented in-tree, it +is not difficult to refactor later when you need more generality. + +Existing Kind +````````````` + +The simplest option is to add your task to an existing kind. This is most +practical when the task "makes sense" as part of that kind -- for example, if +your task is building an installer for a new platform using mozharness scripts +similar to the existing build tasks, it makes most sense to add your task to +the ``build`` kind. If you need some additional functionality in the kind, +it's OK to modify the implementation as necessary, as long as the modification +is complete and useful to the next developer to come along. + +Tasks in the ``build`` kind generate Firefox installers, and the ``test`` kind +will add a full set of Firefox tests for each ``build`` task. + +New Kind +```````` + +The next option to consider is adding a new kind. A distinct kind gives you +some isolation from other task types, which can be nice if you are adding an +experimental kind of task. + +Kinds can range in complexity. The simplest sort of kind uses the transform +loader to read a list of jobs from the ``jobs`` key, and applies the standard +``job`` and ``task`` transforms: + +.. code-block:: yaml + + implementation: taskgraph.task.transform:TransformTask + transforms: + - taskgraph.transforms.job:transforms + - taskgraph.transforms.task:transforms + jobs: + - ..your job description here.. + +Job descriptions are defined and documented in +``taskcluster/gecko_taskgraph/transforms/job/__init__.py``. + +Custom Kind Loader +`````````````````` + +If your task depends on other tasks, then the decision of which tasks to create +may require some code. For example, the ``test`` kind iterates over +the builds in the graph, generating a full set of test tasks for each one. This specific +post-build behavior is implemented as a loader defined in ``taskcluster/gecko_taskgraph/loader/test.py``. + +A custom loader is useful when the set of tasks you want to create is not +static but based on something else (such as the available builds) or when the +dependency relationships for your tasks are complex. + +Custom Transforms +````````````````` + +Most loaders apply a series of ":ref:`transforms`" that start with +an initial human-friendly description of a task and end with a task definition +suitable for insertion into a Taskcluster queue. + +Custom transforms can be useful to apply defaults, simplifying the YAML files +in your kind. They can also apply business logic that is more easily expressed +in code than in YAML. + +Transforms need not be one-to-one: a transform can produce zero or more outputs +for each input. For example, the test transforms perform chunking by producing +an output for each chunk of a given input. + +Ideally those transforms will produce job descriptions, so you can use the +existing ``job`` and ``task`` transforms: + +.. code-block:: yaml + + transforms: + - taskgraph.transforms.my_stuff:transforms + - taskgraph.transforms.job:transforms + - taskgraph.transforms.task:transforms + +Try to keep transforms simple, single-purpose and well-documented! + +Custom Run-Using +```````````````` + +If the way your task is executed is unique (so, not a mach command or +mozharness invocation), you can add a new implementation of the job +description's "run" section. Before you do this, consider that it might be a +better investment to modify your task to support invocation via mozharness or +mach, instead. If this is not possible, then adding a new file in +``taskcluster/gecko_taskgraph/transforms/jobs`` with a structure similar to its peers +will make the new run-using option available for job descriptions. diff --git a/taskcluster/docs/img/enableSourceServer.png b/taskcluster/docs/img/enableSourceServer.png new file mode 100644 index 0000000000..2a3a469129 Binary files /dev/null and b/taskcluster/docs/img/enableSourceServer.png differ diff --git a/taskcluster/docs/img/windbg-srcfix.png b/taskcluster/docs/img/windbg-srcfix.png new file mode 100644 index 0000000000..f9102ea913 Binary files /dev/null and b/taskcluster/docs/img/windbg-srcfix.png differ diff --git a/taskcluster/docs/index.rst b/taskcluster/docs/index.rst new file mode 100644 index 0000000000..c157db056c --- /dev/null +++ b/taskcluster/docs/index.rst @@ -0,0 +1,79 @@ +.. taskcluster_index: + +Firefox CI and Taskgraph +======================== + +Firefox's `continuous integration`_ (CI) system is made up of three parts. + +First there's `Taskcluster`_, a task execution framework developed by Mozilla. +Taskcluster is capable of building complex, scalable and highly customizable CI +systems. Taskcluster is more like a set of building blocks that can be used to +create CI systems, rather than a fully-fledged CI system itself. + +The second part is the `Firefox CI`_ instance of Taskcluster. This is the +Taskcluster deployment responsible for running most of Mozilla's CI needs. This +component is comprised of a Kubernetes cluster to run the Taskcluster services +(maintained by SRE Services), some customizations to support Taskcluster +on ``hg.mozilla.org`` and access control in the `ci-configuration`_ repo +(maintained by Release Engineering). + +The third part is `Taskgraph`_. Taskgraph is a Python library that can generate +a `DAG`_ of tasks and submit them to a Taskcluster instance. This is the +component that most Gecko and Mozilla developers will interact with when +working with tasks, and will be the focal point of the rest of this +documentation. + +.. note:: + + Historically Taskgraph started out inside ``mozilla-central``. It was then + forked to standalone `Taskgraph`_ in order to support projects on Github. + Over time maintaining two forks grew cumbersome so they are in the process + of being merged back together. + + Today the version of Taskgraph under ``taskcluster/gecko_taskgraph`` depends + on the standalone version, which is vendored under + ``third_party/python/taskcluster-taskgraph``. There is still a lot of + duplication between these places, but ``gecko_taskgraph`` is slowly being + re-written to consume standalone Taskgraph. + +The ``taskcluster`` directory contains all the files needed to define the graph +of tasks that must be executed to build and test the Gecko tree. This is more +complex than you think! There are 30,000+ tasks and counting in Gecko's CI +graphs. + +Taskgraph supports: + + * A huge array of tasks + * Different behavior for different repositories + * "Try" pushes, with special means to select a subset of the graph for execution + * Optimization -- skipping tasks that have already been performed + * Extremely flexible generation of a variety of tasks using an approach of + incrementally transforming job descriptions into task definitions. + +The most comprehensive resource on Taskgraph is `Taskgraph's documentation`_. These docs +will refer there when appropriate and expand on topics specific to ``gecko_taskgraph`` +where necessary. + +If you are reading this with a particular goal in mind and would rather avoid +becoming a task-graph expert, check out the :doc:`how-to section `. + +.. _continuous integration: https://en.wikipedia.org/wiki/Continuous_integration +.. _Taskcluster: https://taskcluster.net/ +.. _Firefox CI: https://firefox-ci-tc.services.mozilla.com/ +.. _ci-configuration: https://hg.mozilla.org/ci/ci-configuration/ +.. _Taskgraph: https://github.com/taskcluster/taskgraph +.. _DAG: https://en.wikipedia.org/wiki/Directed_acyclic_graph +.. _Taskgraph's documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/ + +.. toctree:: + + taskgraph + howto/index + transforms/index + optimization/index + cron + try + release-promotion + versioncontrol + config + reference diff --git a/taskcluster/docs/kinds.rst b/taskcluster/docs/kinds.rst new file mode 100644 index 0000000000..b88ff40d75 --- /dev/null +++ b/taskcluster/docs/kinds.rst @@ -0,0 +1,796 @@ +Task Kinds +========== + +This section lists and documents the available task kinds. + +build +----- + +Builds are tasks that produce an installer or other output that can be run by +users or automated tests. This is more restrictive than most definitions of +"build" in a Mozilla context: it does not include tasks that run build-like +actions for static analysis or to produce instrumented artifacts. + +build-fat-aar +------------- + +Build architecture-independent GeckoView AAR (Android ARchive) files. This build-like tasks is an +artifact build (ARMv7, but this is arbitrary) that itself depends on arch-specific Android build +jobs. It fetches arch-specific AAR files, extracts arch-specific libraries and preference files, +and then assembles a multi-architecture "fat AAR". Downstream consumers are expected to use +per-ABI feature splits to produce arch-specific APKs. + +If you want to run this task locally, you need to specify these environment variable: + - MOZ_ANDROID_FAT_AAR_ARCHITECTURES: must be a comma-separated list of architecture. + Eg: "armeabi-v7a,arm64-v8a,x86,x86_64". + - each of MOZ_ANDROID_FAT_AAR_ARM64_V8A, MOZ_ANDROID_FAT_AAR_ARMEABI_V7A, + MOZ_ANDROID_FAT_AAR_X86, MOZ_ANDROID_FAT_AAR_X86_64 must be a path relative to + MOZ_FETCHES_DIR. + +build-signing +------------- + +Many builds must be signed. The build-signing task takes the unsigned `build` +kind artifacts and passes them through signingscriptworker to a signing server +and returns signed results. + +build-mac-signing +----------------- + +Mac signing without notarization. + +Uses a self-signed certificate on level 1 environments. + +Shippable downstream tasks should use artifacts from build-mac-notarization. + +build-mac-notarization +---------------------- + +Mac notarization on signingscript (linux) using rcodesign. + +Only available in production environments, as Apple doesn't offer a test +endpoint for notarizing apps. + +Downstream tasks switch to build-mac-signing in non-shippable builds or level 1 +environments. + +artifact-build +-------------- + +This kind performs an artifact build: one based on precompiled binaries +discovered via the TaskCluster index. This task verifies that such builds +continue to work correctly. + +bootstrap +--------- + +This kind performs a standalone bootstrap of a Firefox build from various system environments. + +hazard +------ + +Hazard builds are similar to "regular' builds, but use a compiler extension to +extract a bunch of data from the build and then analyze that data looking for +hazardous behaviors. + +l10n +---- + +The l10n kind takes the last published nightly build, and generates localized builds +from it. You can read more about how to trigger these on the `wiki +`_. + +shippable-l10n +-------------- + +The nightly l10n kind repacks a specific nightly build (from the same source code) +in order to provide localized versions of the same source. + +shippable-l10n-signing +---------------------- + +The shippable l10n signing kind takes artifacts from the shippable-l10n kind and +passes them to signing servers to have their contents signed appropriately, based +on an appropriate signing format. One signing job is created for each shippable-l10n +job (usually chunked). + +shippable-l10n-mac-signing +-------------------------- + +Mac signing without notarization. + +Uses a self-signed certificate on level 1 environments. + +Shippable downstream tasks should use artifacts from build-mac-notarization. + +shippable-l10n-mac-notarization +------------------------------- + +Mac notarization on signingscript (linux) using rcodesign. + +Only available in production environments, as Apple doesn't offer a test +endpoint for notarizing apps. + +Downstream tasks switch to build-mac-signing in non-shippable builds or level 1 +environments. + +source-test +----------- + +Source-tests are tasks that run directly from the Gecko source. This can include linting, +unit tests, source-code analysis, or measurement work. While source-test tasks run from +a source checkout, it is still possible for them to depend on a build artifact, though +often they do not. + +code-review +----------- + +Publish issues found by source-test tasks on Phabricator. +This is a part of Release Management code review Bot. + +upload-symbols +-------------- + +Upload-symbols tasks run after builds and upload the symbols files generated by +build tasks to Socorro for later use in crash analysis. + +upload-symbols-dummy +-------------------- + +Upload-symbols-dummy ensures both x64 and macosx64 tasks run for nightlies and releases. + +upload-generated-sources +------------------------ + +Upload-generated-sources tasks run after builds and upload source files that were generated as part of the build process to an s3 bucket for later use in links from crash reports or when debugging shipped builds. + +upload-generated-sources-dummy +------------------------------ + +Upload-generated-sources-dummy ensures both x64 and macosx64 tasks run for nightlies and releases. + +valgrind +-------- + +Valgrind tasks produce builds instrumented by valgrind. + +searchfox +--------- + +Searchfox builds generate C++ index data for Searchfox. + +static-analysis-autotest +------------------------ + +Static analysis autotest utility in order to be sure that there is no regression +when upgrading utilities that impact static-analysis. + +toolchain +--------- + +Toolchain builds create the compiler toolchains used to build Firefox. These +will eventually be dependencies of the builds themselves, but for the moment +are run manually via try pushes and the results uploaded to tooltool. + +spidermonkey +------------ + +Spidermonkey tasks check out the full gecko source tree, then compile only the +spidermonkey portion. Each task runs specific tests after the build. + +test +---- + +See the :doc:`test kind documentation ` for more info. + +.. toctree:: + :hidden: + + kinds/test + + +docker-image +------------ + +Tasks of the ``docker-image`` kind build the Docker images in which other +Docker tasks run. + +The tasks to generate each docker image have predictable labels: +``docker-image-``. + +Docker images are built from subdirectories of ``taskcluster/docker``, using +``docker build``. There is currently no capability for one Docker image to +depend on another in-tree docker image, without uploading the latter to a +Docker repository. + +balrog +------ + +Balrog tasks are responsible for submitting metadata to our update server (Balrog). +They are typically downstream of a beetmover job that moves signed MARs somewhere +(eg: beetmover and beetmover-l10n for releases, beetmover-repackage for nightlies). + +beetmover +--------- + +Beetmover, takes specific artifacts, "Beets", and pushes them to a location outside +of Taskcluster's task artifacts, (archive.mozilla.org as one place) and in the +process determines the final location and a "pretty" name (versioned product name) + +beetmover-l10n +-------------- + +Beetmover L10n, takes specific artifacts, "Beets", and pushes them to a location outside +of Taskcluster's task artifacts, (archive.mozilla.org as one place) and in the +process determines the final location and a "pretty" name (versioned product name) +This separate kind uses logic specific to localized artifacts, such as including +the language in the final artifact names. + +beetmover-repackage +------------------- + +Beetmover-repackage is beetmover but for tasks that need an intermediate step +between signing and packaging, such as OSX. For more details see the definitions +of the Beetmover kind above and the repackage kind below. + +release-beetmover-push-to-release +--------------------------------- + +release-beetmover-push-to-release publishes promoted releases from the +candidates directory to the release directory. This is part of release +promotion. + +beetmover-snap +-------------- +Beetmover-source publishes Ubuntu's snap. This is part of release promotion. + +beetmover-source +---------------- +Beetmover-source publishes release source. This is part of release promotion. + +beetmover-geckoview +------------------- +Beetmover-geckoview publishes the Android library called "geckoview". + +beetmover-apt +------------------- +Beetmover-apt publishes Linux .deb packages from the Mozilla archive to our APT repositories. + +condprof +-------- +condprof creates and updates realistic profiles. + +release-source-checksums-signing +-------------------------------- +release-source-checksums-signing take as input the checksums file generated by +source-related beetmover task and sign it via the signing scriptworkers. +Returns the same file signed and additional detached signature. + +beetmover-checksums +------------------- +Beetmover, takes specific artifact checksums and pushes it to a location outside +of Taskcluster's task artifacts (archive.mozilla.org as one place) and in the +process determines the final location and "pretty" names it (version product name) + +release-beetmover-source-checksums +---------------------------------- +Beetmover, takes source specific artifact checksums and pushes it to a location outside +of Taskcluster's task artifacts (archive.mozilla.org as one place) and in the +process determines the final location and "pretty" names it (version product name) + +perftest +-------- +Runs performance tests using mozperftest. + +release-balrog-submit-toplevel +------------------------------ +Toplevel tasks are responsible for submitting metadata to Balrog that is not specific to any +particular platform+locale. For example: fileUrl templates, versions, and platform aliases. + +Toplevel tasks are also responsible for updating test channel rules to point at the Release +being generated. + +release-secondary-balrog-submit-toplevel +---------------------------------------- +Performs the same function as `release-balrog-submit-toplevel`, but against the beta channel +during RC builds. + +release-balrog-scheduling +------------------------- +Schedules a Release for shipping in Balrog. If a `release_eta` was provided when starting the Release, +it will be scheduled to go live at that day and time. + +release-secondary-balrog-scheduling +----------------------------------- +Performs the same function as `release-balrog-scheduling`, except for the beta channel as part of RC +Releases. + +release-binary-transparency +--------------------------- +Binary transparency creates a publicly verifiable log of binary shas for downstream +release auditing. https://wiki.mozilla.org/Security/Binary_Transparency + +release-snap-repackage +---------------------- +Generate an installer using Ubuntu's Snap format. + +release-flatpak-repackage +------------------------- +Generate an installer using Flathub's Flatpak format. + +release-flatpak-push +-------------------- +Pushes Flatpak repackage on Flathub + +release-secondary-flatpak-push +------------------------------ +Performs the same function as `release-flatpak-push`, except for the beta channel as part of RC +Releases. + +release-notify-av-announce +-------------------------- +Notify anti-virus vendors when a release is likely shipping. + +release-notify-push +------------------- +Notify when a release has been pushed to CDNs. + +release-notify-ship +------------------- +Notify when a release has been shipped. + +release-secondary-notify-ship +----------------------------- +Notify when an RC release has been shipped to the beta channel. + +release-notify-promote +---------------------- +Notify when a release has been promoted. + +release-notify-started +---------------------- +Notify when a release has been started. + +release-bouncer-sub +------------------- +Submits bouncer information for releases. + +release-mark-as-shipped +----------------------- +Marks releases as shipped in Ship-It v1 + +release-bouncer-aliases +----------------------- +Update Bouncer's (download.mozilla.org) "latest" aliases. + +cron-bouncer-check +------------------ +Checks Bouncer (download.mozilla.org) uptake. + +bouncer-locations +----------------- +Updates nightly bouncer locations for version bump. + +release-bouncer-check +--------------------- +Checks Bouncer (download.mozilla.org) uptake as part of the release tasks. + +release-generate-checksums +-------------------------- +Generate the per-release checksums along with the summaries + +release-generate-checksums-signing +---------------------------------- +Sign the pre-release checksums produced by the above task + +release-generate-checksums-beetmover +------------------------------------ +Submit to S3 the artifacts produced by the release-checksums task and its signing counterpart. + +release-final-verify +-------------------- +Verifies the contents and package of release update MARs. + +release-secondary-final-verify +------------------------------ +Verifies the contents and package of release update MARs for RC releases. + +release-push-langpacks +------------------------------- +Publishes language packs onto addons.mozilla.org. + +release-beetmover-signed-langpacks +---------------------------------- +Publishes signed langpacks to archive.mozilla.org + +release-beetmover-signed-langpacks-checksums +-------------------------------------------- +Publishes signed langpacks to archive.mozilla.org + +release-update-verify +--------------------- +Verifies the contents and package of release update MARs. +release-secondary-update-verify +------------------------------- +Verifies the contents and package of release update MARs. + +release-update-verify-next +-------------------------- +Verifies the contents and package of release and updare MARs from the previous ESR release. + +release-update-verify-config +---------------------------- +Creates configs for release-update-verify tasks + +release-secondary-update-verify-config +-------------------------------------- +Creates configs for release-secondary-update-verify tasks + +release-update-verify-config-next +--------------------------------- +Creates configs for release-update-verify-next tasks + +release-updates-builder +----------------------- +Top level Balrog blob submission & patcher/update verify config updates. + +release-version-bump +-------------------- +Bumps to the next version. + +release-source +-------------- +Generates source for the release + +release-source-signing +---------------------- +Signs source for the release + +release-partner-repack +---------------------- +Generates customized versions of releases for partners. + +release-partner-attribution +--------------------------- +Generates attributed versions of releases for partners. + +release-partner-repack-chunking-dummy +------------------------------------- +Chunks the partner repacks by locale. + +release-partner-repack-signing +------------------------------ +Internal signing of partner repacks. + +release-partner-repack-mac-signing +---------------------------------- + +Mac signing without notarization. + +Uses a self-signed certificate on level 1 environments. + +Shippable downstream tasks should use artifacts from build-mac-notarization. + +release-partner-repack-mac-notarization +--------------------------------------- + +Mac notarization on signingscript (linux) using rcodesign. + +Only available in production environments, as Apple doesn't offer a test +endpoint for notarizing apps. + +Downstream tasks switch to build-mac-signing in non-shippable builds or level 1 +environments. + +release-partner-repack-repackage +-------------------------------- +Repackaging of partner repacks. + +release-partner-repack-repackage-signing +---------------------------------------- +External signing of partner repacks. + +release-partner-repack-beetmover +-------------------------------- +Moves the partner repacks to S3 buckets. + +release-partner-attribution-beetmover +------------------------------------- +Moves the partner attributions to S3 buckets. + +release-partner-repack-bouncer-sub +---------------------------------- +Sets up bouncer products for partners. + +release-early-tagging +--------------------- +Utilises treescript to perform tagging that should happen near the start of a release. + +release-eme-free-repack +----------------------- +Generates customized versions of releases for eme-free repacks. + +release-eme-free-repack-signing +------------------------------- +Internal signing of eme-free repacks + +release-eme-free-repack-repackage +--------------------------------- +Repackaging of eme-free repacks. + +release-eme-free-repack-repackage-signing +----------------------------------------- +External signing of eme-free repacks. + +release-eme-free-repack-beetmover +--------------------------------- +Moves the eme-free repacks to S3 buckets. + +release-eme-free-repack-beetmover-checksums +------------------------------------------- +Moves the beetmover checksum for eme-free repacks to S3 buckets. + +release-eme-free-repack-mac-signing +----------------------------------- + +Mac signing without notarization. + +Uses a self-signed certificate on level 1 environments. + +Shippable downstream tasks should use artifacts from build-mac-notarization. + +release-eme-free-repack-mac-notarization +---------------------------------------- + +Mac notarization on signingscript (linux) using rcodesign. + +Only available in production environments, as Apple doesn't offer a test +endpoint for notarizing apps. + +Downstream tasks switch to build-mac-signing in non-shippable builds or level 1 +environments. + +repackage +--------- +Repackage tasks take a signed output and package them up into something suitable +for shipping to our users. For example, on OSX we return a tarball as the signed output +and this task would package that up as an Apple Disk Image (.dmg) + +repackage-l10n +-------------- +Repackage-L10n is a ```Repackage``` task split up to be suitable for use after l10n repacks. + +repackage-deb +---------------- +These repackage tasks take signed Firefox Linux binaries and puts them in Debian packages. + +repackage-deb-l10n +------------------ +These repackage tasks take the signed langpacks (.xpi) binaries and puts them in Debian packages. + +repackage-signing +----------------- +Repackage-signing take the repackaged installers (windows) and signs them. + +repackage-signing-l10n +---------------------- +Repackage-signing-l10n take the repackaged installers (windows) and signs them for localized versions. + +mar-signing +----------- +Mar-signing takes the complete update MARs and signs them. + +mar-signing-l10n +---------------- +Mar-signing-l10n takes the complete update MARs and signs them for localized versions. + +mar-signing-autograph-stage +--------------------------- +These tasks are only to test autograph-stage, when the autograph team asks for their staging environment to be tested. + +repackage-msi +------------- +Repackage-msi takes the signed full installer and produces an msi installer (that wraps the full installer) +Using the ```./mach repackage``` command + +repackage-signing-msi +--------------------- +Repackage-signing-msi takes the repackaged msi installers and signs them. + +repackage-msix +-------------- +Repackage-msix takes a (possibly unsigned) package and produces a Windows MSIX package containing no langpacks using the +```./mach repackage``` command. + +These tasks are supposed intended for rapid iteration in ```try```. + +repackage-shippable-l10n-msix +----------------------------- +Repackage-msix takes a signed package and a list of signed langpacks and produces a Windows MSIX package using the +```./mach repackage``` command. + +The signed langpacks are produced on Linux, since langpacks are platform agnostic. + +These tasks are for releases; they are complete, and therefore slower, and not intended for rapid iteration in +```try```. + +repackage-signing-msix +---------------------- +Repackage-signing-msix takes Windows MSIX packages produced in ```repackage-msix``` and signs them. + +repackage-signing-shippable-l10n-msix +------------------------------------- +Repackage-signing-shippable-l10n-msix takes Windows MSIX packages produced in +```repackage-signing-shippable-l10n-msix``` and signs them. + +release-msix-push +-------------------- +Pushes msix repackage to the Microsoft Store. + +repo-update +----------- +Repo-Update tasks are tasks that perform some action on the project repo itself, +in order to update its state in some way. + +partials +-------- +Partials takes the complete.mar files produced in previous tasks and generates partial +updates between previous nightly releases and the new one. Requires a release_history +in the parameters. See ``mach release-history`` if doing this manually. + +partials-signing +---------------- +Partials-signing takes the partial updates produced in Partials and signs them. + +post-balrog-dummy +----------------- +Dummy tasks to consolidate balrog dependencies to avoid taskcluster limits on number of dependencies per task. + +post-beetmover-dummy +-------------------- +Dummy tasks to consolidate beetmover dependencies to avoid taskcluster limits on number of dependencies per task. + +post-beetmover-checksums-dummy +------------------------------ +Dummy tasks to consolidate beetmover-checksums dependencies to avoid taskcluster limits on number of dependencies per task. + +post-langpack-dummy +------------------- +Dummy tasks to consolidate language pack beetmover dependencies to avoid taskcluster limits on number of dependencies per task. + +post-update-verify-dummy +------------------------ +Dummy tasks to consolidate update verify dependencies to avoid taskcluster limits on number of dependencies per task. + +fetch +----- +Tasks that obtain something from a remote service and re-expose it as a +task artifact. These tasks are used to effectively cache and re-host +remote content so it is reliably and deterministically available. + +packages +-------- +Tasks used to build packages for use in docker images. + +diffoscope +---------- +Tasks used to compare pairs of Firefox builds using https://diffoscope.org/. +As of writing, this is mainly meant to be used in try builds, by editing +taskcluster/ci/diffoscope/kind.yml for your needs. + +addon +----- +Tasks used to build/package add-ons. + +openh264-plugin +--------------- +Tasks used to build the openh264 plugin. + +openh264-signing +---------------- +Signing for the openh264 plugin. + +webrender +--------- +Tasks used to do testing of WebRender standalone (without gecko). The +WebRender code lives in gfx/wr and has its own testing infrastructure. + +github-sync +------------ +Tasks used to do synchronize parts of Gecko that have downstream GitHub +repositories. + +instrumented-build +------------------ +Tasks that generate builds with PGO instrumentation enabled. This is an +intermediate build that can be used to generate profiling information for a +final PGO build. This is the 1st stage of the full 3-step PGO process. + +generate-profile +---------------- +Tasks that take a build configured for PGO and run the binary against a sample +set to generate profile data. This is the 2nd stage of the full 3-step PGO +process. + +geckodriver-signing +------------------- +Signing for geckodriver binary. + +geckodriver-mac-notarization +---------------------------- +Apple notarization for mac geckodriver binary. + +maybe-release +------------- +A shipitscript task that does the following: + +1. Checks if automated releases are disabled +2. Checks if the changes between the current revision and the previous releases + revision are considered "worthwhile" for a new release. +3. Triggers the release via ship-it, which will then create an action task. + +l10n-bump +--------- +Cron-driven tasks that bump l10n-changesets files in-tree, using data from the l10n dashboard. + +merge-automation +---------------- +Hook-driven tasks that automate "Merge Day" tasks during the release cycle. + +sentry +------ +Interact with Sentry, such as by publishing new project releases. + +system-symbols +-------------- +Generate missing macOS and windows system symbols from crash reports. + +system-symbols-upload +--------------------- +Upload macOS and windows system symbols to tecken. + +system-symbols-reprocess +------------------------ +Call Crash-Stats API to reprocess after symbols upload. + +scriptworker-canary +------------------- +Push tasks to try to test new scriptworker deployments. + +updatebot +------------------ +Check for updates to (supported) third party libraries, and manage their lifecycle. + +fuzzing +------- + +Performs fuzzing smoke tests + +startup-test +------------ + +Runs Firefox for a short period of time to see if it crashes + +l10n-cross-channel +------------------ + +Compiles a set of en-US strings from all shipping release trains and pushes to +the quarantine strings repo. + +fxrecord +-------- + +Visual metrics computation of desktop Firefox startup. The performance team +monitors this task to watch for regressions in Firefox startup performance. + +are-we-esmified-yet +--------------------- +Collects data about the transition to ECMAScript Modules from JSMs. + +attribution +----------- +Injects attribution information into en-US installers. + +attribution-l10n +---------------- +Injects attribution information into localized installers. diff --git a/taskcluster/docs/kinds/test.rst b/taskcluster/docs/kinds/test.rst new file mode 100644 index 0000000000..20d3635c5c --- /dev/null +++ b/taskcluster/docs/kinds/test.rst @@ -0,0 +1,161 @@ +Test Kind +========= + +The ``test`` kind defines both desktop and mobile tests for builds. Each YAML +file referenced in ``kind.yml`` defines the full set of tests for the +associated suite. + +The process of generating tests goes like this, based on a set of YAML files +named in ``kind.yml``: + + * For each build task, determine the related test platforms based on the build + platform. For example, a Windows 2010 build might be tested on Windows 7 + and Windows 10. Each test platform specifies "test sets" indicating which + tests to run. This is configured in the file named + ``test-platforms.yml``. + + * Each test set is expanded to a list of tests to run. This is configured in + the file named by ``test-sets.yml``. A platform may specify several test + sets, in which case the union of those sets is used. + + * Each named test is looked up in the file named by ``tests.yml`` to find a + test description. This test description indicates what the test does, how + it is reported to treeherder, and how to perform the test, all in a + platform-independent fashion. + + * Each test description is converted into one or more tasks. This is + performed by a sequence of transforms defined in the ``transforms`` key in + ``kind.yml``. See :ref:`transforms` for more information. + + * The resulting tasks become a part of the task graph. + +.. important:: + + This process generates *all* test jobs, regardless of tree or try syntax. + It is up to a later stages of the task-graph generation (the target set and + optimization) to select the tests that will actually be performed. + +Variants +-------- + +Sometimes we want to run the same tests under a different Firefox context, +usually this means with a pref set. The concept of ``variants`` was invented to +handle this use case. A variant is a stanza of configuration that can be merged +into each test definition. Variants are defined in the `variants.yml`_ file. +See this file for an up to date list of active variants and the pref(s) they +set. + +Each variant must conform to the +:py:data:`~gecko_taskgraph.transforms.test.variant_description_schema`: + +* **description** (required) - A description explaining what the variant is for. +* **component** (required) - The name of the component that owns the variant. It + should be formatted as ``PRODUCT``::``COMPONENT``. +* **expiration** (required) - The date when the variant will be expired (maximum + 6 months). +* **suffix** (required) - A suffix to apply to the task label and treeherder symbol. +* **when** - A `json-e`_ expression that must evaluate to ``true`` for the variant + to be applied. The ``task`` definition is passed in as context. +* **replace** - A dictionary that will overwrite keys in the task definition. +* **merge** - A dictionary that will be merged into the task definition using + the :py:func:`~gecko_taskgraph.util.templates.merge` function. + +.. note:: + + Exceptions can be requested to have a variant without expiration (using + "never") if this is a shipped mode we support. Teams should contact the CI + team to discuss this before submitting a patch if they think their variant + qualifies. All exceptions will require director approval. + + +Defining Variants +~~~~~~~~~~~~~~~~~ + +Variants can be defined in the test YAML files using the ``variants`` key. E.g: + +.. code-block:: yaml + + example-suite: + variants: + - foo + - bar + +This will split the task into three. The original task, the task with the +config from the variant named 'foo' merged in and the task with the config from +the variant named 'bar' merged in. + + +Composite Variants +~~~~~~~~~~~~~~~~~~ + +Sometimes we want to run tasks with multiple variants enabled at once. This can +be achieved with "composite variants". Composite variants are simply two or +more variant names joined with the ``+`` sign. Using the previous example, if +we wanted to run both the ``foo`` and ``bar`` variants together, we could do: + +.. code-block:: yaml + + example-suite: + variants: + - foo+bar + +This will first merge or replace the config of ``foo`` into the task, followed +by the config of ``bar``. Care should be taken if both variants are replacing +the same keys. The last variant's configuration will be the one that gets used. + + +Expired Variants +~~~~~~~~~~~~~~~~ +Ideally, when a variant is not needed anymore, it should be dropped (even if it +has not expired). If you need to extend the expiration date, you can submit a +patch to modify the expiration date in the `variants.yml`_ file. Variants will +not be scheduled to run after the expiration date. + +If an expired variant is not dropped, the triage owner of the component will be +notified. If the expired variant persists for an extended period, the autonag +bot will escalate to notify the manager and director of the triage owner. Once +at that point, we will submit a patch to remove the variant from Taskcluster and +manifest conditions pending the triage owner / manager to review. + +Please subscribe to alerts from `firefox-ci ` +group in order to be aware of changes to the CI, scheduling, or the policy. + +.. _variants.yml: https://searchfox.org/mozilla-central/source/taskcluster/ci/test/variants.yml +.. _json-e: https://json-e.js.org/ + + +Setting +------- + +A test ``setting`` is the set of conditions under which a test is running. +Aside from the chunk number, a ``setting`` uniquely distinguishes a task from +another that is running the same set of tests. There are three types of inputs +that make up a ``setting``: + +1. Platform - Bits of information that describe the underlying platform the + test is running on. This includes things like the operating system and + version, CPU architecture, etc. + +2. Build - Bits of information that describe the build being tested. This + includes things like the build type and which build attributes (like + ``asan``, ``ccov``, etc) are enabled. + +3. Runtime - Bits of information that describe the configured state of Firefox. + This includes things like prefs and environment variables. Note that tasks + should only set runtime configuration via the variants system (see + `Variants`_). + +Test ``settings`` are available in the ``task.extra.test-setting`` object in +all test tasks. They are defined by the +:py:func:`~gecko_taskgraph.transforms.test.set_test_setting` transform +function. + +The full schema is defined in the +:py:data:`~gecko_taskgraph.transforms.test.test_setting_description_schema`. + +Setting Hash +~~~~~~~~~~~~ + +In addition to the three top-level objects, there is also a ``_hash`` key which +contains a hash of the rest of the setting object. This is a convenient way for +consumers to group or compare tasks that run under the same setting. diff --git a/taskcluster/docs/optimization/index.rst b/taskcluster/docs/optimization/index.rst new file mode 100644 index 0000000000..c6b31163ca --- /dev/null +++ b/taskcluster/docs/optimization/index.rst @@ -0,0 +1,20 @@ +Optimization Strategies +======================= + +This section documents some of the `optimization`_ strategies available in +``mozilla-central``. + + +.. toctree:: + + schedules + +.. _optimization: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/optimization.html + +Other Strategies +---------------- + +There are many other undocumented strategies available here. See the +`taskcluster/gecko_taskgraph/optimize`_ module for more available strategies. + +.. _taskcluster/gecko_taskgraph/optimize: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/optimize diff --git a/taskcluster/docs/optimization/schedules.rst b/taskcluster/docs/optimization/schedules.rst new file mode 100644 index 0000000000..2398e8b45f --- /dev/null +++ b/taskcluster/docs/optimization/schedules.rst @@ -0,0 +1,97 @@ +Schedules Optimization Strategy +=============================== + +Most optimization of builds and tests is handled with ``SCHEDULES``. +The concept is this: we allocate tasks into named components, and associate a set of such components to each file in the source tree. +Given a set of files changed in a push, we then calculate the union of components affected by each file, and remove tasks that are not tagged with any of them. + +This optimization system is intended to be *conservative*. +It represents what could *possibly* be affected, rather than any intuitive notion of what tasks would be useful to run for changes to a particular file. +For example: + +* ``dom/url/URL.cpp`` schedules tasks on all platform and could potentially cause failures in any test suite + +* ``dom/system/mac/CoreLocationLocationProvider.mm`` could not possibly affect any platform but ``macosx``, but potentially any test suite + +* ``python/mozbuild/mozbuild/preprocessor.py`` could possibly affect any platform, and should also schedule Python lint tasks + +Exclusive and Inclusive +----------------------- + +The first wrinkle in this "simple" plan is that there are a lot of files, and for the most part they all affect most components. +But there are some components which are only affected by a well-defined set of files. +For example, a Python lint component need only be scheduled when Python files are changed. + +We divide the components into "exclusive" and "inclusive" components. +Absent any other configuration, any file in the repository is assumed to affect all of the exclusive components and none of the inclusive components. + +Exclusive components can be thought of as a series of families. +For example, the platform (linux, windows, macosx, android) is a component family. +The test suite (mochitest, reftest, xpcshell, etc.) is another. +By default, source files are associated with every component in every family. +This means tasks tagged with an exclusive component will *always* run, unless none of the modified source files are associated with that component. + +But what if we only want to run a particular task when a pre-determined file is modified? +This is where inclusive components are used. +Any task tagged with an inclusive component will *only* be run when a source file associated with that component is modified. +Lint tasks and well separated unittest tasks are good examples of things you might want to schedule inclusively. + +A good way to keep this straight is to think of exclusive platform-family components (``macosx``, ``android``, ``windows``, ``linux``) and inclusive linting components (``py-lint``, ``js-lint``). +An arbitrary file in the repository affects all platform families, but does not necessarily require a lint run. +But we can configure mac-only files such as ``CoreLocationLocationProvider.mm`` to affect exclusively ``macosx``, and Python files like ``preprocessor.py`` to affect ``py-lint`` in addition to the exclusive components. + +It is also possible to define a file as affecting an inclusive component and nothing else. +For example, the source code and configuration for the Python linting tasks does not affect any tasks other than linting. + +.. note:: + + Most unit test suite tasks are allocated to components for their platform family and for the test suite. + This indicates that if a platform family is affected (for example, ``android``) then the builds for that platform should execute as well as the full test suite. + If only a single suite is affected (for example, by a change to a reftest source file), then the reftests should execute for all platforms. + + However, some test suites, for which the set of contributing files are well-defined, are represented as inclusive components. + These components will not be executed by default for any platform families, but only when one or more of the contributing files are changed. + +Specification +------------- + +Components are defined as either inclusive or exclusive in :py:mod:`mozbuild.schedules`. + +File Annotation +::::::::::::::: + +Files are annotated with their affected components in ``moz.build`` files with stanzas like :: + + with Files('**/*.py'): + SCHEDULES.inclusive += ['py-lint'] + +for inclusive components and :: + + with Files('*gradle*'): + SCHEDULES.exclusive = ['android'] + +for exclusive components. +Note the use of ``+=`` for inclusive compoenents (as this is adding to the existing set of affected components) but ``=`` for exclusive components (as this is resetting the affected set to something smaller). +For cases where an inclusive component is affected exclusively (such as the python-lint configuration in the example above), that component can be assigned to ``SCHEDULES.exclusive``:: + + with Files('**/pep8rc'): + SCHEDULES.exclusive = ['py-lint'] + +If multiple stanzas set ``SCHEDULES.exclusive``, the last one will take precedence. Thus the following +will set ``SCHEDULES.exclusive`` to ``hpux`` for all files except those under ``docs/``. :: + + with Files('**'): + SCHEDULES.exclusive = ['hpux'] + + with Files('**/docs'): + SCHEDULES.exclusive = ['docs'] + +Task Annotation +::::::::::::::: + +Tasks are annotated with the components they belong to using the ``"skip-unless-schedules"`` optimization, which takes a list of components for this task:: + + task['optimization'] = {'skip-unless-schedules': ['windows', 'gtest']} + +For tests, this value is set automatically by the test transform based on the suite name and the platform family, doing the correct thing for inclusive test suites. +Tests can also use a variety of other optimizers, such as ``relevant_tests``, ``bugbug`` (uses machine learning) or ``backstop`` (ensures regressions aren't missed). diff --git a/taskcluster/docs/parameters.rst b/taskcluster/docs/parameters.rst new file mode 100644 index 0000000000..562ed2c54f --- /dev/null +++ b/taskcluster/docs/parameters.rst @@ -0,0 +1,262 @@ +========== +Parameters +========== + +Task-graph generation takes a collection of parameters as input, in the form of +a JSON or YAML file. + +During decision-task processing, some of these parameters are supplied on the +command line or by environment variables. The decision task helpfully produces +a full parameters file as one of its output artifacts. The other ``mach +taskgraph`` commands can take this file as input. This can be very helpful +when working on a change to the task graph. + +When experimenting with local runs of the task-graph generation, it is always +best to find a recent decision task's ``parameters.yml`` file, and modify that +file if necessary, rather than starting from scratch. This ensures you have a +complete set of parameters. + +The properties of the parameters object are described here, divided roughly by +topic. + +Push Information +---------------- + +``backstop`` + Whether or not this push is a "backstop" push. That is a push where all + builds and tests should run to ensure regressions aren't accidentally + missed. + +``base_repository`` + The repository from which to do an initial clone, utilizing any available + caching. + +``head_repository`` + The repository containing the changeset to be built. This may differ from + ``base_repository`` in cases where ``base_repository`` is likely to be cached + and only a few additional commits are needed from ``head_repository``. + +``base_rev`` + The previous revision before ``head_rev`` got merged into. This can be a short revision string. + +``head_rev`` + The revision to check out; this can be a short revision string + +``base_ref`` + Reference where ``head_rev`` got merged into. It is usually a branch or a tag. + +``head_ref`` + For Mercurial repositories, this is the same as ``head_rev``. For + git repositories, which do not allow pulling explicit revisions, this gives + the symbolic ref containing ``head_rev`` that should be pulled from + ``head_repository``. + +``head_tag`` + The tag attached to the revision, if any. + +``owner`` + Email address indicating the person who made the push. Note that this + value may be forged and *must not* be relied on for authentication. + +``message`` + The try syntax in the commit message, if any. + +``pushlog_id`` + The ID from the ``hg.mozilla.org`` pushlog + +``pushdate`` + The timestamp of the push to the repository that triggered this decision + task. Expressed as an integer seconds since the UNIX epoch. + +``hg_branch`` + The mercurial branch where the revision lives in. + +``build_date`` + The timestamp of the build date. Defaults to ``pushdate`` and falls back to present time of + taskgraph invocation. Expressed as an integer seconds since the UNIX epoch. + +``moz_build_date`` + A formatted timestamp of ``build_date``. Expressed as a string with the following + format: %Y%m%d%H%M%S + +``repository_type`` + The type of repository, either ``hg`` or ``git``. + +``tasks_for`` + The ``tasks_for`` value used to generate the decision task. + +Tree Information +---------------- + +``project`` + Another name for what may otherwise be called tree or branch or + repository. This is the unqualified name, such as ``mozilla-central`` or + ``cedar``. + +``level`` + The `SCM level + `_ + associated with this tree. This dictates the names of resources used in the + generated tasks, and those tasks will fail if it is incorrect. + +Try Configuration +----------------- + +``try_mode`` + The mode in which a try push is operating. This can be one of: + + * ``"try_task_config"`` - Used to configure the taskgraph. + * ``"try_option_syntax"`` - Used when pushing to try with legacy try syntax. + * ``"try_auto"`` - Used to make try pushes behave more like a push on ``autoland``. + * ``"try_select"`` - Used by ``mach try`` to build a list of tasks locally. + * ``None`` - Not a try push or ``mach try release``. + +``try_options`` + The arguments given as try syntax (as a dictionary), or ``None`` if + ``try_mode`` is not ``try_option_syntax``. + +``try_task_config`` + The contents of the ``try_task_config.json`` file, or ``{}`` if + ``try_mode`` is not ``try_task_config``. + +Test Configuration +------------------ + +``test_manifest_loader`` + The test manifest loader to use as defined in ``taskgraph.util.chunking.manifest_loaders``. + +Target Set +---------- + +The "target set" is the set of task labels which must be included in a task +graph. The task graph generation process will include any tasks required by +those in the target set, recursively. In a decision task, this set can be +specified programmatically using one of a variety of methods (e.g., parsing try +syntax or reading a project-specific configuration file). + +``enable_always_target`` + When ``True``, any task with the ``always_target`` attribute will be + included in the ``target_task_graph`` regardless of whether they were + filtered out by the ``target_tasks_method`` or not. Because they are not + part of the ``target_set``, they will still be eligible for optimization + when the ``optimize_target_tasks`` parameter is ``False``. + +``filters`` + List of filter functions (from ``taskcluster/gecko_taskgraph/filter_tasks.py``) to + apply. This is usually defined internally, as filters are typically + global. + +``target_tasks_method`` + The method to use to determine the target task set. This is the suffix of + one of the functions in ``taskcluster/gecko_taskgraph/target_tasks.py``. + +``release_history`` + History of recent releases by platform and locale, used when generating + partial updates for nightly releases. + Suitable contents can be generated with ``mach release-history``, + which will print to the console by default. + +Optimization +------------ + +``optimize_strategies`` + A python path of the form ``:`` containing a dictionary of + optimization strategies to use, overwriting the defaults. + +``optimize_target_tasks`` + If true, then target tasks are eligible for optimization. + +``do_not_optimize`` + Specify tasks to not optimize out of the graph. This is a list of labels. + Any tasks in the graph matching one of the labels will not be optimized out + of the graph. + +``existing_tasks`` + Specify tasks to optimize out of the graph. This is a dictionary of label to taskId. + Any tasks in the graph matching one of the labels will use the previously-run + taskId rather than submitting a new task. + +Release Promotion +----------------- + +``build_number`` + Specify the release promotion build number. + +``version`` + Specify the version for release tasks. + +``app_version`` + Specify the application version for release tasks. For releases, this is often a less specific version number than ``version``. + +``next_version`` + Specify the next version for version bump tasks. + +``release_type`` + The type of release being promoted. One of "nightly", "beta", "esr102", "esr115", "release-rc", or "release". + +``release_eta`` + The time and date when a release is scheduled to live. This value is passed to Balrog. + +``release_enable_partner_repack`` + Boolean which controls repacking vanilla Firefox builds for partners. + +``release_enable_partner_attribution`` + Boolean which controls adding attribution to vanilla Firefox builds for partners. + +``release_enable_emefree`` + Boolean which controls repacking vanilla Firefox builds into EME-free builds. + +``release_partners`` + List of partners to repack or attribute if a subset of the whole config. A null value defaults to all. + +``release_partner_config`` + Configuration for partner repacks & attribution, as well as EME-free repacks. + +``release_partner_build_number`` + The build number for partner repacks. We sometimes have multiple partner build numbers per release build number; this parameter lets us bump them independently. Defaults to 1. + +``release_product`` + The product that is being released. + +``required_signoffs`` + A list of signoffs that are required for this release promotion flavor. If specified, and if the corresponding `signoff_urls` url isn't specified, tasks that require these signoffs will not be scheduled. + +``signoff_urls`` + A dictionary of signoff keys to url values. These are the urls marking the corresponding ``required_signoffs`` as signed off. + + +Repository Merge Day +-------------------- + +``merge_config`` + Merge config describes the repository merge behaviour, using an alias to cover which set of file replacements and version increments are required, along with overrides for the source and target repository URIs. + +``source_repo`` + The clone/push URI of the source repository, such as https://hg.mozilla.org/mozilla-central + +``target_repo`` + The clone/push URI of the target repository, such as https://hg.mozilla.org/releases/mozilla-beta + +``source_branch`` + The firefoxtree alias of the source branch, such as 'central', 'beta' + +``target_branch`` + The firefoxtree alias of the target branch, such as 'beta', 'release' + +``force-dry-run`` + Don't push any results to target repositories. + + +Code Review +----------- + +``phabricator_diff`` + The code review process needs to know the Phabricator Differential diff that + started the analysis. This parameter must start with `PHID-DIFF-` + +Local configuration +------------------- + +``target-kind`` + Generate only the given kind and its kind-dependencies. This is used for local inspection of the graph + and is not supported at run-time. diff --git a/taskcluster/docs/partials.rst b/taskcluster/docs/partials.rst new file mode 100644 index 0000000000..e4cb369354 --- /dev/null +++ b/taskcluster/docs/partials.rst @@ -0,0 +1,123 @@ +Partial Update Generation +========================= + +Overview +-------- + +Windows, Mac and Linux releases have partial updates, to reduce +the file size end-users have to download in order to receive new +versions. These are created using a docker image, some Python, +``mbsdiff``, and the tools in ``tools/update-packaging`` + +The task has been called 'Funsize' for quite some time. This might +make sense depending on what brands of chocolate bar are available +near you. + +How the Task Works +------------------ + +Funsize uses a docker image that's built in-tree, named funsize-update-generator. +The image contains some Python to examine the task definition and determine +what needs to be done, but it downloads tools like ``mar`` and ``mbsdiff`` +from either locations specified in the task definition, or default mozilla-central +locations. + +The 'extra' section of the task definition contains most of the payload, under +the 'funsize' key. In here is a list of partials that this specific task will +generate, and each entry includes the earlier (or 'from') version, and the most +recent (or 'to') version, which for most releases will likely be a taskcluster +artifact. + +.. code-block:: json + + { + "to_mar": "https://tc.net/api/queue/v1/task/EWtBFqVuT-WqG3tGLxWhmA/artifacts/public/build/ach/target.complete.mar", + "product": "Firefox", + "dest_mar": "target-60.0b8.partial.mar", + "locale": "ach", + "from_mar": "http://archive.mozilla.org/pub/firefox/candidates/60.0b8-candidates/build1/update/linux-i686/ach/firefox-60.0b8.complete.mar", + "update_number": 2, + "platform": "linux32", + "previousVersion": "60.0b8", + "previousBuildNumber": "1", + "branch": "mozilla-beta" + } + +The 'update number' indicates how many released versions there are between 'to' and the current 'from'. +For example, if we are building a partial update for the current nightly from the previous one, the update +number will be 1. For the release before that, it will be 2. This lets us use generic output artifact +names that we can rename in the later ``beetmover`` tasks. + +Inside the task, for each partial it has been told to generate, it will download, unpack and virus +scan the 'from_mar' and 'to_mar', download the tools, and run ``make_incremental_update.sh`` from +``tools/update-packaging``. + +If a scope is given for a set of temporary S3 credentials, the task will use a caching script, +to allow re-use of the diffs made for larger files. Some of the larger files are not localised, +and this allows us to save a lot of compute time. + +For Releases +------------ + +Partials are made as part of the ``promote`` task group. The previous +versions used to create the update are specified in ship-it by +Release Management. + +Nightly Partials +---------------- + +Since nightly releases don't appear in ship-it, the partials to create +are determined in the decision task. This was controversial, and so here +are the assumptions and reasons, so that when an alternative solution is +discovered, we can assess it in context: + +1. Balrog is the source of truth for previous nightly releases. +2. Re-running a task should produce the same results. +3. A task's input and output should be specified in the definition. +4. A task transform should avoid external dependencies. This is to + increase the number of scenarios in which 'mach taskgraph' works. +5. A task graph doesn't explicitly know that it's intended for nightlies, + only that specific tasks are only present for nightly. +6. The decision task is explicitly told that its target is nightly + using the target-tasks-method argument. + +a. From 2 and 3, this means that the partials task itself cannot query + balrog for the history, as it may get different results when re-run, + and hides the inputs and outputs from the task definition. +b. From 4, anything run by 'mach taskgraph' is an inappropriate place + to query Balrog, even if it results in a repeatable task graph. +c. Since these restrictions don't apply to the decision task, and given + 6, we can query Balrog in the decision task if the target-tasks-method + given contains 'nightly', such as 'nightly_desktop' or 'nightly_linux' + +Using the decision task involves making fewer, larger queries to Balrog, +and storing the results for task graph regeneration and later audit. At +the moment this data is stored in the ``parameters`` under the label +``release_history``, since the parameters are an existing method for +passing data to the task transforms, but a case could be made +for adding a separate store, as it's a significantly larger number of +records than anything else in the parameters. + +Nightly Partials and Beetmover +------------------------------ + +A release for a specific platform and locale may not have a history of +prior releases that can be used to build partial updates. This could be +for a variety of reasons, such as a new locale, or a hiatus in nightly +releases creating too long a gap in the history. + +This means that the ``partials`` and ``partials-signing`` tasks may have +nothing to do for a platform and locale. If this is true, then the tasks +are filtered out in the ``transform``. + +This does mean that the downstream task, ``beetmover-repackage`` can not +rely on the ``partials-signing`` task existing. It depends on both the +``partials-signing`` and ``repackage-signing`` task, and chooses which +to depend on in the transform. + +If there is a history in the ``parameters`` ``release_history`` section +then ``beetmover-repackage`` will depend on ``partials-signing``. +Otherwise, it will depend on ``repackage-signing``. + +This is not ideal, as it results in unclear logic in the task graph +generation. It will be improved. diff --git a/taskcluster/docs/partner-attribution.rst b/taskcluster/docs/partner-attribution.rst new file mode 100644 index 0000000000..058000fe4e --- /dev/null +++ b/taskcluster/docs/partner-attribution.rst @@ -0,0 +1,121 @@ +Partner attribution +=================== +.. _partner attribution: + +In contrast to :ref:`partner repacks`, attributed builds only differ from the normal Firefox +builds by the adding a string in the dummy windows signing certificate. We support doing this for +full installers but not stub. The parameters of the string are carried into the telemetry system, +tagging an install into a cohort of users. This a lighter weight process because we don't +repackage or re-sign the builds. + +Parameters & Scheduling +----------------------- + +Partner attribution uses a number of parameters to control how they work: + +* ``release_enable_partner_attribution`` +* ``release_partner_config`` +* ``release_partner_build_number`` +* ``release_partners`` + +The enable parameter is a boolean, a simple on/off switch. We set it in shipit's +`is_partner_enabled() `_ when starting a +release. It's true for Firefox betas >= b8 and releases, but otherwise false, the same as +partner repacks. + +``release_partner_config`` is a dictionary of configuration data which drives the task generation +logic. It's usually looked up during the release promotion action task, using the Github +GraphQL API in the `get_partner_config_by_url() +`_ function, with the +url defined in `taskcluster/ci/config.yml `_. + +``release_partner_build_number`` is an integer used to create unique upload paths in the firefox +candidates directory, while ``release_partners`` is a list of partners that should be +attributed (i.e. a subset of the whole config). Both are intended for use when respinning a partner after +the regular Firefox has shipped. More information on that can be found in the +`RelEng Docs `_. + +``release_partners`` is shared with partner repacks but we don't support doing both at the same time. + + +Configuration +------------- + +This is done using an ``attribution_config.yml`` file which next lives to the ``default.xml`` used +for partner repacks. There are no repos for each partner, the whole configuration exists in the one +file because the amount of information to be tracked is much smaller. + +An example config looks like this: + +.. code-block:: yaml + + defaults: + medium: distribution + source: mozilla + configs: + - campaign: sample + content: sample-001 + locales: + - en-US + - de + - ru + platforms: + - win64-shippable + - win32-shippable + upload_to_candidates: true + +The four main parameters are ``medium, source, campaign, content``, of which the first two are +common to all attributions. The combination of ``campaign`` and ``content`` should be unique +to avoid confusion in telemetry data. They correspond to the repo name and sub-directory in partner repacks, +so avoid any overlap between values in partner repacks and atrribution. +The optional parameters of ``variation``, and ``experiment`` may also be specified. + +Non-empty lists of locales and platforms are required parameters (NB the `-shippable` suffix should be used on +the platforms). + +``upload_to_candidates`` is an optional setting which controls whether the Firefox installers +are uploaded into the `candidates directory `_. +If not set the files are uploaded to the private S3 bucket for partner builds. + + +Repacking process +----------------- + +Attribution only has two kinds: + +* attribution - add attribution code to the regular builds +* beetmover - move the files to a partner-specific destination + +Attribution +^^^^^^^^^^^ + +* kinds: ``release-partner-attribution`` +* platforms: Any Windows, runs on linux +* upstreams: ``repackage-signing`` ``repackage-signing-l10n`` + +There is one task, calling out to `python/mozrelease/mozrelease/attribute_builds.py +`_. + +It takes as input the repackage-signing and repackage-signing-l10n artifacts, which are all +target.exe full installers. The ``ATTRIBUTION_CONFIG`` environment variable controls the script. +It produces more target.exe installers. + +The size of ``ATTRIBUTION_CONFIG`` variable may grow large if the number of configurations +increases, and it may be necesssary to pass the content of ``attribution_config.yml`` to the +script instead, or via an artifact of the promotion task. + +Beetmover +^^^^^^^^^ + +* kinds: ``release-partner-attribution-beetmover`` +* platforms: N/A, scriptworker +* upstreams: ``release-partner-attribution`` + +Moves and renames the artifacts to their public location in the `candidates directory +`_, or a private S3 bucket. There is one task +for public artifacts and another for private. + +Each task will have the ``project:releng:beetmover:action:push-to-partner`` scope, with public uploads having +``project:releng:beetmover:bucket:release`` and private uploads using +``project:releng:beetmover:bucket:partner``. There's a partner-specific code path in +`beetmoverscript `_. diff --git a/taskcluster/docs/partner-repacks.rst b/taskcluster/docs/partner-repacks.rst new file mode 100644 index 0000000000..f2342dbbc3 --- /dev/null +++ b/taskcluster/docs/partner-repacks.rst @@ -0,0 +1,255 @@ +Partner repacks +=============== +.. _partner repacks: + +We create slightly-modified Firefox releases for some extra audiences + +* EME-free builds, which disable DRM plugins by default +* Funnelcake builds, which are used for Mozilla experiments +* partner builds, which customize Firefox for external partners + +We use the phrase "partner repacks" to refer to all these builds because they +use the same process of repacking regular Firefox releases with additional files. +The specific differences depend on the type of build. + +We produce partner repacks for some beta builds, and for release builds, as part of the release +automation. We don't produce any files to update these builds as they are handled automatically +(see updates_). + +We also produce :ref:`partner attribution` builds, which are Firefox Windows installers with a cohort identifier +added. + +Parameters & Scheduling +----------------------- + +Partner repacks have a number of parameters which control how they work: + +* ``release_enable_emefree`` +* ``release_enable_partner_repack`` +* ``release_partner_config`` +* ``release_partner_build_number`` +* ``release_partners`` + +We split the repacks into two 'paths', EME-free and everything else, to retain some +flexibility over enabling/disabling them separately. This costs us some duplication of the kinds +in the repacking stack. The two enable parameters are booleans to turn these two paths +on/off. We set them in shipit's `is_partner_enabled() `_ when starting a +release. They're both true for Firefox betas >= b8 and releases, but otherwise disabled. + +``release_partner_config`` is a dictionary of configuration data which drives the task generation +logic. It's usually looked up during the release promotion action task, using the Github +GraphQL API in the `get_partner_config_by_url() +`_ function, with the +url defined in `taskcluster/ci/config.yml `_. + +``release_partner_build_number`` is an integer used to create unique upload paths in the firefox +candidates directory, while ``release_partners`` is a list of partners that should be +repacked (i.e. a subset of the whole config). Both are intended for use when respinning a few partners after +the regular Firefox has shipped. More information on that can be found in the +`RelEng Docs `_. + +Most of the machine time for generating partner repacks takes place in the `promote` phase of the +automation, or `promote_rc` in the case of X.0 release candidates. The EME-free builds are copied into the +Firefox releases directory in the `push` phase, along with the regular bits. + + +Configuration +------------- + +We need some configuration to know *what* to repack, and *how* to do that. The *what* is defined by +default.xml manifests, as used with the `repo `_ tool +for git. The `default.xml for EME-free `_ illustrates this:: + + + + + + + + + + + +The repack-scripts and build-tools repos are found in all manifests, and then there is a list of +partner repositories which contain the *how* configuration. Some of these repos are not publicly +visible. + +A partner repository may contain multiple configurations inside the ``desktop`` directory. Each +subdirectory must contain a ``repack.cfg`` and a ``distribution`` directory, the latter +containing the customizations needed. Here's `EME-free's repack.cfg `_:: + + aus="mozilla-EMEfree" + dist_id="mozilla-EMEfree" + dist_version="1.0" + linux-i686=false + linux-x86_64=false + locales="ach af an ar" # truncated for display here + mac=true + win32=true + win64=true + output_dir="%(platform)s-EME-free/%(locale)s" + + # Upload params + upload_to_candidates=true + +Note the list of locales and boolean toggles for enabling platforms. The ``output_dir`` and +``upload_to_candidates`` parameters are only present for repacks which are uploaded into the +`candidates directory `_. + +All customizations will be placed in the ``distribution`` directory at the root of the Firefox +install directory, or in the case of OS X in ``Firefox.app/Contents/Resources/distribution/``. A +``distribution.ini`` file is the minimal requirement, here's an example from `EME-free +`_:: + + # Partner Distribution Configuration File + # Author: Mozilla + # Date: 2015-03-27 + + [Global] + id=mozilla-EMEfree + version=1.0 + about=Mozilla Firefox EME-free + + [Preferences] + media.eme.enabled=false + app.partner.mozilla-EMEfree="mozilla-EMEfree" + +Extensions and other customizations might also be included in repacks. + + +Repacking process +----------------- + +The stack of tasks to create partner repacks is broadly similar to localised nightlies and +regular releases. The basic form is + +* partner repack - insert the customisations into the the regular builds +* signing - sign the internals which will become the installer (Mac only) +* repackage - create the "installer" (Mac and Windows) +* chunking dummy - a linux only bridge to ... +* repackage signing - sign the "installers" (mainly Windows) +* beetmover - move the files to a partner-specific destination +* beetmover checksums - possibly beetmove the checksums from previous step + +Some key divergences are: + +* all intermediate artifacts are uploaded with a ``releng/partner`` prefix +* we don't insert any binaries on Windows so no need for internal signing +* there's no need to create any complete mar files at the repackage step +* we support both public and private destinations in beetmover +* we only need beetmover checksums for EME-free builds + + +Partner repack +^^^^^^^^^^^^^^ + +* kinds: ``release-partner-repack`` ``release-eme-free-repack`` +* platforms: Typically all (but depends on what's enabled by partner configuration) +* upstreams: ``build-signing`` ``l10n-signing`` + +There is one task per platform in this step, calling out to `scripts/desktop_partner_repacks.py +`_ in mozharness to prepare an environment and then perform the repacks. +The actual repacking is done by `python/mozrelease/mozrelease/partner_repack.py +`_. + +It takes as input the build-signing and l10n-signing artifacts, which are all zip/tar.gz/tar.bz2 +archives, simplifying the repack process by avoiding dmg and exe. Windows produces ``target.zip`` +& ``setup.exe``, Mac is ``target.tar.gz``, Linux is the final product ``target.tar.bz2`` +(beetmover handles pretty naming as usual). + +Signing +^^^^^^^ + +* kinds: ``release-partner-repack-mac-signing`` ``release-partner-repack-mac-notarization`` +* platforms: Mac +* upstreams: ``release-partner-repack`` ``release-eme-free-repack`` + +We chunk the single partner repack task out to a signing task with 5 artifacts each. For +example, EME-free will become 19 tasks. We collect the target.tar.gz from the +upstream, and return a signed target.tar.gz. We use a ``target.dmg`` artifact for +nightlies/regular releases, but this is converted to ``target.tar.gz`` by the signing +scriptworker before sending it to the signing server, so partners are equivalent. The ``mac-signing`` task +signs the binary, and then ``mac-notarization`` submits it to Apple and staples the ticket to it. + +Repackage +^^^^^^^^^ + +* kinds: ``release-partner-repack-repackage`` ``release-eme-free-repack-repackage`` +* platforms: Mac & Windows +* upstreams: + + * Mac: ``release-partner-signing`` ``release-eme-free-signing`` + * Windows: ``release-partner-repack`` ``release-eme-free-repack`` + +Mac has a repackage job for each of the signing tasks. Windows repackages are chunked here to +the same granularity as mac. Takes ``target.zip`` & ``setup.exe`` to produce ``target.exe`` on +Windows, and ``target.tar.gz`` to produce ``target.dmg`` on Mac. There's no need to produce any +complete.mar files here like regular release bits do because we can reuse those. + +Chunking dummy +^^^^^^^^^^^^^^ + +* kinds: ``release-partner-repack-chunking-dummy`` +* platforms: Linux +* upstreams: ``release-partner-repack`` + +We're need Linux chunked at the next step so this dummy takes care of that for the relatively simple path +Linux follows. One task per sub config+locale combination, the same as Windows and Mac. This doesn't need to +exist for EME-free because we don't need to create Linux builds there. + +Repackage Signing +^^^^^^^^^^^^^^^^^ + +* kinds: ``release-partner-repack-repackage-signing`` ``release-eme-free-repack-repackage-signing`` +* platforms: All +* upstreams: + + * Mac & Windows: ``release-partner-repackage`` ``release-eme-free-repackage`` + * Linux: ``release-partner-repack-chunking-dummy`` + +This step GPG signs all platforms, and authenticode signs the Windows installer. + +Beetmover +^^^^^^^^^ + +* kinds: ``release-partner-repack-beetmover`` ``release-eme-free-repack-beetmover`` +* platforms: All +* upstreams: ``release-partner-repack-repackage-signing`` ``release-eme-free-repack-repackage-signing`` + +Moves and renames the artifacts to their public location in the `candidates directory +`_, or a private S3 bucket. Each task will +have the ``project:releng:beetmover:action:push-to-partner`` scope, with public uploads having +``project:releng:beetmover:bucket:release`` and private uploads using +``project:releng:beetmover:bucket:partner``. The ``upload_to_candidates`` key in the partner config +controls the second scope. There's a separate partner code path in `beetmoverscript `_. + +Beetmover checksums +^^^^^^^^^^^^^^^^^^^ + +* kinds: ``release-eme-free-repack-beetmover-checksums`` +* platforms: Mac & Windows +* upstreams: ``release-eme-free-repack-repackage-beetmover`` + +The EME-free builds should be present in our SHA256SUMS file and friends (`e.g. `_) so we beetmove the target.checksums from +the beetmover tasks into the candidates directory. They get picked up by the +``release-generate-checksums`` kind. + +.. _updates: + +Updates +------- + +It's very rare to need to update a partner repack differently from the original +release build but we retain that capability. A partner build with distribution name ``foo``, +based on a release Firefox build, will query for an update on the ``release-cck-foo`` channel. If +the update server `Balrog `_ finds no rule for +that channel it will fallback to the ``release`` channel. The update files for the regular releases do not +modify the ``distribution/`` directory, so the customizations are not modified. + +`Bug 1430254 `_ is an example of an exception to this +logic. diff --git a/taskcluster/docs/platforms.rst b/taskcluster/docs/platforms.rst new file mode 100644 index 0000000000..e73f1cb82e --- /dev/null +++ b/taskcluster/docs/platforms.rst @@ -0,0 +1,190 @@ +Platforms in the CI +=================== + + +.. https://raw.githubusercontent.com/mozilla/treeherder/HEAD/ui/helpers/constants.js + awk -e /thPlatformMap = {/,/};/ constants.js |grep ""|cut -d: -f2|sed -e s/^/ /|sed -e "s/$/ ,, /g" + TODO: + * Leverage verify_docs - https://bugzilla.mozilla.org/show_bug.cgi?id=1636400 + * Add a new column (when executed ? ie always, rarely, etc) + * asan reporter isn't listed for mac os x + +Build Platforms +--------------- + +.. csv-table:: + :header: "Platform", "Owner", "Why?" + :widths: 40, 20, 40 + + Linux, , + Linux DevEdition, , + Linux shippable, , + Linux x64, , + Linux x64 addon, , + Linux x64 DevEdition, , + Linux x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender + Linux x64 WebRender, Jeff Muizelaar, Build with WebRender + Linux x64 shippable, , "| What we ship to our users. + | Builds with PGO" + Linux x64 NoOpt, , "| Developer build - Disable optimizations, enable debug options + | Only runs on m-c" + Linux AArch64, , + OS X 10.14, , + OS X Cross Compiled, , + OS X 10.14 shippable, , + OS X Cross Compiled shippable, , What we ship to our users + OS X Cross Compiled NoOpt, , "| Developer build - Disable optimizations, enable debug options + | Only runs on m-c" + OS X Cross Compiled addon, , + OS X Cross Compiled DevEdition, , + OS X 10.14, , + OS X 10.14 WebRender, Jeff Muizelaar, Build with WebRender + OS X 10.14 Shippable, , + OS X 10.14 WebRender Shippable, Jeff Muizelaar, Build with WebRender + OS X 10.14 DevEdition, , + Windows 2012, , + Windows 2012 shippable, , What we ship to our users + Windows 2012 addon, , + Windows 2012 NoOpt, , "| Developer build - Disable optimizations, enable debug options + | Only runs on m-c" + Windows 2012 DevEdition, , + Windows 2012 x64, , + Windows 2012 x64 shippable, , + Windows 2012 AArch64, , + Windows 2012 AArch64 Shippable, , + Windows 2012 AArch64 DevEdition, , + Windows 2012 x64 addon, , + Windows 2012 x64 NoOpt, , "| Developer build - Disable optimizations, enable debug options + | Only runs on m-c" + Windows 2012 x64 DevEdition, , + Windows MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them + | Only runs on autoland, m-c and m-esr" + Android 4.1 API16+, , "| All Android jobs are for GeckoView. Fenix nightly uses m-c, Fenix beta => m-b, Fenix release => m-r and Focus uses m-r. + | We run these tests in the CI to make sure that GeckoView tests do not regress." + Android 4.1 API16+ Beta, Agi Sferro, To ship/test Android 4.1 on arm v7 CPU + Android 4.1 API16+ Release, , To ship/test Android 4.1 on arm v7 CPU + Android 4.1 API16+ GeckoView multi-arch fat AAR, , + Android 5.0 AArch64, , + Android 5.0 AArch64 Beta, , + Android 5.0 AArch64 Release, , + Android 5.0 x86-64, , + Android 5.0 x86-64 Beta, , + Android 5.0 x86-64 Release, , + Android 7.0 x86, , + Android 7.0 x86 Beta, , + Android 7.0 x86 Release, , + Android 7.0 x86-64, , + Android 7.0 x86-64 WebRender, Kris Taeleman, Build and test GeckoView with WebRender + Android 7.0 x86-64 Beta, , + Android 7.0 x86-64 Release, , + Android 7.0 MotoG5, , + Android 8.0 Pixel2, , + Android 8.0 Pixel2 WebRender, Kris Taeleman, Build and test GeckoView with WebRender + Android 8.0 Pixel2 AArch64, , + Android 8.0 Pixel2 AArch64 WebRender, Kris Taeleman, Build and test GeckoView with WebRender + Android, , + +Testing configurations +---------------------- + +We have some platforms used to run the tests to make sure they run correctly on different versions of the operating systems. + +.. csv-table:: + :header: "Platform", "Owner", "Why?" + :widths: 40, 20, 40 + + Linux 18.04 shippable, , + Linux 18.04 x64, , + Linux 18.04 x64 DevEdition, , + Linux 18.04 x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender for testing + Linux 18.04 x64 WebRender, Jeff Muizelaar, Build with WebRender for testing + Linux 18.04 x64 shippable, , + Linux 18.04 x64 Stylo-Seq, , + Windows 7, , + Windows 7 DevEdition, , + Windows 7 Shippable, , + Windows 7 MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them + | Only runs on autoland, m-c and m-esr" + Windows 10 x64, , + Windows 10 x64 DevEdition, , + Windows 10 x64 Shippable, , + Windows 10 x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender for testing + Windows 10 x64 WebRender, Jeff Muizelaar, Build with WebRender for testing + Windows 10 x64 2017 Ref HW, , + Windows 10 x64 MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them + | Only runs on autoland, m-c and m-esr" + Windows 10 AArch64, , + + +Quality platforms +----------------- + +We have many platforms used to run various quality tools. They aren't directly focussing on user quality but on code quality, +or prevening some classes of errors (memory, threading, etc). + +.. csv-table:: + :header: "Platform", "Owner", "Why?" + :widths: 40, 20, 40 + + Linux 18.04 x64 tsan, Christian Holler, Identify threading issues with :ref:`ThreadSanitizer ` + Linux x64 asan, "| Christian Holler + | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`. + | Also includes the UndefinedBehaviorSanitizer" + Linux x64 WebRender asan, "| Christian Holler + | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`. + | Also includes the UndefinedBehaviorSanitizer" + Linux x64 asan reporter, Christian Holler, Generate :ref:`ASan Nightly Project ` builds + Linux x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + Linux 18.04 x64 asan, "| Christian Holler + | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`. + | Also includes the UndefinedBehaviorSanitizer" + Linux 18.04 x64 WebRender asan, "| Christian Holler + | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`. + | Also includes the UndefinedBehaviorSanitizer" + Linux 18.04 x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + OS X Cross Compiled CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + OS X 10.14 Cross Compiled CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + Windows 2012 x64 asan reporter, Christian Holler, Generate :ref:`ASan Nightly Project ` builds + Windows 10 x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + Android 4.0 API16+ CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + Android 4.3 API16+ CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not) + Diffoscope, Mike Hommey, Make sure the build remains reproducible + Linting, "| Sylvestre Ledru + | Andrew Halberstadt", "| Identify :ref:`code quality` earlier + | Also contains some Bugzilla + | Run on all branches (except the Bugzilla task)" + Documentation, "| Sylvestre Ledru + | Andrew Halberstadt", "| :ref:`Documentation jobs ` + | integration repository plus mozilla-central" + + + +Infrastructure tasks +-------------------- + +The decision tasks responsible for creating the task graph. + +.. csv-table:: + :header: "Task", "Owner", "Why?" + :widths: 40, 20, 40 + + Gecko Decision Task, , Define the tasks to run and their order + Firefox Release Tasks, , + Devedition Release Tasks, , + Fennec Beta Tasks, , + Fennec Release Tasks, , + Thunderbird Release Tasks, , + + +Others +------ + +.. csv-table:: + :header: "Platform", "Owner", "Why?" + :widths: 40, 20, 40 + + Docker Images, , + Fetch, , + Packages, , + Toolchains, , + Other, , diff --git a/taskcluster/docs/reference.rst b/taskcluster/docs/reference.rst new file mode 100644 index 0000000000..813a3f630a --- /dev/null +++ b/taskcluster/docs/reference.rst @@ -0,0 +1,12 @@ +Reference +========= + +These sections contain some reference documentation for various aspects of +taskgraph generation. + +.. toctree:: + + kinds + parameters + attributes + caches diff --git a/taskcluster/docs/release-promotion-action.rst b/taskcluster/docs/release-promotion-action.rst new file mode 100644 index 0000000000..e7f183f2b1 --- /dev/null +++ b/taskcluster/docs/release-promotion-action.rst @@ -0,0 +1,158 @@ +Release Promotion Action +======================== + +The release promotion action is how Releng triggers `release promotion`_ +taskgraphs. The one action covers all release promotion needs: different +*flavors* allow for us to trigger the different :ref:`release promotion phases` +for each product. The input schema and release promotion flavors are defined in +the `release promotion action`_. + +.. _snowman model: + +The snowman model +----------------- + +The `release promotion action`_ allows us to chain multiple taskgraphs (aka graphs, aka task groups) together. +Essentially, we're using `optimization`_ logic to replace task labels in the +current taskgraph with task IDs from the previous taskgraph(s). + +This is the ``snowman`` model. If you request the body of +the snowman and point at the base, we only create the middle section of the snowman. +If you request the body of the snowman and don't point it at the base, we build the +first base and body of the snowman from scratch. + +For example, let's generate a task ``t2`` that depends on ``t1``. Let's call our new taskgraph ``G``:: + + G + | + t1 + | + t2 + +Task ``t2`` will wait on task ``t1`` to finish, and downloads some artifacts from task ``t1``. + +Now let's specify task group ``G1`` and ``G2`` as previous task group IDs. If task ``t1`` is in one of them, ``t2`` will depend on that task, rather than spawning a new ``t1`` in task group ``G``:: + + G1 G2 G + | | | + t1 t1 | + \______ | + \| + t2 + + or + + G1 G2 G + | | | + t1 t0 | + \________________ | + \| + t2 + +For a more real-world example:: + + G + | + build + | + signing + | + l10n-repack + | + l10n-signing + +If we point the ``promote`` task group G at the on-push build task group ``G1``, the l10n-repack job will depend on the previously finished build and build-signing tasks:: + + G1 G + | | + build | + | | + signing | + \_________| + | + l10n-repack + | + l10n-signing + +We can also explicitly exclude certain tasks from being optimized out. +We currently do this by specifying ``rebuild_kinds`` in the action; these +are `kinds`_ that we want to explicitly rebuild in the current task group, +even if they existed in previous task groups. We also allow for specifying a list of +``do_not_optimize`` labels, which would be more verbose and specific than +specifying kinds to rebuild. + +Release promotion action mechanics +---------------------------------- + +There are a number of inputs defined in the `release promotion action`_. Among these are the ``previous_graph_ids``, which is an ordered list of taskGroupIds of the task groups that we want to build our task group, off of. In the :ref:`snowman model`, these define the already-built portions of the snowman. + +The action downloads the ``parameters.yml`` from the initial ``previous_graph_id``, which matches the decision- or action- taskId. (See :ref:`taskid vs taskgroupid`.) This is most likely the decision task of the revision to promote, which is generally the same revision the release promotion action is run against. + +.. note:: If the parameters have been changed since the build happened, *and* we explicitly want the new parameters for the release promotion action task, the first ``previous_graph_id`` should be the new revision's decision task. Then the build and other previous action task group IDs can follow, so we're still replacing the task labels with the task IDs from the original revision. + +The action then downloads the various ``label-to-taskid.json`` artifacts from each previous task group, and builds an ``existing_tasks`` parameter of which labels to replace with which task IDs. Each successive update to this dictionary overwrites existing keys with new task IDs, so the rightmost task group with a given label takes precedence. Any labels that match the ``do_not_optimize`` list or that belong to tasks in the ``rebuild_kinds`` list are excluded from the ``existing_tasks`` parameter. + +Once all that happens, and we've gotten our configuration from the original parameters and our action config and inputs, we run the decision task function with our custom parameters. The `optimization`_ phase replaces any ``existing_tasks`` with the task IDs we've built from the previous task groups. + +Release Promotion Flavors +------------------------- + +For the most part, release promotion flavors match the pattern ``phase_product``, +e.g. ``promote_firefox``, ``push_devedition``, or ``ship_firefox``. + +We've added ``_rc`` suffix flavors, to deal with special RC behavior around rolling out updates using a different rate or channel. + +We are planning on adding ``_partners`` suffix flavors, to allow for creating partner repacks off-cycle. + +The various flavors are defined in the `release promotion action`_. + +Triggering the release promotion action via Treeherder +------------------------------------------------------ + +Currently, we're able to trigger this action via `Treeherder`_; we sometimes use this method for testing purposes. This is powerful, because we can modify the inputs directly, but is less production friendly, because it requires us to enter the inputs manually. At some point we may disable the ability to trigger the action via Treeherder. + +This requires being signed in with the right scopes. On `Release Promotion Projects`_, there's a dropdown in the top right of a given revision. Choose ``Custom Push Action``, then ``Release Promotion``. The inputs are specifiable as raw yaml on the left hand column. + +Release promotion action taskId and taskGroupId +----------------------------------------------- + +The ``taskGroupId`` of a release promotion action task will be the same as the ``taskId`` of the decision task. + +The ``taskGroupId`` of a release promotion *task group* will be the same as the ``taskId`` of the release promotion action task. + +So: + +* for a given push, the decision taskId ``D`` will create the taskGroupId ``D`` +* we create a release promotion action task with the taskId ``A``. The ``A`` task will be part of the ``D`` task group, but will spawn a task group with the taskGroupId ``A``. + +Another way of looking at it: + +* If you're looking at a task ``t1`` in the action taskGroup, ``t1``'s taskGroupId is the action task's taskId. (In the above example, this would be ``A``.) +* Then if you look at the action task's taskGroupId, that's the original decision task's taskId. (In the above example, this would be ``D``.) + +Testing and developing the release promotion action +--------------------------------------------------- + +To test the release promotion, action, we can use ``./mach taskgraph test-action-callback`` to debug. + +The full command for a ``promote_firefox`` test might look like:: + + ./mach taskgraph test-action-callback \ + --task-group-id LR-xH1ViTTi2jrI-N1Mf2A \ + --input /src/gecko/params/promote_firefox.yml \ + -p /src/gecko/params/maple-promote-firefox.yml \ + release_promotion_action > ../promote.json + +The input file (in the above example, that would be ``/src/gecko/params/promote_firefox.yml``), contains the action inputs. The input schema is defined in the `release promotion action`_. Previous example inputs are embedded in previous promotion task group action task definitions (``task.extra.action.input``). + +The ``parameters.yml`` file is downloadable from a previous decision or action task. + +.. _release promotion: release-promotion.html +.. _optimization: optimization.html +.. _kinds: kinds.html +.. _release promotion action: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/actions/release_promotion.py +.. _Treeherder: https://treeherder.mozilla.org +.. _Release Promotion Projects: https://searchfox.org/mozilla-central/search?q=RELEASE_PROMOTION_PROJECTS&path=taskcluster/gecko_taskgraph/util/attributes.py +.. _releasewarrior docs: https://github.com/mozilla-releng/releasewarrior-2.0/blob/master/docs/release-promotion/desktop/howto.md#how +.. _trigger_action.py: https://searchfox.org/build-central/source/tools/buildfarm/release/trigger_action.py#118 +.. _.taskcluster.yml: https://searchfox.org/mozilla-central/source/.taskcluster.yml diff --git a/taskcluster/docs/release-promotion.rst b/taskcluster/docs/release-promotion.rst new file mode 100644 index 0000000000..c0239351cc --- /dev/null +++ b/taskcluster/docs/release-promotion.rst @@ -0,0 +1,54 @@ +Release Promotion +================= + +Release promotion allows us to ship the same compiled binaries that we've +already tested. + +In the olden days, we used to re-compile our release builds with separate +configs, which led to release-specific bugs which weren't caught by continuous +integration tests. This meant we required new builds at release time, which +increased the end-to-end time for a given release significantly. Release +promotion removes these anti-patterns. + +By running our continuous integration tests against our shippable builds, we +have a higher degree of confidence at release time. By separating the build +phase tasks (compilation, packaging, and related tests) from the promotion +phase tasks, we can schedule each phase at their own independent cadence, as +needed, and the end-to-end time for promotion is reduced significantly. + +.. _release promotion phases: + +Release Promotion Phases +------------------------ + +Currently, we have the ``build``, ``promote``, ``push``, and ``ship`` phases. + +The ``build`` phase creates ``shippable builds``. These optimize for correctness +over speed, and are designed to be of shipping quality, should we decide to +ship that revision of code. These are triggered on push on release branches. +(We also schedule ``depend`` builds on most branches, which optimize for speed +over correctness, so we can detect new code bustage sooner.) + +The ``promote`` phase localizes the shippable builds, creates any update MARs, +and populates the candidates directories on S3. (On Android, we rebuild, because +we haven't been successful repacking the APK.) + +The ``push`` phase pushes the candidates files to the appropriate release directory +on S3. + +The ``ship`` phase ships or schedules updates to users. These are often at a +limited rollout percentage or are dependent on multiple downstream signoffs to +fully ship. + +In-depth relpro guide +--------------------- + +.. toctree:: + + release-promotion-action + balrog + setting-up-an-update-server + partials + signing + partner-repacks + partner-attribution diff --git a/taskcluster/docs/signing.rst b/taskcluster/docs/signing.rst new file mode 100644 index 0000000000..d3a3a902bd --- /dev/null +++ b/taskcluster/docs/signing.rst @@ -0,0 +1,188 @@ +Signing +======= + +Overview +-------- + +Our `code signing`_ happens in discrete tasks, for both performance reasons +and to limit which machines have access to the signing servers and keys. + +In general, the binary-to-be-signed is generated in one task, and the request +to sign it is in a second task. We verify the request via the `chain of trust`_, +sign the binary, then upload the signed binary or original binary + detached +signature as artifacts. + +How the Task Works +------------------ + +Scriptworker_ verifies the task definition and the upstream tasks until it +determines the graph comes from a trusted tree; this is `chain of trust`_ +verification. Part of this verification is downloading and verifying the shas +of the ``upstreamArtifacts`` in the task payload. + +An example signing task payload: + +:: + + { + "payload": { + "upstreamArtifacts": [{ + "paths": ["public/build/target.dmg"], + "formats": ["macapp"], + "taskId": "abcde", + "taskType": "build" + }, { + "paths": ["public/build/target.tar.gz"], + "formats": ["autograph_gpg"], + "taskId": "12345", + "taskType": "build" + }] + } + } + +In the above example, scriptworker would download the ``target.dmg`` from task +``abcde`` and ``target.tar.gz`` from task ``12345`` and verify their shas and +task definitions via `chain of trust`_ verification. Then it will launch +`signingscript`_, which requests a signing token from the signing server pool. + +Signingscript determines it wants to sign ``target.dmg`` with the ``macapp`` +format, and ``target.tar.gz`` with the ``autograph_gpg`` format. Each of the +`signing formats`_ has their own behavior. After performing any format-specific +checks or optimizations, it calls `signtool`_ to submit the file to the signing +servers and poll them for signed output. Once it downloads all of the signed +output files, it exits and scriptworker uploads the signed binaries. + +We can specify multiple paths from a single task for a given set of formats, +and multiple formats for a given set of paths. + +Signing kinds +------------- + +We currently have multiple signing kinds. These fall into several categories: + +**Build internal signing**: Certain package types require the internals to be signed. +For certain package types, e.g. exe or dmg, we extract the internal binaries +(e.g. xul.dll) and sign them. This is true for certain zipfiles, exes, and dmgs; +we need to sign the internals before we [re]create the package. For linux +tarballs, we don't need special packaging, so we can sign everything in this +task. These kinds include ``build-signing``, ``shippable-l10n-signing``, +``release-eme-free-repack-signing``, and ``release-partner-repack-signing``. + +**Build repackage signing**: Once we take the signed internals and package them +(known as a ``repackage``), certain formats require a signed external package. +If we have created an update MAR file from the signed internals, the MAR +file will also need to be signed. These kinds include ``repackage-signing``, +``release-eme-free-repack-repackage-signing``, and ``release-partner-repack-repackage-signing``. + +``release-source-signing`` and ``partials-signing`` sign the release source tarball +and partial update MARs. + +**Mac signing and notarization**: For mac, we have ``*-mac-signing``, which signs the app and pkg, ``*-mac-notarization`` submits to Apple and staples the resulting ticket to the binaries. + +We generate signed checksums at the top of the releases directories, like +in `60.0`_. To generate these, we have the checksums signing kinds, including +``release-generate-checksums-signing``, ``checksums-signing``, and +``release-source-checksums-signing`` + +.. _signing formats: + +Signing formats +--------------- + +The known signingscript formats are listed in the fourth column of the +`signing password files`_. + +The formats are specified in the ``upstreamArtifacts`` list-of-dicts. +``autograph_gpg`` signing results in a detached ``.asc`` signature file. Because of its +nature, we gpg-sign at the end if given multiple formats for a given set of +files. + +``jar`` signing is Android apk signing. After signing, we ``zipalign`` the apk. +This includes the ``focus-jar`` format, which is just a way to specify a different +set of keys for the Focus app. + +``macapp`` signing accepts either a ``dmg`` or ``tar.gz``; it converts ``dmg`` +files to ``tar.gz`` before submitting to the signing server. The signed binary +is a ``tar.gz``. + +``authenticode`` signing takes individual binaries or a zipfile. We sign the +individual file or internals of the zipfile, skipping any already-signed files +and a select few blocklisted files (using the `should_sign_windows`_ function). +It returns a signed individual binary or zipfile with signed internals, depending +on the input. This format includes ``autograph_authenticode``, and +``autograph_authenticode_stub``. + +``mar`` signing signs our update files (Mozilla ARchive). ``mar_sha384`` is +the same, but with a different hashing algorithm. + +``autograph_widevine`` is also video-related; see the +`widevine site`_. We sign specific files inside the package and rebuild the +``precomplete`` file that we use for updates. + +Cert levels +----------- + +Cert levels are how we separate signing privileges. We have the following levels: + +``dep`` is short for ``depend``, which is a term from the Netscape days. (This +refers to builds that don't clobber, so they keep their dependency object files +cached from the previous build.) These certs and keys are designed to be used +for Try or on-push builds that we don't intend to ship. Many of these are +self-signed and not of high security value; they're intended for testing +purposes. + +``nightly`` refers to the Nightly product and channel. We use these keys for +signing and shipping nightly builds, as well as Devedition on the beta channel. +Because these are shipping keys, they are restricted; only a subset of branches +can request the use of these keys. + +``release`` refers to our releases, off the beta, release, or esr channels. +These are the most restricted keys. + +We request a certain cert level via scopes: +``project:releng:signing:cert:dep-signing``, +``project:releng:signing:cert:nightly-signing``, or +``project:releng:signing:cert:release-signing``. Each signing task is required +to have exactly one of those scopes, and only nightly- and release-enabled +branches are able to use the latter two scopes. If a task is scheduled with one +of those restricted scopes on a non-allowlisted branch, Chain of Trust +verification will raise an exception. + +Signing scriptworker workerTypes +-------------------------------- + +The `linux-depsigning`_ pool handles all of the non-mac dep signing. These are +heavily in use on try and autoland, but also other branches. These verify +the `chain of trust`_ artifact but not its signature, and they don't have a +gpg key to sign their own chain of trust artifact. This is by design; the chain +of trust should and will break if a production scriptworker is downstream from +a depsigning worker. + +The `linux-signing`_ pool is the production signing pool; it handles the +nightly- and release- signing requests. As such, it verifies the upstream +chain of trust and all signatures, and signs its chain of trust artifact. + +The `linux-devsigning`_ pool is intended for signingscript and scriptworker +development use. Because it isn't used on any Firefox-developer-facing branch, +Mozilla Releng is able to make breaking changes on this pool without affecting +any other team. + +Similarly, we have the `mac-depsigning`_ and `mac-signing`_ pools, which handle +CI and nightly/release signing, respectively. + +.. _60.0: https://archive.mozilla.org/pub/firefox/releases/60.0/ +.. _addonscript: https://github.com/mozilla-releng/addonscript/ +.. _code signing: https://en.wikipedia.org/wiki/Code_signing +.. _chain of trust: https://scriptworker.readthedocs.io/en/latest/chain_of_trust.html +.. _linux-depsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-t-signing +.. _should_sign_windows: https://github.com/mozilla-releng/signingscript/blob/65cbb99ea53896fda9f4844e050a9695c762d24f/signingscript/sign.py#L369 +.. _Encrypted Media Extensions: https://hacks.mozilla.org/2014/05/reconciling-mozillas-mission-and-w3c-eme/ +.. _signing password files: https://github.com/mozilla/build-puppet/tree/feff5e12ab70f2c060b29940464e77208c7f0ef2/modules/signing_scriptworker/templates +.. _signingscript: https://github.com/mozilla-releng/signingscript/ +.. _linux-devsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-t-signing-dev +.. _linux-signing: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-3-signing +.. _mac-depsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-prov-v1/worker-types/depsigning-mac-v1 +.. _mac-signing: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-prov-v1/worker-types/signing-mac-v1 +.. _signtool: https://github.com/mozilla-releng/signtool +.. _Scriptworker: https://github.com/mozilla-releng/scriptworker/ +.. _widevine site: https://www.widevine.com/wv_drm.html diff --git a/taskcluster/docs/taskgraph.rst b/taskcluster/docs/taskgraph.rst new file mode 100644 index 0000000000..5b3ac83643 --- /dev/null +++ b/taskcluster/docs/taskgraph.rst @@ -0,0 +1,140 @@ +Taskgraph Overview +================== + +Taskgraph builds a directed acyclic graph, where each node in the graph +represents a task, and each edge represents the dependency relationships +between them. + +See Taskgraph's `graph generation documentation`_ for more details. + +Decision Task +------------- + +The decision task is the first task created when a new graph begins. It is +responsible for creating the rest of the task graph. + +The decision task for pushes is defined in-tree, in ``.taskcluster.yml``. That +task description invokes ``mach taskcluster decision`` with some metadata about +the push. That mach command determines the required graph of tasks to submit, +then calls the Taskcluster API to create the tasks. + +.. note:: + + ``mach taskgraph decision`` is *not* meant to be invoked by humans. + Instead, follow `this guide`_ (prepending ``mach`` to all commands) to + invoke Taskgraph locally without submitting anything to Taskcluster. + +.. _kinds: + +Kinds +----- + +Generation starts with "kinds". These are yaml files that denote groupings of +tasks that are loosely related to one another. For example, in Gecko there are +``build`` and ``test`` kinds. Each kind has its own directory under +`taskcluster/ci`_ which contains a ``kind.yml`` file. + +For more information on kinds, see Taskgraph's `kind documentation`_. For a +list of available kinds in ``mozilla-central``, see the :doc:`kinds reference +`. + +Loader +------ + +Next, a "loader" is responsible for parsing each ``kind.yml`` file and turning +it into an initial set of tasks. Loaders will always parse kinds in an ordering +satisfying the ``kind-dependencies`` key. + +See Taskgraph's `loader documentation`_ for more details. + +.. _transforms: + +Transforms +---------- + +After the initial set of tasks are loaded, transformations are applied to each +task. Transforms are Python functions that take a generator of tasks as input, +and yields a generator of tasks as output. Possibly modifying, adding or removing +tasks along the way. + +See Taskgrpah's `transforms documentation`_ for more details on transforms, or +the :doc:`transforms section ` for information +on some of the transforms available in ``mozilla-central``. + +Target Tasks +------------ + +After transformation is finished, the `target_tasks`_ module filters out any +tasks that aren't applicable to the current :doc:`parameter set +`. + +Optimization +------------ + +After the "target graph" is generated, an optimization process looks to remove +or replace unnecessary tasks in the graph. For instance, a task may be removed +if the push doesn't modify any of the files that could affect it. + +See Taskgraph's `optimization documentation`_ for more details, or the +:doc:`optimization strategies ` available in +``mozilla-central``. + + +Task Parameterization +--------------------- + +A few components of tasks are only known at the very end of the decision task +-- just before the ``queue.createTask`` call is made. These are specified +using simple parameterized values, as follows: + +``{"relative-datestamp": "certain number of seconds/hours/days/years"}`` + Objects of this form will be replaced with an offset from the current time + just before the ``queue.createTask`` call is made. For example, an + artifact expiration might be specified as ``{"relative-datestamp": "1 + year"}``. + +``{"task-reference": "string containing "}`` + The task definition may contain "task references" of this form. These will + be replaced during the optimization step, with the appropriate taskId for + the named dependency substituted for ```` in the string. + Additionally, `decision` and `self` can be used a dependency names to refer + to the decision task, and the task itself. Multiple labels may be + substituted in a single string, and ``<<>`` can be used to escape a literal + ``<``. + +``{"artifact-reference": "...."}`` + Similar to a ``task-reference``, but this substitutes a URL to the queue's + ``getLatestArtifact`` API method (for which a GET will redirect to the + artifact itself). + +.. _taskgraph-graph-config: + +Graph Configuration +------------------- + +There are several configuration settings that are pertain to the entire +taskgraph. These are specified in :file:`config.yml` at the root of the +taskgraph configuration (typically :file:`taskcluster/ci/`). The available +settings are documented inline in `taskcluster/gecko_taskgraph/config.py +`_. + +.. _taskgraph-trust-domain: + +Action Tasks +------------ + +Action Tasks are tasks which perform an action based on a manual trigger (e.g +clicking a button in Treeherder). Actions are how it is possible to retrigger +or "Add New Jobs". + +For more information, see Taskgraph's `actions documentation`_. + +.. _graph generation documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/task-graphs.html +.. _this guide: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/run-locally.html +.. _taskcluster/ci: https://searchfox.org/mozilla-central/source/taskcluster/ci +.. _kind documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/kind.html +.. _loader documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/loading.html +.. _transforms documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/transforms.html +.. _target_tasks: +.. _optimization documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/optimization.html +.. _actions documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/create-actions.html diff --git a/taskcluster/docs/transforms/index.rst b/taskcluster/docs/transforms/index.rst new file mode 100644 index 0000000000..641f1abbc4 --- /dev/null +++ b/taskcluster/docs/transforms/index.rst @@ -0,0 +1,22 @@ +Transforms +========== + +`Transforms`_ are Python functions that can modify (or sometimes add and +remove) tasks from the graph. This section describes some of the transform +functions that are available in ``mozilla-central``. + +.. toctree:: + + signing + test + job + task + +Other Transforms +---------------- + +There are tons of transforms that are not documented here. Consult the source +files under `taskcluster/gecko_taskgraph/transforms`_ which provide lots of +additional detail, both in the code itself and in comments and docstrings. + +.. _taskcluster/gecko_taskgraph/transforms: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/transforms diff --git a/taskcluster/docs/transforms/job.rst b/taskcluster/docs/transforms/job.rst new file mode 100644 index 0000000000..160402dd36 --- /dev/null +++ b/taskcluster/docs/transforms/job.rst @@ -0,0 +1,42 @@ +Job Transforms +============== + +.. note:: + + These transforms are currently duplicated by standalone Taskgraph + and will likely be refactored / removed at a later date. + +A job description says what to run in the task. It is a combination of a +``run`` section and all of the fields from a task description. The run section +has a ``using`` property that defines how this task should be run; for example, +``mozharness`` to run a mozharness script, or ``mach`` to run a mach command. +The remainder of the run section is specific to the run-using implementation. + +The effect of a job description is to say "run this thing on this worker". The +job description must contain enough information about the worker to identify +the workerType and the implementation (docker-worker, generic-worker, etc.). +Alternatively, job descriptions can specify the ``platforms`` field in +conjunction with the ``by-platform`` key to specify multiple workerTypes and +implementations. Any other task-description information is passed along +verbatim, although it is augmented by the run-using implementation. + +The run-using implementations are all located in +``taskcluster/gecko_taskgraph/transforms/job``, along with the schemas for their +implementations. Those well-commented source files are the canonical +documentation for what constitutes a job description, and should be considered +part of the documentation. + +following ``run-using`` are available + + * ``hazard`` + * ``mach`` + * ``mozharness`` + * ``mozharness-test`` + * ``run-task`` + * ``spidermonkey`` or ``spidermonkey-package`` + * ``debian-package`` + * ``ubuntu-package`` + * ``toolchain-script`` + * ``always-optimized`` + * ``fetch-url`` + * ``python-test`` diff --git a/taskcluster/docs/transforms/signing.rst b/taskcluster/docs/transforms/signing.rst new file mode 100644 index 0000000000..52b13765bf --- /dev/null +++ b/taskcluster/docs/transforms/signing.rst @@ -0,0 +1,15 @@ +Signing Transforms +================== + +Signing kinds are passed a single dependent job (from its kind dependency) to act +on. + +The transforms in ``taskcluster/gecko_taskgraph/transforms/signing.py`` implement +this common functionality. They expect a "signing description", and produce a +task definition. The schema for a signing description is defined at the top of +``signing.py``, with copious comments. + +In particular you define a set of upstream artifact urls (that point at the +dependent task) and can optionally provide a dependent name (defaults to build) +for use in ``task-reference``/``artifact-reference``. You also need to provide +the signing formats to use. diff --git a/taskcluster/docs/transforms/task.rst b/taskcluster/docs/transforms/task.rst new file mode 100644 index 0000000000..f19b4a7e15 --- /dev/null +++ b/taskcluster/docs/transforms/task.rst @@ -0,0 +1,45 @@ +Task Transforms +=============== + +.. note:: + + These transforms are currently duplicated by standalone Taskgraph + and will likely be refactored / removed at a later date. + +Every kind needs to create tasks, and all of those tasks have some things in +common. They all run on one of a small set of worker implementations, each +with their own idiosyncrasies. And they all report to TreeHerder in a similar +way. + +The transforms in ``taskcluster/gecko_taskgraph/transforms/task.py`` implement +this common functionality. They expect a "task description", and produce a +task definition. The schema for a task description is defined at the top of +``task.py``, with copious comments. Go forth and read it now! + +In general, the task-description transforms handle functionality that is common +to all Gecko tasks. While the schema is the definitive reference, the +functionality includes: + +* TreeHerder metadata + +* Build index routes + +* Information about the projects on which this task should run + +* Optimizations + +* Defaults for ``expires-after`` and and ``deadline-after``, based on project + +* Worker configuration + +The parts of the task description that are specific to a worker implementation +are isolated in a ``task_description['worker']`` object which has an +``implementation`` property naming the worker implementation. Each worker +implementation has its own section of the schema describing the fields it +expects. Thus the transforms that produce a task description must be aware of +the worker implementation to be used, but need not be aware of the details of +its payload format. + +The ``task.py`` file also contains a dictionary mapping treeherder groups to +group names using an internal list of group names. Feel free to add additional +groups to this list as necessary. diff --git a/taskcluster/docs/transforms/test.rst b/taskcluster/docs/transforms/test.rst new file mode 100644 index 0000000000..901aaa7cc1 --- /dev/null +++ b/taskcluster/docs/transforms/test.rst @@ -0,0 +1,15 @@ +Test Transforms +=============== + +Test descriptions specify how to run a unittest or talos run. They aim to +describe this abstractly, although in many cases the unique nature of +invocation on different platforms leaves a lot of specific behavior in the test +description, divided by ``by-test-platform``. + +Test descriptions are validated to conform to the schema in +``taskcluster/gecko_taskgraph/transforms/test/__init__.py``. This schema is +extensively documented and is a the primary reference for anyone modifying +tests. + +The output of ``tests.py`` is a task description. Test dependencies are +produced in the form of a dictionary mapping dependency name to task label. diff --git a/taskcluster/docs/try.rst b/taskcluster/docs/try.rst new file mode 100644 index 0000000000..5639cdb615 --- /dev/null +++ b/taskcluster/docs/try.rst @@ -0,0 +1,153 @@ +Try +=== + +"Try" is a way to "try out" a proposed change safely before review, without +officially landing it. This functionality has been around for a *long* time in +various forms, and can sometimes show its age. + +Access to "push to try" is typically available to a much larger group of +developers than those who can land changes in integration and release branches. +Specifically, try pushes are allowed for anyone with `SCM Level`_ 1, while +integration branches are at SCM level 3. + +Scheduling a Task on Try +------------------------ + +There are three methods for scheduling a task on try: legacy try option syntax, +try task config, and an empty try. + +Try Option Syntax +::::::::::::::::: + +The first, older method is a command line string called ``try syntax`` which is passed +into the decision task via the commit message. The resulting commit is then +pushed to the https://hg.mozilla.org/try repository. An example try syntax +might look like: + +.. parsed-literal:: + + try: -b o -p linux64 -u mochitest-1 -t none + +This gets parsed by ``taskgraph.try_option_syntax:TryOptionSyntax`` and returns +a list of matching task labels. For more information see the +`TryServer wiki page `_. + +Try Task Config +::::::::::::::: + +The second, more modern method specifies exactly the tasks to run. That list +of tasks is usually generated locally with some :doc:`local tool ` +and attached to the commit pushed to the try repository. This gives +finer control over exactly what runs and enables growth of an +ecosystem of tooling appropriate to varied circumstances. + +Implementation +,,,,,,,,,,,,,, + +This method uses a checked-in file called ``try_task_config.json`` which lives +at the root of the source dir. The JSON object in this file contains a +``tasks`` key giving the labels of the tasks to run. For example, the +``try_task_config.json`` file might look like: + +.. parsed-literal:: + + { + "version": 1, + "tasks": [ + "test-windows10-64/opt-web-platform-tests-12", + "test-windows7-32/opt-reftest-1", + "test-windows7-32/opt-reftest-2", + "test-windows7-32/opt-reftest-3", + "build-linux64/debug", + "source-test-mozlint-eslint" + ] + } + +Very simply, this will run any task label that gets passed in as well as their +dependencies. While it is possible to manually commit this file and push to +try, it is mainly meant to be a generation target for various :ref:`try server ` +choosers. For example: + +.. parsed-literal:: + + $ ./mach try fuzzy + +A list of all possible task labels can be obtained by running: + +.. parsed-literal:: + + $ ./mach taskgraph tasks + +A list of task labels relevant to a tree (defaults to mozilla-central) can be +obtained with: + +.. parsed-literal:: + + $ ./mach taskgraph target + +Modifying Tasks in a Try Push +,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + +It's possible to alter the definition of a task by defining additional +configuration in ``try_task_config.json``. For example, to set an environment +variable in all tasks, you can add: + +.. parsed-literal:: + + { + "version": 1, + "tasks": [...], + "env": { + "FOO": "bar" + } + } + +The allowed configs are defined in :py:obj:`taskgraph.decision.try_task_config_schema`. +The values will be available to all transforms, so how each config applies will +vary wildly from one context to the next. Some (such as ``env``) will affect +all tasks in the graph. Others might only affect certain kinds of task. The +``use-artifact-builds`` config only applies to build tasks for instance. + +Empty Try +::::::::: + +If there is no try syntax or ``try_task_config.json``, the ``try_mode`` +parameter is None and no tasks are selected to run. The resulting push will +only have a decision task, but one with an "add jobs" action that can be used +to add the desired jobs to the try push. + + +Complex Configuration +::::::::::::::::::::: + +If you need more control over the build configuration, +(:doc:`staging releases `, for example), +you can directly specify :doc:`parameters ` +to override from the ``try_task_config.json`` like this: + +.. parsed-literal:: + + { + "version": 2, + "parameters": { + "optimize_target_tasks": true, + "release_type": "beta", + "target_tasks_method": "staging_release_builds" + } + } + +This format can express a superset of the version 1 format, as the +version one configuration is equivalent to the following version 2 +config. + +.. parsed-literal:: + + { + "version": 2, + "parameters": { + "try_task_config": {...}, + "try_mode": "try_task_config", + } + } + +.. _SCM Level: https://www.mozilla.org/en-US/about/governance/policies/commit/access-policy/ diff --git a/taskcluster/docs/using-the-mozilla-source-server.rst b/taskcluster/docs/using-the-mozilla-source-server.rst new file mode 100644 index 0000000000..7164e7fe56 --- /dev/null +++ b/taskcluster/docs/using-the-mozilla-source-server.rst @@ -0,0 +1,40 @@ +Using The Mozilla Source Server +=============================== + +Using the Mozilla source server is now even more feature-packed. The +nightly debug builds are now also Source Indexed so that by following a +couple of simple steps you can also have the source code served to you +for debugging without a local build. + +What you'll need +---------------- + +- `WinDbg `__ or Visual Studio (not Code) +- A nightly build; go to the + `/pub/firefox/nightly/latest-mozilla-central/ `__ + folder and grab the installer + +Set up symbols +-------------- + +Follow the instructions for :ref:`Using the Mozilla symbol +server `. Once +the symbol path is set you must now enable Source Server. + +Using the source server in WinDbg +--------------------------------- + +In the WinDbg command line, type ``.srcfix`` and hit enter. This enables +source server support. + +.. image:: img/windbg-srcfix.png + + +Using the source server in Visual Studio +---------------------------------------- + +Enable source server support under Tools -> Options. Also, disable +(uncheck) the box that says "Require source files to exactly match the +original version". + +.. image:: img/enableSourceServer.png diff --git a/taskcluster/docs/versioncontrol.rst b/taskcluster/docs/versioncontrol.rst new file mode 100644 index 0000000000..835f8915cf --- /dev/null +++ b/taskcluster/docs/versioncontrol.rst @@ -0,0 +1,74 @@ +===================== +Version Control in CI +===================== + +Upgrading Mercurial +=================== + +Upgrading Mercurial in CI requires touching a handful of different +components. + +Vendored robustcheckout +----------------------- + +The ``robustcheckout`` Mercurial extension is used throughout CI to +perform clones and working directory updates. The canonical home of +the extension is in the +https://hg.mozilla.org/hgcustom/version-control-tools repository +at the path ``hgext/robustcheckout/__init__.py``. + + +When upgrading Mercurial, the ``robustcheckout`` extension should also +be updated to ensure it is compatible with the version of Mercurial +being upgraded to. Typically, one simply copies the latest version +from ``version-control-tools`` into the vendored locations. + +The locations are as follows: + +- In-tree: ``testing/mozharness/external_tools/robustcheckout.py`` +- Treescript: ``https://github.com/mozilla-releng/scriptworker-scripts/blob/master/treescript/treescript/py2/robustcheckout.py`` +- build-puppet: ``https://github.com/mozilla-releng/build-puppet/blob/master/modules/mercurial/files/robustcheckout.py`` +- ronin_puppet: ``https://github.com/mozilla-platform-ops/ronin_puppet/blob/master/modules/mercurial/files/robustcheckout.py`` +- OpenCloudConfig: ``https://github.com/mozilla-releng/OpenCloudConfig/blob/master/userdata/Configuration/FirefoxBuildResources/robustcheckout.py`` + + +Debian Packages for Debian and Ubuntu Based Docker Images +--------------------------------------------------------- + +``taskcluster/ci/packages/debian.yml`` and ``taskcluster/ci/packages/ubuntu.yml`` +define custom Debian packages for Mercurial. These are installed in various +Docker images. + +To upgrade Mercurial, typically you just need to update the source URL +and its hash in this file. + + +Windows AMIs +------------ + +https://github.com/mozilla-releng/OpenCloudConfig defines the Windows +environment for various Windows AMIs used by Taskcluster. Several of +the files reference a ``mercurial-x.y.z-*.msi`` installer. These references +will need to be updated to the Mercurial version being upgraded to. + +The ``robustcheckout`` extension is also vendored into this repository +at ``userdata/Configuration/FirefoxBuildResources/robustcheckout.py``. It +should also be updated if needed. + +Puppet Maintained Hosts +----------------------- + +Some hosts (namely macOS machines) are managed by Puppet and Puppet is used +to install Mercurial. + +Puppet code lives in the https://github.com/mozilla-releng/build-puppet repository. +Relevant files are in ``modules/mercurial/``, +``modules/packages/manifests/mozilla/mozilla-python27-mercurial-debian/``, +and ``modules/packages/manifests/mozilla/py27_mercurial*``. A copy of +``robustcheckout`` is also vendored at +``modules/mercurial/files/robustcheckout.py``. + +.. note:: + + The steps to upgrade Mercurial in Puppet aren't currently captured here. + Someone should capture those... diff --git a/taskcluster/gecko_taskgraph/.ruff.toml b/taskcluster/gecko_taskgraph/.ruff.toml new file mode 100644 index 0000000000..0cd744c1cb --- /dev/null +++ b/taskcluster/gecko_taskgraph/.ruff.toml @@ -0,0 +1,4 @@ +extend = "../../pyproject.toml" + +[isort] +known-first-party = ["gecko_taskgraph"] diff --git a/taskcluster/gecko_taskgraph/__init__.py b/taskcluster/gecko_taskgraph/__init__.py new file mode 100644 index 0000000000..1346bf3c33 --- /dev/null +++ b/taskcluster/gecko_taskgraph/__init__.py @@ -0,0 +1,64 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os + +from taskgraph import config as taskgraph_config +from taskgraph import morph as taskgraph_morph +from taskgraph.util import schema +from taskgraph.util import taskcluster as tc_util + +from gecko_taskgraph.config import graph_config_schema + +GECKO = os.path.normpath(os.path.realpath(os.path.join(__file__, "..", "..", ".."))) + +# Maximum number of dependencies a single task can have +# https://firefox-ci-tc.services.mozilla.com/docs/reference/platform/queue/task-schema +# specifies 100, but we also optionally add the decision task id as a dep in +# taskgraph.create, so let's set this to 99. +MAX_DEPENDENCIES = 99 + +# Overwrite Taskgraph's default graph_config_schema with a custom one. +taskgraph_config.graph_config_schema = graph_config_schema + +# Don't use any of the upstream morphs. +# TODO Investigate merging our morphs with upstream. +taskgraph_morph.registered_morphs = [] + +# Default rootUrl to use if none is given in the environment; this should point +# to the production Taskcluster deployment used for CI. +tc_util.PRODUCTION_TASKCLUSTER_ROOT_URL = "https://firefox-ci-tc.services.mozilla.com" + +# Schemas for YAML files should use dashed identifiers by default. If there are +# components of the schema for which there is a good reason to use another format, +# exceptions can be added here. +schema.EXCEPTED_SCHEMA_IDENTIFIERS.extend( + [ + "test_name", + "json_location", + "video_location", + ] +) + + +def register(graph_config): + """Used to register Gecko specific extensions. + + Args: + graph_config: The graph configuration object. + """ + from taskgraph import generator + + from gecko_taskgraph import ( # noqa: trigger target task method registration + morph, # noqa: trigger morph registration + target_tasks, + ) + from gecko_taskgraph.parameters import register_parameters + from gecko_taskgraph.util.verify import verifications + + # Don't use the upstream verifications, and replace them with our own. + # TODO Investigate merging our verifications with upstream. + generator.verifications = verifications + + register_parameters() diff --git a/taskcluster/gecko_taskgraph/actions/__init__.py b/taskcluster/gecko_taskgraph/actions/__init__.py new file mode 100644 index 0000000000..590a957282 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/__init__.py @@ -0,0 +1,16 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from .registry import ( + register_callback_action, + render_actions_json, + trigger_action_callback, +) + +__all__ = [ + "register_callback_action", + "render_actions_json", + "trigger_action_callback", +] diff --git a/taskcluster/gecko_taskgraph/actions/add_new_jobs.py b/taskcluster/gecko_taskgraph/actions/add_new_jobs.py new file mode 100644 index 0000000000..39200cff68 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/add_new_jobs.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from .registry import register_callback_action +from .util import combine_task_graph_files, create_tasks, fetch_graph_and_labels + + +@register_callback_action( + name="add-new-jobs", + title="Add new jobs", + symbol="add-new", + description="Add new jobs using task labels.", + order=100, + context=[], + schema={ + "type": "object", + "properties": { + "tasks": { + "type": "array", + "description": "An array of task labels", + "items": {"type": "string"}, + }, + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 100, + "title": "Times", + "description": "How many times to run each task.", + }, + }, + }, +) +def add_new_jobs_action(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + to_run = [] + for elem in input["tasks"]: + if elem in full_task_graph.tasks: + to_run.append(elem) + else: + raise Exception(f"{elem} was not found in the task-graph") + + times = input.get("times", 1) + for i in range(times): + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + i, + ) + combine_task_graph_files(list(range(times))) diff --git a/taskcluster/gecko_taskgraph/actions/add_talos.py b/taskcluster/gecko_taskgraph/actions/add_talos.py new file mode 100644 index 0000000000..56b0c49cc9 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/add_talos.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from ..target_tasks import standard_filter +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + + +@register_callback_action( + name="run-all-talos", + title="Run All Talos Tests", + symbol="raT", + description="Add all Talos tasks to a push.", + order=150, + context=[], + schema={ + "type": "object", + "properties": { + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 6, + "title": "Times", + "description": "How many times to run each task.", + } + }, + "additionalProperties": False, + }, +) +def add_all_talos(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + times = input.get("times", 1) + for i in range(times): + to_run = [ + label + for label, entry in full_task_graph.tasks.items() + if "talos_try_name" in entry.attributes + and standard_filter(entry, parameters) + ] + + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + ) + logger.info(f"Scheduled {len(to_run)} talos tasks (time {i + 1}/{times})") diff --git a/taskcluster/gecko_taskgraph/actions/backfill.py b/taskcluster/gecko_taskgraph/actions/backfill.py new file mode 100644 index 0000000000..81f29394d6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/backfill.py @@ -0,0 +1,426 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging +import re +import sys +from functools import partial + +from taskgraph.util.taskcluster import get_task_definition + +from .registry import register_callback_action +from .util import ( + combine_task_graph_files, + create_tasks, + fetch_graph_and_labels, + get_decision_task_id, + get_pushes, + get_pushes_from_params_input, + trigger_action, +) + +logger = logging.getLogger(__name__) +SYMBOL_REGEX = re.compile("^(.*)-[a-z0-9]{11}-bk$") +GROUP_SYMBOL_REGEX = re.compile("^(.*)-bk$") + + +def input_for_support_action(revision, task, times=1, retrigger=True): + """Generate input for action to be scheduled. + + Define what label to schedule with 'label'. + If it is a test task that uses explicit manifests add that information. + """ + input = { + "label": task["metadata"]["name"], + "revision": revision, + "times": times, + # We want the backfilled tasks to share the same symbol as the originating task + "symbol": task["extra"]["treeherder"]["symbol"], + "retrigger": retrigger, + } + + # Support tasks that are using manifest based scheduling + if task["payload"].get("env", {}).get("MOZHARNESS_TEST_PATHS"): + input["test_manifests"] = json.loads( + task["payload"]["env"]["MOZHARNESS_TEST_PATHS"] + ) + + return input + + +@register_callback_action( + title="Backfill", + name="backfill", + permission="backfill", + symbol="Bk", + description=("Given a task schedule it on previous pushes in the same project."), + order=200, + context=[{}], # This will be available for all tasks + schema={ + "type": "object", + "properties": { + "depth": { + "type": "integer", + "default": 19, + "minimum": 1, + "maximum": 25, + "title": "Depth", + "description": ( + "The number of previous pushes before the current " + "push to attempt to trigger this task on." + ), + }, + "inclusive": { + "type": "boolean", + "default": False, + "title": "Inclusive Range", + "description": ( + "If true, the backfill will also retrigger the task " + "on the selected push." + ), + }, + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 10, + "title": "Times", + "description": ( + "The number of times to execute each job you are backfilling." + ), + }, + "retrigger": { + "type": "boolean", + "default": True, + "title": "Retrigger", + "description": ( + "If False, the task won't retrigger on pushes that have already " + "ran it." + ), + }, + }, + "additionalProperties": False, + }, + available=lambda parameters: True, +) +def backfill_action(parameters, graph_config, input, task_group_id, task_id): + """ + This action takes a task ID and schedules it on previous pushes (via support action). + + To execute this action locally follow the documentation here: + https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally + """ + task = get_task_definition(task_id) + pushes = get_pushes_from_params_input(parameters, input) + failed = False + input_for_action = input_for_support_action( + revision=parameters["head_rev"], + task=task, + times=input.get("times", 1), + retrigger=input.get("retrigger", True), + ) + + for push_id in pushes: + try: + # The Gecko decision task can sometimes fail on a push and we need to handle + # the exception that this call will produce + push_decision_task_id = get_decision_task_id(parameters["project"], push_id) + except Exception: + logger.warning(f"Could not find decision task for push {push_id}") + # The decision task may have failed, this is common enough that we + # don't want to report an error for it. + continue + + try: + trigger_action( + action_name="backfill-task", + # This lets the action know on which push we want to add a new task + decision_task_id=push_decision_task_id, + input=input_for_action, + ) + except Exception: + logger.exception(f"Failed to trigger action for {push_id}") + failed = True + + if failed: + sys.exit(1) + + +def add_backfill_suffix(regex, symbol, suffix): + m = regex.match(symbol) + if m is None: + symbol += suffix + return symbol + + +def backfill_modifier(task, input): + if task.label != input["label"]: + return task + + logger.debug(f"Modifying test_manifests for {task.label}") + times = input.get("times", 1) + + # Set task duplicates based on 'times' value. + if times > 1: + task.attributes["task_duplicates"] = times + + # If the original task has defined test paths + test_manifests = input.get("test_manifests") + if test_manifests: + revision = input.get("revision") + + task.attributes["test_manifests"] = test_manifests + task.task["payload"]["env"]["MOZHARNESS_TEST_PATHS"] = json.dumps( + test_manifests + ) + # The name/label might have been modify in new_label, thus, change it here as well + task.task["metadata"]["name"] = task.label + th_info = task.task["extra"]["treeherder"] + # Use a job symbol of the originating task as defined in the backfill action + th_info["symbol"] = add_backfill_suffix( + SYMBOL_REGEX, th_info["symbol"], f"-{revision[0:11]}-bk" + ) + if th_info.get("groupSymbol"): + # Group all backfilled tasks together + th_info["groupSymbol"] = add_backfill_suffix( + GROUP_SYMBOL_REGEX, th_info["groupSymbol"], "-bk" + ) + task.task["tags"]["action"] = "backfill-task" + return task + + +def do_not_modify(task): + return task + + +def new_label(label, tasks): + """This is to handle the case when a previous push does not contain a specific task label + and we try to find a label we can reuse. + + For instance, we try to backfill chunk #3, however, a previous push does not contain such + chunk, thus, we try to reuse another task/label. + """ + begining_label, ending = label.rsplit("-", 1) + if ending.isdigit(): + # We assume that the taskgraph has chunk #1 OR unnumbered chunk and we hijack it + if begining_label in tasks: + return begining_label + if begining_label + "-1" in tasks: + return begining_label + "-1" + raise Exception(f"New label ({label}) was not found in the task-graph") + else: + raise Exception(f"{label} was not found in the task-graph") + + +@register_callback_action( + name="backfill-task", + title="Backfill task on a push.", + permission="backfill", + symbol="backfill-task", + description="This action is normally scheduled by the backfill action. " + "The intent is to schedule a task on previous pushes.", + order=500, + context=[], + schema={ + "type": "object", + "properties": { + "label": {"type": "string", "description": "A task label"}, + "revision": { + "type": "string", + "description": "Revision of the original push from where we backfill.", + }, + "symbol": { + "type": "string", + "description": "Symbol to be used by the scheduled task.", + }, + "test_manifests": { + "type": "array", + "default": [], + "description": "An array of test manifest paths", + "items": {"type": "string"}, + }, + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 10, + "title": "Times", + "description": ( + "The number of times to execute each job " "you are backfilling." + ), + }, + "retrigger": { + "type": "boolean", + "default": True, + "title": "Retrigger", + "description": ( + "If False, the task won't retrigger on pushes that have already " + "ran it." + ), + }, + }, + }, +) +def add_task_with_original_manifests( + parameters, graph_config, input, task_group_id, task_id +): + """ + This action is normally scheduled by the backfill action. The intent is to schedule a test + task with the test manifests from the original task (if available). + + The push in which we want to schedule a new task is defined by the parameters object. + + To execute this action locally follow the documentation here: + https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally + """ + # This step takes a lot of time when executed locally + logger.info("Retreving the full task graph and labels.") + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + label = input.get("label") + if not input.get("retrigger") and label in label_to_taskid: + logger.info( + f"Skipping push with decision task ID {decision_task_id} as it already has this test." + ) + return + + if label not in full_task_graph.tasks: + label = new_label(label, full_task_graph.tasks) + + to_run = [label] + + logger.info("Creating tasks...") + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + suffix="0", + modifier=partial(backfill_modifier, input=input), + ) + + # TODO Implement a way to write out artifacts without assuming there's + # multiple sets of them so we can stop passing in "suffix". + combine_task_graph_files(["0"]) + + +@register_callback_action( + title="Backfill all browsertime", + name="backfill-all-browsertime", + permission="backfill", + symbol="baB", + description=( + "Schedule all browsertime tests for the current and previous push in the same project." + ), + order=800, + context=[], # This will be available for all tasks + available=lambda parameters: True, +) +def backfill_all_browsertime(parameters, graph_config, input, task_group_id, task_id): + """ + This action takes a revision and schedules it on previous pushes (via support action). + + To execute this action locally follow the documentation here: + https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally + """ + pushes = get_pushes( + project=parameters["head_repository"], + end_id=int(parameters["pushlog_id"]), + depth=2, + ) + + for push_id in pushes: + try: + # The Gecko decision task can sometimes fail on a push and we need to handle + # the exception that this call will produce + push_decision_task_id = get_decision_task_id(parameters["project"], push_id) + except Exception: + logger.warning(f"Could not find decision task for push {push_id}") + # The decision task may have failed, this is common enough that we + # don't want to report an error for it. + continue + + try: + trigger_action( + action_name="add-all-browsertime", + # This lets the action know on which push we want to add a new task + decision_task_id=push_decision_task_id, + ) + except Exception: + logger.exception(f"Failed to trigger action for {push_id}") + sys.exit(1) + + +def filter_raptor_jobs(full_task_graph, label_to_taskid): + to_run = [] + for label, entry in full_task_graph.tasks.items(): + if entry.kind != "test": + continue + if entry.task.get("extra", {}).get("suite", "") != "raptor": + continue + if "browsertime" not in entry.attributes.get("raptor_try_name", ""): + continue + if not entry.attributes.get("test_platform", "").endswith("shippable-qr/opt"): + continue + if "android" in entry.attributes.get("test_platform", ""): + # Bug 1786254 - The backfill bot is scheduling too many tests atm + continue + exceptions = ("live", "profiling", "youtube-playback") + if any(e in entry.attributes.get("raptor_try_name", "") for e in exceptions): + continue + if "firefox" in entry.attributes.get( + "raptor_try_name", "" + ) and entry.attributes.get("test_platform", "").endswith("64-shippable-qr/opt"): + # add the browsertime test + if label not in label_to_taskid: + to_run.append(label) + if "geckoview" in entry.attributes.get("raptor_try_name", ""): + # add the pageload test + if label not in label_to_taskid: + to_run.append(label) + return to_run + + +@register_callback_action( + name="add-all-browsertime", + title="Add All Browsertime Tests.", + permission="backfill", + symbol="aaB", + description="This action is normally scheduled by the backfill-all-browsertime action. " + "The intent is to schedule all browsertime tests on a specific pushe.", + order=900, + context=[], +) +def add_all_browsertime(parameters, graph_config, input, task_group_id, task_id): + """ + This action is normally scheduled by the backfill-all-browsertime action. The intent is to + trigger all browsertime tasks for the current revision. + + The push in which we want to schedule a new task is defined by the parameters object. + + To execute this action locally follow the documentation here: + https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally + """ + logger.info("Retreving the full task graph and labels.") + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + to_run = filter_raptor_jobs(full_task_graph, label_to_taskid) + + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + ) + logger.info(f"Scheduled {len(to_run)} raptor tasks (time 1)") diff --git a/taskcluster/gecko_taskgraph/actions/cancel.py b/taskcluster/gecko_taskgraph/actions/cancel.py new file mode 100644 index 0000000000..d895781395 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/cancel.py @@ -0,0 +1,36 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +import requests +from taskgraph.util.taskcluster import cancel_task + +from .registry import register_callback_action + +logger = logging.getLogger(__name__) + + +@register_callback_action( + title="Cancel Task", + name="cancel", + symbol="cx", + description=("Cancel the given task"), + order=350, + context=[{}], +) +def cancel_action(parameters, graph_config, input, task_group_id, task_id): + # Note that this is limited by the scopes afforded to generic actions to + # only cancel tasks with the level-specific schedulerId. + try: + cancel_task(task_id, use_proxy=True) + except requests.HTTPError as e: + if e.response.status_code == 409: + # A 409 response indicates that this task is past its deadline. It + # cannot be cancelled at this time, but it's also not running + # anymore, so we can ignore this error. + logger.info(f"Task {task_id} is past its deadline and cannot be cancelled.") + return + raise diff --git a/taskcluster/gecko_taskgraph/actions/cancel_all.py b/taskcluster/gecko_taskgraph/actions/cancel_all.py new file mode 100644 index 0000000000..d74b83b7d8 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/cancel_all.py @@ -0,0 +1,60 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import concurrent.futures as futures +import logging +import os + +import requests +from taskgraph.util.taskcluster import CONCURRENCY, cancel_task + +from gecko_taskgraph.util.taskcluster import list_task_group_incomplete_task_ids + +from .registry import register_callback_action + +logger = logging.getLogger(__name__) + + +@register_callback_action( + title="Cancel All", + name="cancel-all", + symbol="cAll", + description=( + "Cancel all running and pending tasks created by the decision task " + "this action task is associated with." + ), + order=400, + context=[], +) +def cancel_all_action(parameters, graph_config, input, task_group_id, task_id): + def do_cancel_task(task_id): + logger.info(f"Cancelling task {task_id}") + try: + cancel_task(task_id, use_proxy=True) + except requests.HTTPError as e: + if e.response.status_code == 409: + # A 409 response indicates that this task is past its deadline. It + # cannot be cancelled at this time, but it's also not running + # anymore, so we can ignore this error. + logger.info( + "Task {} is past its deadline and cannot be cancelled.".format( + task_id + ) + ) + return + raise + + own_task_id = os.environ.get("TASK_ID", "") + to_cancel = [ + t + for t in list_task_group_incomplete_task_ids(task_group_id) + if t != own_task_id + ] + + logger.info(f"Cancelling {len(to_cancel)} tasks") + with futures.ThreadPoolExecutor(CONCURRENCY) as e: + cancel_futs = [e.submit(do_cancel_task, t) for t in to_cancel] + for f in futures.as_completed(cancel_futs): + f.result() diff --git a/taskcluster/gecko_taskgraph/actions/confirm_failure.py b/taskcluster/gecko_taskgraph/actions/confirm_failure.py new file mode 100644 index 0000000000..3d0b572a2e --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/confirm_failure.py @@ -0,0 +1,238 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging +import re + +from taskgraph.util.parameterization import resolve_task_references +from taskgraph.util.taskcluster import get_artifact, get_task_definition, list_artifacts + +from gecko_taskgraph.util.copy_task import copy_task + +from .registry import register_callback_action +from .util import add_args_to_command, create_task_from_def, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + + +def get_failures(task_id): + """Returns a dict containing properties containing a list of + directories containing test failures and a separate list of + individual test failures from the errorsummary.log artifact for + the task. + + Calls the helper function munge_test_path to attempt to find an + appropriate test path to pass to the task in + MOZHARNESS_TEST_PATHS. If no appropriate test path can be + determined, nothing is returned. + """ + + def re_compile_list(*lst): + # Ideally we'd just use rb"" literals and avoid the encode, but + # this file needs to be importable in python2 for now. + return [re.compile(s.encode("utf-8")) for s in lst] + + re_bad_tests = re_compile_list( + r"Last test finished", + r"LeakSanitizer", + r"Main app process exited normally", + r"ShutdownLeaks", + r"[(]SimpleTest/TestRunner.js[)]", + r"automation.py", + r"https?://localhost:\d+/\d+/\d+/.*[.]html", + r"jsreftest", + r"leakcheck", + r"mozrunner-startup", + r"pid: ", + r"RemoteProcessMonitor", + r"unknown test url", + ) + re_extract_tests = re_compile_list( + r'"test": "(?:[^:]+:)?(?:https?|file):[^ ]+/reftest/tests/([^ "]+)', + r'"test": "(?:[^:]+:)?(?:https?|file):[^:]+:[0-9]+/tests/([^ "]+)', + r'xpcshell-?[^ "]*\.ini:([^ "]+)', + r'/tests/([^ "]+) - finished .*', + r'"test": "([^ "]+)"', + r'"message": "Error running command run_test with arguments ' + r"[(]]+)>", + r'"message": "TEST-[^ ]+ [|] ([^ "]+)[^|]*[|]', + ) + + def munge_test_path(line): + test_path = None + for r in re_bad_tests: + if r.search(line): + return None + for r in re_extract_tests: + m = r.search(line) + if m: + test_path = m.group(1) + break + return test_path + + # collect dirs that don't have a specific manifest + dirs = set() + tests = set() + artifacts = list_artifacts(task_id) + for artifact in artifacts: + if "name" not in artifact or not artifact["name"].endswith("errorsummary.log"): + continue + + stream = get_artifact(task_id, artifact["name"]) + if not stream: + continue + + # We handle the stream as raw bytes because it may contain invalid + # UTF-8 characters in portions other than those containing the error + # messages we're looking for. + for line in stream.read().split(b"\n"): + if not line.strip(): + continue + + l = json.loads(line) + if "group_results" in l.keys() and l["status"] != "OK": + dirs.add(l["group_results"].group()) + + elif "test" in l.keys(): + test_path = munge_test_path(line.strip()) + tests.add(test_path.decode("utf-8")) + + # only run the failing test not both test + dir + if l["group"] in dirs: + dirs.remove(l["group"]) + + if len(tests) > 4: + break + + # turn group into dir by stripping off leafname + dirs = set([d.split("/")[0:-1] for d in dirs]) + + return {"dirs": sorted(dirs), "tests": sorted(tests)} + + +def create_confirm_failure_tasks(task_definition, failures, level): + """ + Create tasks to re-run the original task plus tasks to test + each failing test directory and individual path. + + """ + logger.info(f"Confirm Failures task:\n{json.dumps(task_definition, indent=2)}") + + # Operate on a copy of the original task_definition + task_definition = copy_task(task_definition) + + task_name = task_definition["metadata"]["name"] + repeatable_task = False + if ( + "crashtest" in task_name + or "mochitest" in task_name + or "reftest" in task_name + or "xpcshell" in task_name + and "jsreftest" not in task_name + ): + repeatable_task = True + + th_dict = task_definition["extra"]["treeherder"] + symbol = th_dict["symbol"] + is_windows = "windows" in th_dict["machine"]["platform"] + + suite = task_definition["extra"]["suite"] + if "-coverage" in suite: + suite = suite[: suite.index("-coverage")] + is_wpt = "web-platform-tests" in suite + + # command is a copy of task_definition['payload']['command'] from the original task. + # It is used to create the new version containing the + # task_definition['payload']['command'] with repeat_args which is updated every time + # through the failure_group loop. + + command = copy_task(task_definition["payload"]["command"]) + + th_dict["groupSymbol"] = th_dict["groupSymbol"] + "-cf" + th_dict["tier"] = 3 + + if repeatable_task: + task_definition["payload"]["maxRunTime"] = 3600 * 3 + + for failure_group in failures: + if len(failures[failure_group]) == 0: + continue + if failure_group == "dirs": + failure_group_suffix = "-d" + # execute 5 total loops + repeat_args = ["--repeat=4"] if repeatable_task else [] + elif failure_group == "tests": + failure_group_suffix = "-t" + # execute 10 total loops + repeat_args = ["--repeat=9"] if repeatable_task else [] + else: + logger.error( + "create_confirm_failure_tasks: Unknown failure_group {}".format( + failure_group + ) + ) + continue + + if repeat_args: + task_definition["payload"]["command"] = add_args_to_command( + command, extra_args=repeat_args + ) + else: + task_definition["payload"]["command"] = command + + for failure_path in failures[failure_group]: + th_dict["symbol"] = symbol + failure_group_suffix + if is_wpt: + failure_path = "testing/web-platform/tests" + failure_path + if is_windows: + failure_path = "\\".join(failure_path.split("/")) + task_definition["payload"]["env"]["MOZHARNESS_TEST_PATHS"] = json.dumps( + {suite: [failure_path]}, sort_keys=True + ) + + logger.info( + "Creating task for path {} with command {}".format( + failure_path, task_definition["payload"]["command"] + ) + ) + create_task_from_def(task_definition, level) + + +@register_callback_action( + name="confirm-failures", + title="Confirm failures in job", + symbol="cf", + description="Re-run Tests for original manifest, directories or tests for failing tests.", + order=150, + context=[{"kind": "test"}], + schema={ + "type": "object", + "properties": {}, + "additionalProperties": False, + }, +) +def confirm_failures(parameters, graph_config, input, task_group_id, task_id): + task = get_task_definition(task_id) + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + pre_task = full_task_graph.tasks[task["metadata"]["name"]] + + # fix up the task's dependencies, similar to how optimization would + # have done in the decision + dependencies = { + name: label_to_taskid[label] for name, label in pre_task.dependencies.items() + } + + task_definition = resolve_task_references( + pre_task.label, pre_task.task, task_id, decision_task_id, dependencies + ) + task_definition.setdefault("dependencies", []).extend(dependencies.values()) + + failures = get_failures(task_id) + logger.info("confirm_failures: %s" % failures) + create_confirm_failure_tasks(task_definition, failures, parameters["level"]) diff --git a/taskcluster/gecko_taskgraph/actions/create_interactive.py b/taskcluster/gecko_taskgraph/actions/create_interactive.py new file mode 100644 index 0000000000..c8d196782e --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/create_interactive.py @@ -0,0 +1,192 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import os +import re + +import taskcluster_urls +from taskgraph.util.taskcluster import get_root_url, get_task_definition, send_email + +from gecko_taskgraph.actions.registry import register_callback_action +from gecko_taskgraph.actions.util import create_tasks, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + +EMAIL_SUBJECT = "Your Interactive Task for {label}" +EMAIL_CONTENT = """\ +As you requested, Firefox CI has created an interactive task to run {label} +on revision {revision} in {repo}. Click the button below to connect to the +task. You may need to wait for it to begin running. +""" + +### +# Security Concerns +# +# An "interactive task" is, quite literally, shell access to a worker. That +# is limited by being in a Docker container, but we assume that Docker has +# bugs so we do not want to rely on container isolation exclusively. +# +# Interactive tasks should never be allowed on hosts that build binaries +# leading to a release -- level 3 builders. +# +# Users must not be allowed to create interactive tasks for tasks above +# their own level. +# +# Interactive tasks must not have any routes that might make them appear +# in the index to be used by other production tasks. +# +# Interactive tasks should not be able to write to any docker-worker caches. + +SCOPE_WHITELIST = [ + # these are not actually secrets, and just about everything needs them + re.compile(r"^secrets:get:project/taskcluster/gecko/(hgfingerprint|hgmointernal)$"), + # public downloads are OK + re.compile(r"^docker-worker:relengapi-proxy:tooltool.download.public$"), + re.compile(r"^project:releng:services/tooltool/api/download/public$"), + # internal downloads are OK + re.compile(r"^docker-worker:relengapi-proxy:tooltool.download.internal$"), + re.compile(r"^project:releng:services/tooltool/api/download/internal$"), + # private toolchain artifacts from tasks + re.compile(r"^queue:get-artifact:project/gecko/.*$"), + # level-appropriate secrets are generally necessary to run a task; these + # also are "not that secret" - most of them are built into the resulting + # binary and could be extracted by someone with `strings`. + re.compile(r"^secrets:get:project/releng/gecko/build/level-[0-9]/\*"), + # ptracing is generally useful for interactive tasks, too! + re.compile(r"^docker-worker:feature:allowPtrace$"), + # docker-worker capabilities include loopback devices + re.compile(r"^docker-worker:capability:device:.*$"), + re.compile(r"^docker-worker:capability:privileged$"), + re.compile(r"^docker-worker:cache:gecko-level-1-checkouts.*$"), + re.compile(r"^docker-worker:cache:gecko-level-1-tooltool-cache.*$"), +] + + +def context(params): + # available for any docker-worker tasks at levels 1, 2; and for + # test tasks on level 3 (level-3 builders are firewalled off) + if int(params["level"]) < 3: + return [{"worker-implementation": "docker-worker"}] + return [{"worker-implementation": "docker-worker", "kind": "test"}] + # Windows is not supported by one-click loaners yet. See + # https://wiki.mozilla.org/ReleaseEngineering/How_To/Self_Provision_a_TaskCluster_Windows_Instance + # for instructions for using them. + + +@register_callback_action( + title="Create Interactive Task", + name="create-interactive", + symbol="create-inter", + description=("Create a a copy of the task that you can interact with"), + order=50, + context=context, + schema={ + "type": "object", + "properties": { + "notify": { + "type": "string", + "format": "email", + "title": "Who to notify of the pending interactive task", + "description": ( + "Enter your email here to get an email containing a link " + "to interact with the task" + ), + # include a default for ease of users' editing + "default": "noreply@noreply.mozilla.org", + }, + }, + "additionalProperties": False, + }, +) +def create_interactive_action(parameters, graph_config, input, task_group_id, task_id): + # fetch the original task definition from the taskgraph, to avoid + # creating interactive copies of unexpected tasks. Note that this only applies + # to docker-worker tasks, so we can assume the docker-worker payload format. + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + task = get_task_definition(task_id) + label = task["metadata"]["name"] + + def edit(task): + if task.label != label: + return task + task_def = task.task + + # drop task routes (don't index this!) + task_def["routes"] = [] + + # only try this once + task_def["retries"] = 0 + + # short expirations, at least 3 hour maxRunTime + task_def["deadline"] = {"relative-datestamp": "12 hours"} + task_def["created"] = {"relative-datestamp": "0 hours"} + task_def["expires"] = {"relative-datestamp": "1 day"} + + # filter scopes with the SCOPE_WHITELIST + task.task["scopes"] = [ + s + for s in task.task.get("scopes", []) + if any(p.match(s) for p in SCOPE_WHITELIST) + ] + + payload = task_def["payload"] + + # make sure the task runs for long enough.. + payload["maxRunTime"] = max(3600 * 3, payload.get("maxRunTime", 0)) + + # no caches or artifacts + payload["cache"] = {} + payload["artifacts"] = {} + + # enable interactive mode + payload.setdefault("features", {})["interactive"] = True + payload.setdefault("env", {})["TASKCLUSTER_INTERACTIVE"] = "true" + + for key in task_def["payload"]["env"].keys(): + payload["env"][key] = task_def["payload"]["env"].get(key, "") + + return task + + # Create the task and any of its dependencies. This uses a new taskGroupId to avoid + # polluting the existing taskGroup with interactive tasks. + action_task_id = os.environ.get("TASK_ID") + label_to_taskid = create_tasks( + graph_config, + [label], + full_task_graph, + label_to_taskid, + parameters, + decision_task_id=action_task_id, + modifier=edit, + ) + + taskId = label_to_taskid[label] + logger.info(f"Created interactive task {taskId}; sending notification") + + if input and "notify" in input: + email = input["notify"] + # no point sending to a noreply address! + if email == "noreply@noreply.mozilla.org": + return + + info = { + "url": taskcluster_urls.ui(get_root_url(False), f"tasks/{taskId}/connect"), + "label": label, + "revision": parameters["head_rev"], + "repo": parameters["head_repository"], + } + send_email( + email, + subject=EMAIL_SUBJECT.format(**info), + content=EMAIL_CONTENT.format(**info), + link={ + "text": "Connect", + "href": info["url"], + }, + use_proxy=True, + ) diff --git a/taskcluster/gecko_taskgraph/actions/gecko_profile.py b/taskcluster/gecko_taskgraph/actions/gecko_profile.py new file mode 100644 index 0000000000..ce4394e77c --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/gecko_profile.py @@ -0,0 +1,138 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +import requests +from requests.exceptions import HTTPError +from taskgraph.taskgraph import TaskGraph +from taskgraph.util.taskcluster import get_artifact_from_index, get_task_definition + +from gecko_taskgraph.util.taskgraph import find_decision_task + +from .registry import register_callback_action +from .util import combine_task_graph_files, create_tasks + +PUSHLOG_TMPL = "{}/json-pushes?version=2&startID={}&endID={}" +INDEX_TMPL = "gecko.v2.{}.pushlog-id.{}.decision" + +logger = logging.getLogger(__name__) + + +@register_callback_action( + title="GeckoProfile", + name="geckoprofile", + symbol="Gp", + description=( + "Take the label of the current task, " + "and trigger the task with that label " + "on previous pushes in the same project " + "while adding the --gecko-profile cmd arg." + ), + order=200, + context=[{"test-type": "talos"}, {"test-type": "raptor"}], + schema={}, + available=lambda parameters: True, +) +def geckoprofile_action(parameters, graph_config, input, task_group_id, task_id): + task = get_task_definition(task_id) + label = task["metadata"]["name"] + pushes = [] + depth = 2 + end_id = int(parameters["pushlog_id"]) + + while True: + start_id = max(end_id - depth, 0) + pushlog_url = PUSHLOG_TMPL.format( + parameters["head_repository"], start_id, end_id + ) + r = requests.get(pushlog_url) + r.raise_for_status() + pushes = pushes + list(r.json()["pushes"].keys()) + if len(pushes) >= depth: + break + + end_id = start_id - 1 + start_id -= depth + if start_id < 0: + break + + pushes = sorted(pushes)[-depth:] + backfill_pushes = [] + + for push in pushes: + try: + full_task_graph = get_artifact_from_index( + INDEX_TMPL.format(parameters["project"], push), + "public/full-task-graph.json", + ) + _, full_task_graph = TaskGraph.from_json(full_task_graph) + label_to_taskid = get_artifact_from_index( + INDEX_TMPL.format(parameters["project"], push), + "public/label-to-taskid.json", + ) + push_params = get_artifact_from_index( + INDEX_TMPL.format(parameters["project"], push), "public/parameters.yml" + ) + push_decision_task_id = find_decision_task(push_params, graph_config) + except HTTPError as e: + logger.info(f"Skipping {push} due to missing index artifacts! Error: {e}") + continue + + if label in full_task_graph.tasks.keys(): + + def modifier(task): + if task.label != label: + return task + + cmd = task.task["payload"]["command"] + task.task["payload"]["command"] = add_args_to_perf_command( + cmd, ["--gecko-profile"] + ) + task.task["extra"]["treeherder"]["symbol"] += "-p" + task.task["extra"]["treeherder"]["groupName"] += " (profiling)" + return task + + create_tasks( + graph_config, + [label], + full_task_graph, + label_to_taskid, + push_params, + push_decision_task_id, + push, + modifier=modifier, + ) + backfill_pushes.append(push) + else: + logging.info(f"Could not find {label} on {push}. Skipping.") + combine_task_graph_files(backfill_pushes) + + +def add_args_to_perf_command(payload_commands, extra_args=[]): + """ + Add custom command line args to a given command. + args: + payload_commands: the raw command as seen by taskcluster + extra_args: array of args we want to inject + """ + perf_command_idx = -1 # currently, it's the last (or only) command + perf_command = payload_commands[perf_command_idx] + + command_form = "default" + if isinstance(perf_command, str): + # windows has a single command, in long string form + perf_command = perf_command.split(" ") + command_form = "string" + # osx & linux have an array of subarrays + + perf_command.extend(extra_args) + + if command_form == "string": + # pack it back to list + perf_command = " ".join(perf_command) + + payload_commands[perf_command_idx] = perf_command + return payload_commands diff --git a/taskcluster/gecko_taskgraph/actions/merge_automation.py b/taskcluster/gecko_taskgraph/actions/merge_automation.py new file mode 100644 index 0000000000..8b9455536b --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/merge_automation.py @@ -0,0 +1,99 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.parameters import Parameters + +from gecko_taskgraph.actions.registry import register_callback_action +from gecko_taskgraph.decision import taskgraph_decision +from gecko_taskgraph.util.attributes import RELEASE_PROMOTION_PROJECTS + + +def is_release_promotion_available(parameters): + return parameters["project"] in RELEASE_PROMOTION_PROJECTS + + +@register_callback_action( + name="merge-automation", + title="Merge Day Automation", + symbol="${input.behavior}", + description="Merge repository branches.", + permission="merge-automation", + order=500, + context=[], + available=is_release_promotion_available, + schema=lambda graph_config: { + "type": "object", + "properties": { + "force-dry-run": { + "type": "boolean", + "description": "Override other options and do not push changes", + "default": True, + }, + "push": { + "type": "boolean", + "description": "Push changes using to_repo and to_branch", + "default": False, + }, + "behavior": { + "type": "string", + "description": "The type of release promotion to perform.", + "enum": sorted(graph_config["merge-automation"]["behaviors"].keys()), + "default": "central-to-beta", + }, + "from-repo": { + "type": "string", + "description": "The URI of the source repository", + }, + "to-repo": { + "type": "string", + "description": "The push URI of the target repository", + }, + "from-branch": { + "type": "string", + "description": "The fx head of the source, such as central", + }, + "to-branch": { + "type": "string", + "description": "The fx head of the target, such as beta", + }, + "ssh-user-alias": { + "type": "string", + "description": "The alias of an ssh account to use when pushing changes.", + }, + "fetch-version-from": { + "type": "string", + "description": "Path to file used when querying current version.", + }, + }, + "required": ["behavior"], + }, +) +def merge_automation_action(parameters, graph_config, input, task_group_id, task_id): + + # make parameters read-write + parameters = dict(parameters) + + parameters["target_tasks_method"] = "merge_automation" + parameters["merge_config"] = { + "force-dry-run": input.get("force-dry-run", False), + "behavior": input["behavior"], + } + + for field in [ + "from-repo", + "from-branch", + "to-repo", + "to-branch", + "ssh-user-alias", + "push", + "fetch-version-from", + ]: + if input.get(field): + parameters["merge_config"][field] = input[field] + parameters["tasks_for"] = "action" + + # make parameters read-only + parameters = Parameters(**parameters) + + taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters) diff --git a/taskcluster/gecko_taskgraph/actions/openh264.py b/taskcluster/gecko_taskgraph/actions/openh264.py new file mode 100644 index 0000000000..226817f696 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/openh264.py @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels + + +@register_callback_action( + name="openh264", + title="OpenH264 Binaries", + symbol="h264", + description="Action to prepare openh264 binaries for shipping", + context=[], +) +def openh264_action(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + to_run = [ + label + for label, entry in full_task_graph.tasks.items() + if "openh264" in entry.kind + ] + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + ) diff --git a/taskcluster/gecko_taskgraph/actions/purge_caches.py b/taskcluster/gecko_taskgraph/actions/purge_caches.py new file mode 100644 index 0000000000..4905526f6c --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/purge_caches.py @@ -0,0 +1,34 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from taskgraph.util.taskcluster import get_task_definition, purge_cache + +from .registry import register_callback_action + +logger = logging.getLogger(__name__) + + +@register_callback_action( + title="Purge Worker Caches", + name="purge-cache", + symbol="purge-cache", + description=( + "Purge any caches associated with this task " + "across all workers of the same workertype as the task." + ), + order=450, + context=[{"worker-implementation": "docker-worker"}], +) +def purge_caches_action(parameters, graph_config, input, task_group_id, task_id): + task = get_task_definition(task_id) + if task["payload"].get("cache"): + for cache in task["payload"]["cache"]: + purge_cache( + task["provisionerId"], task["workerType"], cache, use_proxy=True + ) + else: + logger.info("Task has no caches. Will not clear anything!") diff --git a/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py b/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py new file mode 100644 index 0000000000..43b26d284d --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py @@ -0,0 +1,77 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from taskgraph.util.taskcluster import get_task_definition + +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + + +@register_callback_action( + title="Raptor Extra Options", + name="raptor-extra-options", + symbol="rxo", + description=( + "Allows the user to rerun raptor-browsertime tasks with additional arguments." + ), + order=200, + context=[{"test-type": "raptor"}], + schema={ + "type": "object", + "properties": { + "extra_options": { + "type": "string", + "default": "", + "description": "A space-delimited string of extra options " + "to be passed into a raptor-browsertime test." + "This also works with options with values, where the values " + "should be set as an assignment e.g. browser-cycles=3 " + "Passing multiple extra options could look something this: " + "`verbose browser-cycles=3` where the test runs with verbose " + "mode on and the browser cycles only 3 times.", + } + }, + }, + available=lambda parameters: True, +) +def raptor_extra_options_action( + parameters, graph_config, input, task_group_id, task_id +): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + task = get_task_definition(task_id) + label = task["metadata"]["name"] + + def modifier(task): + if task.label != label: + return task + + if task.task["payload"]["env"].get("PERF_FLAGS"): + task.task["payload"]["env"]["PERF_FLAGS"] += " " + input.get( + "extra_options" + ) + else: + task.task["payload"]["env"].setdefault( + "PERF_FLAGS", input.get("extra_options") + ) + + task.task["extra"]["treeherder"]["symbol"] += "-rxo" + task.task["extra"]["treeherder"]["groupName"] += " (extra options run)" + return task + + create_tasks( + graph_config, + [label], + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + modifier=modifier, + ) diff --git a/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py b/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py new file mode 100644 index 0000000000..9d8906caf1 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels + + +@register_callback_action( + name="rebuild-cached-tasks", + title="Rebuild Cached Tasks", + symbol="rebuild-cached", + description="Rebuild cached tasks.", + order=1000, + context=[], +) +def rebuild_cached_tasks_action( + parameters, graph_config, input, task_group_id, task_id +): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + cached_tasks = [ + label + for label, task in full_task_graph.tasks.items() + if task.attributes.get("cached_task", False) + ] + if cached_tasks: + create_tasks( + graph_config, + cached_tasks, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + ) diff --git a/taskcluster/gecko_taskgraph/actions/registry.py b/taskcluster/gecko_taskgraph/actions/registry.py new file mode 100644 index 0000000000..0c99e68d20 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/registry.py @@ -0,0 +1,371 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import re +from collections import namedtuple +from types import FunctionType + +from mozbuild.util import memoize +from taskgraph import create +from taskgraph.config import load_graph_config +from taskgraph.parameters import Parameters +from taskgraph.util import taskcluster, yaml +from taskgraph.util.python_path import import_sibling_modules + +from gecko_taskgraph.util import hash + +actions = [] +callbacks = {} + +Action = namedtuple("Action", ["order", "cb_name", "permission", "action_builder"]) + + +def is_json(data): + """Return ``True``, if ``data`` is a JSON serializable data structure.""" + try: + json.dumps(data) + except ValueError: + return False + return True + + +@memoize +def read_taskcluster_yml(filename): + """Load and parse .taskcluster.yml, memoized to save some time""" + return yaml.load_yaml(filename) + + +@memoize +def hash_taskcluster_yml(filename): + """ + Generate a hash of the given .taskcluster.yml. This is the first 10 digits + of the sha256 of the file's content, and is used by administrative scripts + to create a hook based on this content. + """ + return hash.hash_path(filename)[:10] + + +def register_callback_action( + name, + title, + symbol, + description, + order=10000, + context=[], + available=lambda parameters: True, + schema=None, + permission="generic", + cb_name=None, +): + """ + Register an action callback that can be triggered from supporting + user interfaces, such as Treeherder. + + This function is to be used as a decorator for a callback that takes + parameters as follows: + + ``parameters``: + Decision task parameters, see ``taskgraph.parameters.Parameters``. + ``input``: + Input matching specified JSON schema, ``None`` if no ``schema`` + parameter is given to ``register_callback_action``. + ``task_group_id``: + The id of the task-group this was triggered for. + ``task_id`` and `task``: + task identifier and task definition for task the action was triggered + for, ``None`` if no ``context`` parameters was given to + ``register_callback_action``. + + Parameters + ---------- + name : str + An identifier for this action, used by UIs to find the action. + title : str + A human readable title for the action to be used as label on a button + or text on a link for triggering the action. + symbol : str + Treeherder symbol for the action callback, this is the symbol that the + task calling your callback will be displayed as. This is usually 1-3 + letters abbreviating the action title. + description : str + A human readable description of the action in **markdown**. + This will be display as tooltip and in dialog window when the action + is triggered. This is a good place to describe how to use the action. + order : int + Order of the action in menus, this is relative to the ``order`` of + other actions declared. + context : list of dict + List of tag-sets specifying which tasks the action is can take as input. + If no tag-sets is specified as input the action is related to the + entire task-group, and won't be triggered with a given task. + + Otherwise, if ``context = [{'k': 'b', 'p': 'l'}, {'k': 't'}]`` will only + be displayed in the context menu for tasks that has + ``task.tags.k == 'b' && task.tags.p = 'l'`` or ``task.tags.k = 't'``. + Esentially, this allows filtering on ``task.tags``. + + If this is a function, it is given the decision parameters and must return + a value of the form described above. + available : function + An optional function that given decision parameters decides if the + action is available. Defaults to a function that always returns ``True``. + schema : dict + JSON schema specifying input accepted by the action. + This is optional and can be left ``null`` if no input is taken. + permission : string + This defaults to ``generic`` and needs to be set for actions that need + additional permissions. It appears appears in ci-configuration and + various role and hook + names. + cb_name : string + The name under which this function should be registered, defaulting to + `name`. Unlike `name`, which can appear multiple times, cb_name must be + unique among all registered callbacks. + + Returns + ------- + function + To be used as decorator for the callback function. + """ + mem = {"registered": False} # workaround nonlocal missing in 2.x + + assert isinstance(title, str), "title must be a string" + assert isinstance(description, str), "description must be a string" + title = title.strip() + description = description.strip() + + if not cb_name: + cb_name = name + + # ensure that context is callable + if not callable(context): + context_value = context + + # Because of the same name as param it must be redefined + # pylint: disable=E0102 + def context(params): + return context_value # noqa + + def register_callback(cb): + assert isinstance(name, str), "name must be a string" + assert isinstance(order, int), "order must be an integer" + assert callable(schema) or is_json( + schema + ), "schema must be a JSON compatible object" + assert isinstance(cb, FunctionType), "callback must be a function" + # Allow for json-e > 25 chars in the symbol. + if "$" not in symbol: + assert 1 <= len(symbol) <= 25, "symbol must be between 1 and 25 characters" + assert isinstance(symbol, str), "symbol must be a string" + + assert not mem[ + "registered" + ], "register_callback_action must be used as decorator" + assert cb_name not in callbacks, "callback name {} is not unique".format( + cb_name + ) + + def action_builder(parameters, graph_config, decision_task_id): + if not available(parameters): + return None + + # gather up the common decision-task-supplied data for this action + repo_param = "{}head_repository".format( + graph_config["project-repo-param-prefix"] + ) + repository = { + "url": parameters[repo_param], + "project": parameters["project"], + "level": parameters["level"], + } + + revision = parameters[ + "{}head_rev".format(graph_config["project-repo-param-prefix"]) + ] + base_revision = parameters[ + "{}base_rev".format(graph_config["project-repo-param-prefix"]) + ] + push = { + "owner": "mozilla-taskcluster-maintenance@mozilla.com", + "pushlog_id": parameters["pushlog_id"], + "revision": revision, + "base_revision": base_revision, + } + + match = re.match( + r"https://(hg.mozilla.org)/(.*?)/?$", parameters[repo_param] + ) + if not match: + raise Exception(f"Unrecognized {repo_param}") + action = { + "name": name, + "title": title, + "description": description, + # target taskGroupId (the task group this decision task is creating) + "taskGroupId": decision_task_id, + "cb_name": cb_name, + "symbol": symbol, + } + + rv = { + "name": name, + "title": title, + "description": description, + "context": context(parameters), + } + if schema: + rv["schema"] = ( + schema(graph_config=graph_config) if callable(schema) else schema + ) + + trustDomain = graph_config["trust-domain"] + level = parameters["level"] + tcyml_hash = hash_taskcluster_yml(graph_config.taskcluster_yml) + + # the tcyml_hash is prefixed with `/` in the hookId, so users will be granted + # hooks:trigger-hook:project-gecko/in-tree-action-3-myaction/*; if another + # action was named `myaction/release`, then the `*` in the scope would also + # match that action. To prevent such an accident, we prohibit `/` in hook + # names. + if "/" in permission: + raise Exception("`/` is not allowed in action names; use `-`") + + rv.update( + { + "kind": "hook", + "hookGroupId": f"project-{trustDomain}", + "hookId": "in-tree-action-{}-{}/{}".format( + level, permission, tcyml_hash + ), + "hookPayload": { + # provide the decision-task parameters as context for triggerHook + "decision": { + "action": action, + "repository": repository, + "push": push, + }, + # and pass everything else through from our own context + "user": { + "input": {"$eval": "input"}, + "taskId": {"$eval": "taskId"}, # target taskId (or null) + "taskGroupId": { + "$eval": "taskGroupId" + }, # target task group + }, + }, + "extra": { + "actionPerm": permission, + }, + } + ) + + return rv + + actions.append(Action(order, cb_name, permission, action_builder)) + + mem["registered"] = True + callbacks[cb_name] = cb + return cb + + return register_callback + + +def render_actions_json(parameters, graph_config, decision_task_id): + """ + Render JSON object for the ``public/actions.json`` artifact. + + Parameters + ---------- + parameters : taskgraph.parameters.Parameters + Decision task parameters. + + Returns + ------- + dict + JSON object representation of the ``public/actions.json`` artifact. + """ + assert isinstance(parameters, Parameters), "requires instance of Parameters" + actions = [] + for action in sorted(_get_actions(graph_config), key=lambda action: action.order): + action = action.action_builder(parameters, graph_config, decision_task_id) + if action: + assert is_json(action), "action must be a JSON compatible object" + actions.append(action) + return { + "version": 1, + "variables": {}, + "actions": actions, + } + + +def sanity_check_task_scope(callback, parameters, graph_config): + """ + If this action is not generic, then verify that this task has the necessary + scope to run the action. This serves as a backstop preventing abuse by + running non-generic actions using generic hooks. While scopes should + prevent serious damage from such abuse, it's never a valid thing to do. + """ + for action in _get_actions(graph_config): + if action.cb_name == callback: + break + else: + raise Exception(f"No action with cb_name {callback}") + + repo_param = "{}head_repository".format(graph_config["project-repo-param-prefix"]) + head_repository = parameters[repo_param] + assert head_repository.startswith("https://hg.mozilla.org/") + expected_scope = "assume:repo:{}:action:{}".format( + head_repository[8:], action.permission + ) + + # the scope should appear literally; no need for a satisfaction check. The use of + # get_current_scopes here calls the auth service through the Taskcluster Proxy, giving + # the precise scopes available to this task. + if expected_scope not in taskcluster.get_current_scopes(): + raise Exception(f"Expected task scope {expected_scope} for this action") + + +def trigger_action_callback( + task_group_id, task_id, input, callback, parameters, root, test=False +): + """ + Trigger action callback with the given inputs. If `test` is true, then run + the action callback in testing mode, without actually creating tasks. + """ + graph_config = load_graph_config(root) + graph_config.register() + callbacks = _get_callbacks(graph_config) + cb = callbacks.get(callback, None) + if not cb: + raise Exception( + "Unknown callback: {}. Known callbacks: {}".format( + callback, ", ".join(callbacks) + ) + ) + + if test: + create.testing = True + taskcluster.testing = True + + if not test: + sanity_check_task_scope(callback, parameters, graph_config) + + cb(Parameters(**parameters), graph_config, input, task_group_id, task_id) + + +def _load(graph_config): + # Load all modules from this folder, relying on the side-effects of register_ + # functions to populate the action registry. + import_sibling_modules(exceptions=("util.py",)) + return callbacks, actions + + +def _get_callbacks(graph_config): + return _load(graph_config)[0] + + +def _get_actions(graph_config): + return _load(graph_config)[1] diff --git a/taskcluster/gecko_taskgraph/actions/release_promotion.py b/taskcluster/gecko_taskgraph/actions/release_promotion.py new file mode 100644 index 0000000000..9d6b7ad0b7 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/release_promotion.py @@ -0,0 +1,426 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os + +import requests +from taskgraph.parameters import Parameters +from taskgraph.taskgraph import TaskGraph +from taskgraph.util.taskcluster import get_artifact, list_task_group_incomplete_tasks + +from gecko_taskgraph.actions.registry import register_callback_action +from gecko_taskgraph.decision import taskgraph_decision +from gecko_taskgraph.util.attributes import RELEASE_PROMOTION_PROJECTS, release_level +from gecko_taskgraph.util.partials import populate_release_history +from gecko_taskgraph.util.partners import ( + fix_partner_config, + get_partner_config_by_url, + get_partner_url_config, + get_token, +) +from gecko_taskgraph.util.taskgraph import ( + find_decision_task, + find_existing_tasks_from_previous_kinds, +) + +RELEASE_PROMOTION_SIGNOFFS = ("mar-signing",) + + +def is_release_promotion_available(parameters): + return parameters["project"] in RELEASE_PROMOTION_PROJECTS + + +def get_partner_config(partner_url_config, github_token): + partner_config = {} + for kind, url in partner_url_config.items(): + if url: + partner_config[kind] = get_partner_config_by_url(url, kind, github_token) + return partner_config + + +def get_signoff_properties(): + props = {} + for signoff in RELEASE_PROMOTION_SIGNOFFS: + props[signoff] = { + "type": "string", + } + return props + + +def get_required_signoffs(input, parameters): + input_signoffs = set(input.get("required_signoffs", [])) + params_signoffs = set(parameters["required_signoffs"] or []) + return sorted(list(input_signoffs | params_signoffs)) + + +def get_signoff_urls(input, parameters): + signoff_urls = parameters["signoff_urls"] + signoff_urls.update(input.get("signoff_urls", {})) + return signoff_urls + + +def get_flavors(graph_config, param): + """ + Get all flavors with the given parameter enabled. + """ + promotion_flavors = graph_config["release-promotion"]["flavors"] + return sorted( + flavor + for (flavor, config) in promotion_flavors.items() + if config.get(param, False) + ) + + +@register_callback_action( + name="release-promotion", + title="Release Promotion", + symbol="${input.release_promotion_flavor}", + description="Promote a release.", + permission="release-promotion", + order=500, + context=[], + available=is_release_promotion_available, + schema=lambda graph_config: { + "type": "object", + "properties": { + "build_number": { + "type": "integer", + "default": 1, + "minimum": 1, + "title": "The release build number", + "description": ( + "The release build number. Starts at 1 per " + "release version, and increments on rebuild." + ), + }, + "do_not_optimize": { + "type": "array", + "description": ( + "Optional: a list of labels to avoid optimizing out " + "of the graph (to force a rerun of, say, " + "funsize docker-image tasks)." + ), + "items": { + "type": "string", + }, + }, + "revision": { + "type": "string", + "title": "Optional: revision to promote", + "description": ( + "Optional: the revision to promote. If specified, " + "and `previous_graph_kinds is not specified, find the " + "push graph to promote based on the revision." + ), + }, + "release_promotion_flavor": { + "type": "string", + "description": "The flavor of release promotion to perform.", + "default": "FILL ME OUT", + "enum": sorted(graph_config["release-promotion"]["flavors"].keys()), + }, + "rebuild_kinds": { + "type": "array", + "description": ( + "Optional: an array of kinds to ignore from the previous " + "graph(s)." + ), + "items": { + "type": "string", + }, + }, + "previous_graph_ids": { + "type": "array", + "description": ( + "Optional: an array of taskIds of decision or action " + "tasks from the previous graph(s) to use to populate " + "our `previous_graph_kinds`." + ), + "items": { + "type": "string", + }, + }, + "version": { + "type": "string", + "description": ( + "Optional: override the version for release promotion. " + "Occasionally we'll land a taskgraph fix in a later " + "commit, but want to act on a build from a previous " + "commit. If a version bump has landed in the meantime, " + "relying on the in-tree version will break things." + ), + "default": "", + }, + "next_version": { + "type": "string", + "description": ( + "Next version. Required in the following flavors: " + "{}".format(get_flavors(graph_config, "version-bump")) + ), + "default": "", + }, + # Example: + # 'partial_updates': { + # '38.0': { + # 'buildNumber': 1, + # 'locales': ['de', 'en-GB', 'ru', 'uk', 'zh-TW'] + # }, + # '37.0': { + # 'buildNumber': 2, + # 'locales': ['de', 'en-GB', 'ru', 'uk'] + # } + # } + "partial_updates": { + "type": "object", + "description": ( + "Partial updates. Required in the following flavors: " + "{}".format(get_flavors(graph_config, "partial-updates")) + ), + "default": {}, + "additionalProperties": { + "type": "object", + "properties": { + "buildNumber": { + "type": "number", + }, + "locales": { + "type": "array", + "items": { + "type": "string", + }, + }, + }, + "required": [ + "buildNumber", + "locales", + ], + "additionalProperties": False, + }, + }, + "release_eta": { + "type": "string", + "default": "", + }, + "release_enable_partner_repack": { + "type": "boolean", + "default": False, + "description": "Toggle for creating partner repacks", + }, + "release_enable_partner_attribution": { + "type": "boolean", + "default": False, + "description": "Toggle for creating partner attribution", + }, + "release_partner_build_number": { + "type": "integer", + "default": 1, + "minimum": 1, + "description": ( + "The partner build number. This translates to, e.g. " + "`v1` in the path. We generally only have to " + "bump this on off-cycle partner rebuilds." + ), + }, + "release_partners": { + "type": "array", + "description": ( + "A list of partners to repack, or if null or empty then use " + "the current full set" + ), + "items": { + "type": "string", + }, + }, + "release_partner_config": { + "type": "object", + "description": "Partner configuration to use for partner repacks.", + "properties": {}, + "additionalProperties": True, + }, + "release_enable_emefree": { + "type": "boolean", + "default": False, + "description": "Toggle for creating EME-free repacks", + }, + "required_signoffs": { + "type": "array", + "description": ("The flavor of release promotion to perform."), + "items": { + "enum": RELEASE_PROMOTION_SIGNOFFS, + }, + }, + "signoff_urls": { + "type": "object", + "default": {}, + "additionalProperties": False, + "properties": get_signoff_properties(), + }, + }, + "required": ["release_promotion_flavor", "build_number"], + }, +) +def release_promotion_action(parameters, graph_config, input, task_group_id, task_id): + release_promotion_flavor = input["release_promotion_flavor"] + promotion_config = graph_config["release-promotion"]["flavors"][ + release_promotion_flavor + ] + release_history = {} + product = promotion_config["product"] + + next_version = str(input.get("next_version") or "") + if promotion_config.get("version-bump", False): + # We force str() the input, hence the 'None' + if next_version in ["", "None"]: + raise Exception( + "`next_version` property needs to be provided for `{}` " + "target.".format(release_promotion_flavor) + ) + + if promotion_config.get("partial-updates", False): + partial_updates = input.get("partial_updates", {}) + if not partial_updates and release_level(parameters["project"]) == "production": + raise Exception( + "`partial_updates` property needs to be provided for `{}`" + "target.".format(release_promotion_flavor) + ) + balrog_prefix = product.title() + os.environ["PARTIAL_UPDATES"] = json.dumps(partial_updates, sort_keys=True) + release_history = populate_release_history( + balrog_prefix, parameters["project"], partial_updates=partial_updates + ) + + target_tasks_method = promotion_config["target-tasks-method"].format( + project=parameters["project"] + ) + rebuild_kinds = input.get( + "rebuild_kinds", promotion_config.get("rebuild-kinds", []) + ) + do_not_optimize = input.get( + "do_not_optimize", promotion_config.get("do-not-optimize", []) + ) + + # Make sure no pending tasks remain from a previous run + own_task_id = os.environ.get("TASK_ID", "") + try: + for t in list_task_group_incomplete_tasks(own_task_id): + if t == own_task_id: + continue + raise Exception( + "task group has unexpected pre-existing incomplete tasks (e.g. {})".format( + t + ) + ) + except requests.exceptions.HTTPError as e: + # 404 means the task group doesn't exist yet, and we're fine + if e.response.status_code != 404: + raise + + # Build previous_graph_ids from ``previous_graph_ids``, ``revision``, + # or the action parameters. + previous_graph_ids = input.get("previous_graph_ids") + if not previous_graph_ids: + revision = input.get("revision") + if revision: + head_rev_param = "{}head_rev".format( + graph_config["project-repo-param-prefix"] + ) + push_parameters = { + head_rev_param: revision, + "project": parameters["project"], + } + else: + push_parameters = parameters + previous_graph_ids = [find_decision_task(push_parameters, graph_config)] + + # Download parameters from the first decision task + parameters = get_artifact(previous_graph_ids[0], "public/parameters.yml") + # Download and combine full task graphs from each of the previous_graph_ids. + # Sometimes previous relpro action tasks will add tasks, like partials, + # that didn't exist in the first full_task_graph, so combining them is + # important. The rightmost graph should take precedence in the case of + # conflicts. + combined_full_task_graph = {} + for graph_id in previous_graph_ids: + full_task_graph = get_artifact(graph_id, "public/full-task-graph.json") + combined_full_task_graph.update(full_task_graph) + _, combined_full_task_graph = TaskGraph.from_json(combined_full_task_graph) + parameters["existing_tasks"] = find_existing_tasks_from_previous_kinds( + combined_full_task_graph, previous_graph_ids, rebuild_kinds + ) + parameters["do_not_optimize"] = do_not_optimize + parameters["target_tasks_method"] = target_tasks_method + parameters["build_number"] = int(input["build_number"]) + parameters["next_version"] = next_version + parameters["release_history"] = release_history + if promotion_config.get("is-rc"): + parameters["release_type"] += "-rc" + parameters["release_eta"] = input.get("release_eta", "") + parameters["release_product"] = product + # When doing staging releases on try, we still want to re-use tasks from + # previous graphs. + parameters["optimize_target_tasks"] = True + + if release_promotion_flavor == "promote_firefox_partner_repack": + release_enable_partner_repack = True + release_enable_partner_attribution = False + release_enable_emefree = False + elif release_promotion_flavor == "promote_firefox_partner_attribution": + release_enable_partner_repack = False + release_enable_partner_attribution = True + release_enable_emefree = False + else: + # for promotion or ship phases, we use the action input to turn the repacks/attribution off + release_enable_partner_repack = input["release_enable_partner_repack"] + release_enable_partner_attribution = input["release_enable_partner_attribution"] + release_enable_emefree = input["release_enable_emefree"] + + partner_url_config = get_partner_url_config(parameters, graph_config) + if ( + release_enable_partner_repack + and not partner_url_config["release-partner-repack"] + ): + raise Exception("Can't enable partner repacks when no config url found") + if ( + release_enable_partner_attribution + and not partner_url_config["release-partner-attribution"] + ): + raise Exception("Can't enable partner attribution when no config url found") + if release_enable_emefree and not partner_url_config["release-eme-free-repack"]: + raise Exception("Can't enable EMEfree repacks when no config url found") + parameters["release_enable_partner_repack"] = release_enable_partner_repack + parameters[ + "release_enable_partner_attribution" + ] = release_enable_partner_attribution + parameters["release_enable_emefree"] = release_enable_emefree + + partner_config = input.get("release_partner_config") + if not partner_config and any( + [ + release_enable_partner_repack, + release_enable_partner_attribution, + release_enable_emefree, + ] + ): + github_token = get_token(parameters) + partner_config = get_partner_config(partner_url_config, github_token) + if partner_config: + parameters["release_partner_config"] = fix_partner_config(partner_config) + parameters["release_partners"] = input.get("release_partners") + if input.get("release_partner_build_number"): + parameters["release_partner_build_number"] = input[ + "release_partner_build_number" + ] + + if input["version"]: + parameters["version"] = input["version"] + + parameters["required_signoffs"] = get_required_signoffs(input, parameters) + parameters["signoff_urls"] = get_signoff_urls(input, parameters) + + # make parameters read-only + parameters = Parameters(**parameters) + + taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters) diff --git a/taskcluster/gecko_taskgraph/actions/retrigger.py b/taskcluster/gecko_taskgraph/actions/retrigger.py new file mode 100644 index 0000000000..fc8c05c83f --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/retrigger.py @@ -0,0 +1,301 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import sys +import textwrap + +from taskgraph.util.taskcluster import get_task_definition, rerun_task + +from gecko_taskgraph.util.taskcluster import state_task + +from .registry import register_callback_action +from .util import ( + combine_task_graph_files, + create_task_from_def, + create_tasks, + fetch_graph_and_labels, + get_tasks_with_downstream, + relativize_datestamps, +) + +logger = logging.getLogger(__name__) + +RERUN_STATES = ("exception", "failed") + + +def _should_retrigger(task_graph, label): + """ + Return whether a given task in the taskgraph should be retriggered. + + This handles the case where the task isn't there by assuming it should not be. + """ + if label not in task_graph: + logger.info( + "Task {} not in full taskgraph, assuming task should not be retriggered.".format( + label + ) + ) + return False + return task_graph[label].attributes.get("retrigger", False) + + +@register_callback_action( + title="Retrigger", + name="retrigger", + symbol="rt", + cb_name="retrigger-decision", + description=textwrap.dedent( + """\ + Create a clone of the task (retriggering decision, action, and cron tasks requires + special scopes).""" + ), + order=11, + context=[ + {"kind": "decision-task"}, + {"kind": "action-callback"}, + {"kind": "cron-task"}, + {"action": "backfill-task"}, + ], +) +def retrigger_decision_action(parameters, graph_config, input, task_group_id, task_id): + """For a single task, we try to just run exactly the same task once more. + It's quite possible that we don't have the scopes to do so (especially for + an action), but this is best-effort.""" + + # make all of the timestamps relative; they will then be turned back into + # absolute timestamps relative to the current time. + task = get_task_definition(task_id) + task = relativize_datestamps(task) + create_task_from_def( + task, parameters["level"], action_tag="retrigger-decision-task" + ) + + +@register_callback_action( + title="Retrigger", + name="retrigger", + symbol="rt", + description=("Create a clone of the task."), + order=19, # must be greater than other orders in this file, as this is the fallback version + context=[{"retrigger": "true"}], + schema={ + "type": "object", + "properties": { + "downstream": { + "type": "boolean", + "description": ( + "If true, downstream tasks from this one will be cloned as well. " + "The dependencies will be updated to work with the new task at the root." + ), + "default": False, + }, + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 100, + "title": "Times", + "description": "How many times to run each task.", + }, + }, + }, +) +@register_callback_action( + title="Retrigger (disabled)", + name="retrigger", + cb_name="retrigger-disabled", + symbol="rt", + description=( + "Create a clone of the task.\n\n" + "This type of task should typically be re-run instead of re-triggered." + ), + order=20, # must be greater than other orders in this file, as this is the fallback version + context=[{}], + schema={ + "type": "object", + "properties": { + "downstream": { + "type": "boolean", + "description": ( + "If true, downstream tasks from this one will be cloned as well. " + "The dependencies will be updated to work with the new task at the root." + ), + "default": False, + }, + "times": { + "type": "integer", + "default": 1, + "minimum": 1, + "maximum": 100, + "title": "Times", + "description": "How many times to run each task.", + }, + "force": { + "type": "boolean", + "default": False, + "description": ( + "This task should not be re-triggered. " + "This can be overridden by passing `true` here." + ), + }, + }, + }, +) +def retrigger_action(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + task = get_task_definition(task_id) + label = task["metadata"]["name"] + + with_downstream = " " + to_run = [label] + + if not input.get("force", None) and not _should_retrigger(full_task_graph, label): + logger.info( + "Not retriggering task {}, task should not be retrigged " + "and force not specified.".format(label) + ) + sys.exit(1) + + if input.get("downstream"): + to_run = get_tasks_with_downstream(to_run, full_task_graph, label_to_taskid) + with_downstream = " (with downstream) " + + times = input.get("times", 1) + for i in range(times): + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + i, + action_tag="retrigger-task", + ) + + logger.info(f"Scheduled {label}{with_downstream}(time {i + 1}/{times})") + combine_task_graph_files(list(range(times))) + + +@register_callback_action( + title="Rerun", + name="rerun", + symbol="rr", + description=( + "Rerun a task.\n\n" + "This only works on failed or exception tasks in the original taskgraph," + " and is CoT friendly." + ), + order=300, + context=[{}], + schema={"type": "object", "properties": {}}, +) +def rerun_action(parameters, graph_config, input, task_group_id, task_id): + task = get_task_definition(task_id) + parameters = dict(parameters) + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + label = task["metadata"]["name"] + if task_id not in label_to_taskid.values(): + logger.error( + "Refusing to rerun {}: taskId {} not in decision task {} label_to_taskid!".format( + label, task_id, decision_task_id + ) + ) + + _rerun_task(task_id, label) + + +def _rerun_task(task_id, label): + state = state_task(task_id) + if state not in RERUN_STATES: + logger.warning( + "No need to rerun {}: state '{}' not in {}!".format( + label, state, RERUN_STATES + ) + ) + return + rerun_task(task_id) + logger.info(f"Reran {label}") + + +@register_callback_action( + title="Retrigger", + name="retrigger-multiple", + symbol="rt", + description=("Create a clone of the task."), + context=[], + schema={ + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "tasks": { + "type": "array", + "description": "An array of task labels", + "items": {"type": "string"}, + }, + "times": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "title": "Times", + "description": "How many times to run each task.", + }, + "additionalProperties": False, + }, + }, + "additionalProperties": False, + }, + }, +) +def retrigger_multiple(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + suffixes = [] + for i, request in enumerate(input.get("requests", [])): + times = request.get("times", 1) + rerun_tasks = [ + label + for label in request.get("tasks") + if not _should_retrigger(full_task_graph, label) + ] + retrigger_tasks = [ + label + for label in request.get("tasks") + if _should_retrigger(full_task_graph, label) + ] + + for label in rerun_tasks: + # XXX we should not re-run tasks pulled in from other pushes + # In practice, this shouldn't matter, as only completed tasks + # are pulled in from other pushes and treeherder won't pass + # those labels. + _rerun_task(label_to_taskid[label], label) + + for j in range(times): + suffix = f"{i}-{j}" + suffixes.append(suffix) + create_tasks( + graph_config, + retrigger_tasks, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + suffix, + action_tag="retrigger-multiple-task", + ) + + if suffixes: + combine_task_graph_files(suffixes) diff --git a/taskcluster/gecko_taskgraph/actions/retrigger_custom.py b/taskcluster/gecko_taskgraph/actions/retrigger_custom.py new file mode 100644 index 0000000000..677cb00a11 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/retrigger_custom.py @@ -0,0 +1,185 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging + +from taskgraph.util.parameterization import resolve_task_references +from taskgraph.util.taskcluster import get_task_definition + +from .registry import register_callback_action +from .util import create_task_from_def, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + +# Properties available for custom retrigger of any supported test suites +basic_properties = { + "path": { + "type": "string", + "maxLength": 255, + "default": "", + "title": "Path name", + "description": "Path of test(s) to retrigger", + }, + "logLevel": { + "type": "string", + "enum": ["debug", "info", "warning", "error", "critical"], + "default": "info", + "title": "Log level", + "description": "Log level for output (INFO is normal, DEBUG gives more detail)", + }, + "environment": { + "type": "object", + "default": {"MOZ_LOG": ""}, + "title": "Extra environment variables", + "description": "Extra environment variables to use for this run", + "additionalProperties": {"type": "string"}, + }, +} + +# Additional properties available for custom retrigger of some additional test suites +extended_properties = basic_properties.copy() +extended_properties.update( + { + "runUntilFail": { + "type": "boolean", + "default": False, + "title": "Run until failure", + "description": ( + "Runs the specified set of tests repeatedly " + "until failure (up to REPEAT times)" + ), + }, + "repeat": { + "type": "integer", + "default": 0, + "minimum": 0, + "title": "Repeat test(s) N times", + "description": ( + "Run test(s) repeatedly (usually used in " + "conjunction with runUntilFail)" + ), + }, + "preferences": { + "type": "object", + "default": {"remote.log.level": "Info"}, + "title": "Extra gecko (about:config) preferences", + "description": "Extra gecko (about:config) preferences to use for this run", + "additionalProperties": {"type": "string"}, + }, + } +) + + +@register_callback_action( + name="retrigger-custom", + title="Retrigger task with custom parameters", + symbol="rt", + description="Retriggers the specified task with custom environment and parameters", + context=[ + {"test-type": "mochitest", "worker-implementation": "docker-worker"}, + {"test-type": "reftest", "worker-implementation": "docker-worker"}, + {"test-type": "geckoview-junit", "worker-implementation": "docker-worker"}, + ], + order=10, + schema={ + "type": "object", + "properties": extended_properties, + "additionalProperties": False, + "required": ["path"], + }, +) +def extended_custom_retrigger_action( + parameters, graph_config, input, task_group_id, task_id +): + handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id) + + +@register_callback_action( + name="retrigger-custom (gtest)", + title="Retrigger gtest task with custom parameters", + symbol="rt", + description="Retriggers the specified task with custom environment and parameters", + context=[{"test-type": "gtest", "worker-implementation": "docker-worker"}], + order=10, + schema={ + "type": "object", + "properties": basic_properties, + "additionalProperties": False, + "required": ["path"], + }, +) +def basic_custom_retrigger_action_basic( + parameters, graph_config, input, task_group_id, task_id +): + handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id) + + +def handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id): + task = get_task_definition(task_id) + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + + pre_task = full_task_graph.tasks[task["metadata"]["name"]] + + # fix up the task's dependencies, similar to how optimization would + # have done in the decision + dependencies = { + name: label_to_taskid[label] for name, label in pre_task.dependencies.items() + } + new_task_definition = resolve_task_references( + pre_task.label, pre_task.task, task_id, decision_task_id, dependencies + ) + new_task_definition.setdefault("dependencies", []).extend(dependencies.values()) + + # don't want to run mozharness tests, want a custom mach command instead + new_task_definition["payload"]["command"] += ["--no-run-tests"] + + custom_mach_command = [task["tags"]["test-type"]] + + # mochitests may specify a flavor + if new_task_definition["payload"]["env"].get("MOCHITEST_FLAVOR"): + custom_mach_command += [ + "--keep-open=false", + "-f", + new_task_definition["payload"]["env"]["MOCHITEST_FLAVOR"], + ] + + enable_e10s = json.loads( + new_task_definition["payload"]["env"].get("ENABLE_E10S", "true") + ) + if not enable_e10s: + custom_mach_command += ["--disable-e10s"] + + custom_mach_command += [ + "--log-tbpl=-", + "--log-tbpl-level={}".format(input.get("logLevel", "debug")), + ] + if input.get("runUntilFail"): + custom_mach_command += ["--run-until-failure"] + if input.get("repeat"): + custom_mach_command += ["--repeat", str(input.get("repeat", 30))] + + # add any custom gecko preferences + for (key, val) in input.get("preferences", {}).items(): + custom_mach_command += ["--setpref", f"{key}={val}"] + + custom_mach_command += [input["path"]] + new_task_definition["payload"]["env"]["CUSTOM_MACH_COMMAND"] = " ".join( + custom_mach_command + ) + + # update environment + new_task_definition["payload"]["env"].update(input.get("environment", {})) + + # tweak the treeherder symbol + new_task_definition["extra"]["treeherder"]["symbol"] += "-custom" + + logging.info("New task definition: %s", new_task_definition) + + create_task_from_def( + new_task_definition, parameters["level"], action_tag="retrigger-custom-task" + ) diff --git a/taskcluster/gecko_taskgraph/actions/run_missing_tests.py b/taskcluster/gecko_taskgraph/actions/run_missing_tests.py new file mode 100644 index 0000000000..92310445f3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/run_missing_tests.py @@ -0,0 +1,62 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from taskgraph.util.taskcluster import get_artifact + +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels + +logger = logging.getLogger(__name__) + + +@register_callback_action( + name="run-missing-tests", + title="Run Missing Tests", + symbol="rmt", + description=( + "Run tests in the selected push that were optimized away, usually by SETA." + "\n" + "This action is for use on pushes that will be merged into another branch," + "to check that optimization hasn't hidden any failures." + ), + order=250, + context=[], # Applies to decision task +) +def run_missing_tests(parameters, graph_config, input, task_group_id, task_id): + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + target_tasks = get_artifact(decision_task_id, "public/target-tasks.json") + + # The idea here is to schedule all tasks of the `test` kind that were + # targetted but did not appear in the final task-graph -- those were the + # optimized tasks. + to_run = [] + already_run = 0 + for label in target_tasks: + task = full_task_graph.tasks[label] + if task.kind != "test": + continue # not a test + if label in label_to_taskid: + already_run += 1 + continue + to_run.append(label) + + create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + ) + + logger.info( + "Out of {} test tasks, {} already existed and the action created {}".format( + already_run + len(to_run), already_run, len(to_run) + ) + ) diff --git a/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py b/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py new file mode 100644 index 0000000000..e0057da9a6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py @@ -0,0 +1,45 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.parameters import Parameters + +from gecko_taskgraph.actions.registry import register_callback_action +from gecko_taskgraph.decision import taskgraph_decision + + +@register_callback_action( + title="Push scriptworker canaries.", + name="scriptworker-canary", + symbol="scriptworker-canary", + description="Trigger scriptworker-canary pushes for the given scriptworkers.", + schema={ + "type": "object", + "properties": { + "scriptworkers": { + "type": "array", + "description": "List of scriptworker types to run canaries for.", + "items": {"type": "string"}, + }, + }, + }, + order=1000, + permission="scriptworker-canary", + context=[], +) +def scriptworker_canary(parameters, graph_config, input, task_group_id, task_id): + scriptworkers = input["scriptworkers"] + + # make parameters read-write + parameters = dict(parameters) + + parameters["target_tasks_method"] = "scriptworker_canary" + parameters["try_task_config"] = { + "scriptworker-canary-workers": scriptworkers, + } + parameters["tasks_for"] = "action" + + # make parameters read-only + parameters = Parameters(**parameters) + + taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters) diff --git a/taskcluster/gecko_taskgraph/actions/side_by_side.py b/taskcluster/gecko_taskgraph/actions/side_by_side.py new file mode 100644 index 0000000000..816e716fde --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/side_by_side.py @@ -0,0 +1,189 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import os +import sys +from functools import partial + +from taskgraph.util.taskcluster import get_artifact, get_task_definition + +from ..util.taskcluster import list_task_group_complete_tasks +from .registry import register_callback_action +from .util import create_tasks, fetch_graph_and_labels, get_decision_task_id, get_pushes + +logger = logging.getLogger(__name__) + + +def input_for_support_action(revision, base_revision, base_branch, task): + """Generate input for action to be scheduled. + + Define what label to schedule with 'label'. + If it is a test task that uses explicit manifests add that information. + """ + platform, test_name = task["metadata"]["name"].split("/opt-") + new_branch = os.environ.get("GECKO_HEAD_REPOSITORY", "/try").split("/")[-1] + symbol = task["extra"]["treeherder"]["symbol"] + input = { + "label": "perftest-linux-side-by-side", + "symbol": symbol, + "new_revision": revision, + "base_revision": base_revision, + "test_name": test_name, + "platform": platform, + "base_branch": base_branch, + "new_branch": new_branch, + } + + return input + + +def side_by_side_modifier(task, input): + if task.label != input["label"]: + return task + + # Make side-by-side job searchable by the platform, test name, and revisions + # it was triggered for + task.task["metadata"][ + "name" + ] = f"{input['platform']} {input['test_name']} {input['base_revision'][:12]} {input['new_revision'][:12]}" + # Use a job symbol to include the symbol of the job the side-by-side + # is running for + task.task["extra"]["treeherder"]["symbol"] += f"-{input['symbol']}" + + cmd = task.task["payload"]["command"] + task.task["payload"]["command"][1][-1] = cmd[1][-1].format(**input) + + return task + + +@register_callback_action( + title="Side by side", + name="side-by-side", + symbol="gen-sxs", + description=( + "Given a performance test pageload job generate a side-by-side comparison against" + "the pageload job from the revision at the input." + ), + order=200, + context=[{"test-type": "raptor"}], + schema={ + "type": "object", + "properties": { + "revision": { + "type": "string", + "default": "", + "description": "Revision of the push against the comparison is wanted.", + }, + "project": { + "type": "string", + "default": "autoland", + "description": "Revision of the push against the comparison is wanted.", + }, + }, + "additionalProperties": False, + }, +) +def side_by_side_action(parameters, graph_config, input, task_group_id, task_id): + """ + This action does a side-by-side comparison between current revision and + the revision entered manually or the latest revision that ran the + pageload job (via support action). + + To execute this action locally follow the documentation here: + https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally + """ + task = get_task_definition(task_id) + decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels( + parameters, graph_config + ) + # TODO: find another way to detect side-by-side comparable jobs + # (potentially lookig at the visual metrics flag) + if not ( + "browsertime-tp6" in task["metadata"]["name"] + or "welcome" in task["metadata"]["name"] + ): + logger.exception( + f"Task {task['metadata']['name']} is not side-by-side comparable." + ) + return + + failed = False + input_for_action = {} + + if input.get("revision"): + # If base_revision was introduced manually, use that + input_for_action = input_for_support_action( + revision=parameters["head_rev"], + base_revision=input.get("revision"), + base_branch=input.get("project"), + task=task, + ) + else: + current_push_id = int(parameters["pushlog_id"]) - 1 + # Go decrementally through pushlog_id, get push data, decision task id, + # full task graph and everything needed to find which of the past revisions + # ran the pageload job to compare against + while int(parameters["pushlog_id"]) - current_push_id < 30: + pushes = get_pushes( + project=parameters["head_repository"], + end_id=current_push_id, + depth=1, + full_response=True, + ) + try: + # Get label-to-taskid.json artifact + the tasks triggered + # by the action tasks at a later time than the decision task + current_decision_task_id = get_decision_task_id( + parameters["project"], current_push_id + ) + current_task_group_id = get_task_definition(current_decision_task_id)[ + "taskGroupId" + ] + current_label_to_taskid = get_artifact( + current_decision_task_id, "public/label-to-taskid.json" + ) + current_full_label_to_taskid = current_label_to_taskid.copy() + action_task_triggered = list_task_group_complete_tasks( + current_task_group_id + ) + current_full_label_to_taskid.update(action_task_triggered) + if task["metadata"]["name"] in current_full_label_to_taskid.keys(): + input_for_action = input_for_support_action( + revision=parameters["head_rev"], + base_revision=pushes[str(current_push_id)]["changesets"][-1], + base_branch=input.get("project", parameters["project"]), + task=task, + ) + break + except Exception: + logger.warning( + f"Could not find decision task for push {current_push_id}" + ) + # The decision task may have failed, this is common enough that we + # don't want to report an error for it. + continue + current_push_id -= 1 + if not input_for_action: + raise Exception( + "Could not find a side-by-side comparable task within a depth of 30 revisions." + ) + + try: + create_tasks( + graph_config, + [input_for_action["label"]], + full_task_graph, + label_to_taskid, + parameters, + decision_task_id, + modifier=partial(side_by_side_modifier, input=input_for_action), + ) + except Exception as e: + logger.exception(f"Failed to trigger action: {e}.") + failed = True + + if failed: + sys.exit(1) diff --git a/taskcluster/gecko_taskgraph/actions/util.py b/taskcluster/gecko_taskgraph/actions/util.py new file mode 100644 index 0000000000..76181dae2b --- /dev/null +++ b/taskcluster/gecko_taskgraph/actions/util.py @@ -0,0 +1,433 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import concurrent.futures as futures +import copy +import logging +import os +import re +from functools import reduce + +import jsone +import requests +from requests.exceptions import HTTPError +from slugid import nice as slugid +from taskgraph import create +from taskgraph.optimize.base import optimize_task_graph +from taskgraph.taskgraph import TaskGraph +from taskgraph.util.taskcluster import ( + CONCURRENCY, + find_task_id, + get_artifact, + get_session, + get_task_definition, + list_tasks, + parse_time, +) + +from gecko_taskgraph.decision import read_artifact, rename_artifact, write_artifact +from gecko_taskgraph.util.taskcluster import trigger_hook +from gecko_taskgraph.util.taskgraph import find_decision_task + +logger = logging.getLogger(__name__) + +INDEX_TMPL = "gecko.v2.{}.pushlog-id.{}.decision" +PUSHLOG_TMPL = "{}/json-pushes?version=2&startID={}&endID={}" + + +def _tags_within_context(tags, context=[]): + """A context of [] means that it *only* applies to a task group""" + return any( + all(tag in tags and tags[tag] == tag_set[tag] for tag in tag_set.keys()) + for tag_set in context + ) + + +def _extract_applicable_action(actions_json, action_name, task_group_id, task_id): + """Extract action that applies to the given task or task group. + + A task (as defined by its tags) is said to match a tag-set if its + tags are a super-set of the tag-set. A tag-set is a set of key-value pairs. + + An action (as defined by its context) is said to be relevant for + a given task, if the task's tags match one of the tag-sets given + in the context property of the action. + + The order of the actions is significant. When multiple actions apply to a + task the first one takes precedence. + + For more details visit: + https://docs.taskcluster.net/docs/manual/design/conventions/actions/spec + """ + if task_id: + tags = get_task_definition(task_id).get("tags") + + for _action in actions_json["actions"]: + if action_name != _action["name"]: + continue + + context = _action.get("context", []) + # Ensure the task is within the context of the action + if task_id and tags and _tags_within_context(tags, context): + return _action + if context == []: + return _action + + available_actions = ", ".join(sorted({a["name"] for a in actions_json["actions"]})) + raise LookupError( + "{} action is not available for this task. Available: {}".format( + action_name, available_actions + ) + ) + + +def trigger_action(action_name, decision_task_id, task_id=None, input={}): + if not decision_task_id: + raise ValueError("No decision task. We can't find the actions artifact.") + actions_json = get_artifact(decision_task_id, "public/actions.json") + if actions_json["version"] != 1: + raise RuntimeError("Wrong version of actions.json, unable to continue") + + # These values substitute $eval in the template + context = { + "input": input, + "taskId": task_id, + "taskGroupId": decision_task_id, + } + # https://docs.taskcluster.net/docs/manual/design/conventions/actions/spec#variables + context.update(actions_json["variables"]) + action = _extract_applicable_action( + actions_json, action_name, decision_task_id, task_id + ) + kind = action["kind"] + if create.testing: + logger.info(f"Skipped triggering action for {kind} as testing is enabled") + elif kind == "hook": + hook_payload = jsone.render(action["hookPayload"], context) + trigger_hook(action["hookGroupId"], action["hookId"], hook_payload) + else: + raise NotImplementedError(f"Unable to submit actions with {kind} kind.") + + +def get_pushes_from_params_input(parameters, input): + inclusive_tweak = 1 if input.get("inclusive") else 0 + return get_pushes( + project=parameters["head_repository"], + end_id=int(parameters["pushlog_id"]) - (1 - inclusive_tweak), + depth=input.get("depth", 9) + inclusive_tweak, + ) + + +def get_pushes(project, end_id, depth, full_response=False): + pushes = [] + while True: + start_id = max(end_id - depth, 0) + pushlog_url = PUSHLOG_TMPL.format(project, start_id, end_id) + logger.debug(pushlog_url) + r = requests.get(pushlog_url) + r.raise_for_status() + pushes = pushes + list(r.json()["pushes"].keys()) + if len(pushes) >= depth: + break + + end_id = start_id - 1 + start_id -= depth + if start_id < 0: + break + + pushes = sorted(pushes)[-depth:] + push_dict = {push: r.json()["pushes"][push] for push in pushes} + return push_dict if full_response else pushes + + +def get_decision_task_id(project, push_id): + return find_task_id(INDEX_TMPL.format(project, push_id)) + + +def get_parameters(decision_task_id): + return get_artifact(decision_task_id, "public/parameters.yml") + + +def get_tasks_with_downstream(labels, full_task_graph, label_to_taskid): + # Used to gather tasks when downstream tasks need to run as well + return full_task_graph.graph.transitive_closure( + set(labels), reverse=True + ).nodes & set(label_to_taskid.keys()) + + +def fetch_graph_and_labels(parameters, graph_config): + decision_task_id = find_decision_task(parameters, graph_config) + + # First grab the graph and labels generated during the initial decision task + full_task_graph = get_artifact(decision_task_id, "public/full-task-graph.json") + logger.info("Load taskgraph from JSON.") + _, full_task_graph = TaskGraph.from_json(full_task_graph) + label_to_taskid = get_artifact(decision_task_id, "public/label-to-taskid.json") + + logger.info("Fetching additional tasks from action and cron tasks.") + # fetch everything in parallel; this avoids serializing any delay in downloading + # each artifact (such as waiting for the artifact to be mirrored locally) + with futures.ThreadPoolExecutor(CONCURRENCY) as e: + fetches = [] + + # fetch any modifications made by action tasks and swap out new tasks + # for old ones + def fetch_action(task_id): + logger.info(f"fetching label-to-taskid.json for action task {task_id}") + try: + run_label_to_id = get_artifact(task_id, "public/label-to-taskid.json") + label_to_taskid.update(run_label_to_id) + except HTTPError as e: + if e.response.status_code != 404: + raise + logger.debug(f"No label-to-taskid.json found for {task_id}: {e}") + + head_rev_param = "{}head_rev".format(graph_config["project-repo-param-prefix"]) + + namespace = "{}.v2.{}.revision.{}.taskgraph.actions".format( + graph_config["trust-domain"], + parameters["project"], + parameters[head_rev_param], + ) + for task_id in list_tasks(namespace): + fetches.append(e.submit(fetch_action, task_id)) + + # Similarly for cron tasks.. + def fetch_cron(task_id): + logger.info(f"fetching label-to-taskid.json for cron task {task_id}") + try: + run_label_to_id = get_artifact(task_id, "public/label-to-taskid.json") + label_to_taskid.update(run_label_to_id) + except HTTPError as e: + if e.response.status_code != 404: + raise + logger.debug(f"No label-to-taskid.json found for {task_id}: {e}") + + namespace = "{}.v2.{}.revision.{}.cron".format( + graph_config["trust-domain"], + parameters["project"], + parameters[head_rev_param], + ) + for task_id in list_tasks(namespace): + fetches.append(e.submit(fetch_cron, task_id)) + + # now wait for each fetch to complete, raising an exception if there + # were any issues + for f in futures.as_completed(fetches): + f.result() + + return (decision_task_id, full_task_graph, label_to_taskid) + + +def create_task_from_def(task_def, level, action_tag=None): + """Create a new task from a definition rather than from a label + that is already in the full-task-graph. The task definition will + have {relative-datestamp': '..'} rendered just like in a decision task. + Use this for entirely new tasks or ones that change internals of the task. + It is useful if you want to "edit" the full_task_graph and then hand + it to this function. No dependencies will be scheduled. You must handle + this yourself. Seeing how create_tasks handles it might prove helpful.""" + task_def["schedulerId"] = f"gecko-level-{level}" + label = task_def["metadata"]["name"] + task_id = slugid() + session = get_session() + if action_tag: + task_def.setdefault("tags", {}).setdefault("action", action_tag) + create.create_task(session, task_id, label, task_def) + + +def update_parent(task, graph): + task.task.setdefault("extra", {})["parent"] = os.environ.get("TASK_ID", "") + return task + + +def update_action_tag(task, graph, action_tag): + task.task.setdefault("tags", {}).setdefault("action", action_tag) + return task + + +def update_dependencies(task, graph): + if os.environ.get("TASK_ID"): + task.task.setdefault("dependencies", []).append(os.environ["TASK_ID"]) + return task + + +def create_tasks( + graph_config, + to_run, + full_task_graph, + label_to_taskid, + params, + decision_task_id, + suffix="", + modifier=lambda t: t, + action_tag=None, +): + """Create new tasks. The task definition will have {relative-datestamp': + '..'} rendered just like in a decision task. Action callbacks should use + this function to create new tasks, + allowing easy debugging with `mach taskgraph action-callback --test`. + This builds up all required tasks to run in order to run the tasks requested. + + Optionally this function takes a `modifier` function that is passed in each + task before it is put into a new graph. It should return a valid task. Note + that this is passed _all_ tasks in the graph, not just the set in to_run. You + may want to skip modifying tasks not in your to_run list. + + If `suffix` is given, then it is used to give unique names to the resulting + artifacts. If you call this function multiple times in the same action, + pass a different suffix each time to avoid overwriting artifacts. + + If you wish to create the tasks in a new group, leave out decision_task_id. + + Returns an updated label_to_taskid containing the new tasks""" + import gecko_taskgraph.optimize # noqa: triggers registration of strategies + + if suffix != "": + suffix = f"-{suffix}" + to_run = set(to_run) + + # Copy to avoid side-effects later + full_task_graph = copy.deepcopy(full_task_graph) + label_to_taskid = label_to_taskid.copy() + + target_graph = full_task_graph.graph.transitive_closure(to_run) + target_task_graph = TaskGraph( + {l: modifier(full_task_graph[l]) for l in target_graph.nodes}, target_graph + ) + target_task_graph.for_each_task(update_parent) + if action_tag: + target_task_graph.for_each_task(update_action_tag, action_tag) + if decision_task_id and decision_task_id != os.environ.get("TASK_ID"): + target_task_graph.for_each_task(update_dependencies) + optimized_task_graph, label_to_taskid = optimize_task_graph( + target_task_graph, + to_run, + params, + to_run, + decision_task_id, + existing_tasks=label_to_taskid, + ) + write_artifact(f"task-graph{suffix}.json", optimized_task_graph.to_json()) + write_artifact(f"label-to-taskid{suffix}.json", label_to_taskid) + write_artifact(f"to-run{suffix}.json", list(to_run)) + create.create_tasks( + graph_config, + optimized_task_graph, + label_to_taskid, + params, + decision_task_id, + ) + return label_to_taskid + + +def _update_reducer(accumulator, new_value): + "similar to set or dict `update` method, but returning the modified object" + accumulator.update(new_value) + return accumulator + + +def combine_task_graph_files(suffixes): + """Combine task-graph-{suffix}.json files into a single task-graph.json file. + + Since Chain of Trust verification requires a task-graph.json file that + contains all children tasks, we can combine the various task-graph-0.json + type files into a master task-graph.json file at the end. + + Actions also look for various artifacts, so we combine those in a similar + fashion. + + In the case where there is only one suffix, we simply rename it to avoid the + additional cost of uploading two copies of the same data. + """ + + if len(suffixes) == 1: + for filename in ["task-graph", "label-to-taskid", "to-run"]: + rename_artifact(f"{filename}-{suffixes[0]}.json", f"{filename}.json") + return + + def combine(file_contents, base): + return reduce(_update_reducer, file_contents, base) + + files = [read_artifact(f"task-graph-{suffix}.json") for suffix in suffixes] + write_artifact("task-graph.json", combine(files, dict())) + + files = [read_artifact(f"label-to-taskid-{suffix}.json") for suffix in suffixes] + write_artifact("label-to-taskid.json", combine(files, dict())) + + files = [read_artifact(f"to-run-{suffix}.json") for suffix in suffixes] + write_artifact("to-run.json", list(combine(files, set()))) + + +def relativize_datestamps(task_def): + """ + Given a task definition as received from the queue, convert all datestamps + to {relative_datestamp: ..} format, with the task creation time as "now". + The result is useful for handing to ``create_task``. + """ + base = parse_time(task_def["created"]) + # borrowed from https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js + ts_pattern = re.compile( + r"^\d\d\d\d-[0-1]\d-[0-3]\d[t\s]" + r"(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?" + r"(?:z|[+-]\d\d:\d\d)$", + re.I, + ) + + def recurse(value): + if isinstance(value, str): + if ts_pattern.match(value): + value = parse_time(value) + diff = value - base + return {"relative-datestamp": f"{int(diff.total_seconds())} seconds"} + if isinstance(value, list): + return [recurse(e) for e in value] + if isinstance(value, dict): + return {k: recurse(v) for k, v in value.items()} + return value + + return recurse(task_def) + + +def add_args_to_command(cmd_parts, extra_args=[]): + """ + Add custom command line args to a given command. + args: + cmd_parts: the raw command as seen by taskcluster + extra_args: array of args we want to add + """ + # Prevent modification of the caller's copy of cmd_parts + cmd_parts = copy.deepcopy(cmd_parts) + cmd_type = "default" + if len(cmd_parts) == 1 and isinstance(cmd_parts[0], dict): + # windows has single cmd part as dict: 'task-reference', with long string + cmd_parts = cmd_parts[0]["task-reference"].split(" ") + cmd_type = "dict" + elif len(cmd_parts) == 1 and isinstance(cmd_parts[0], str): + # windows has single cmd part as a long string + cmd_parts = cmd_parts[0].split(" ") + cmd_type = "unicode" + elif len(cmd_parts) == 1 and isinstance(cmd_parts[0], list): + # osx has an single value array with an array inside + cmd_parts = cmd_parts[0] + cmd_type = "subarray" + elif len(cmd_parts) == 2 and isinstance(cmd_parts[1], list): + # osx has an double value array with an array inside each element. + # The first element is a pre-requisite command while the second + # is the actual test command. + cmd_type = "subarray2" + + if cmd_type == "subarray2": + cmd_parts[1].extend(extra_args) + else: + cmd_parts.extend(extra_args) + + if cmd_type == "dict": + cmd_parts = [{"task-reference": " ".join(cmd_parts)}] + elif cmd_type == "unicode": + cmd_parts = [" ".join(cmd_parts)] + elif cmd_type == "subarray": + cmd_parts = [cmd_parts] + return cmd_parts diff --git a/taskcluster/gecko_taskgraph/config.py b/taskcluster/gecko_taskgraph/config.py new file mode 100644 index 0000000000..62c261647a --- /dev/null +++ b/taskcluster/gecko_taskgraph/config.py @@ -0,0 +1,122 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.util.schema import Schema, optionally_keyed_by +from voluptuous import Any, Optional, Required + +graph_config_schema = Schema( + { + # The trust-domain for this graph. + # (See https://firefox-source-docs.mozilla.org/taskcluster/taskcluster/taskgraph.html#taskgraph-trust-domain) # noqa + Required("trust-domain"): str, + # This specifes the prefix for repo parameters that refer to the project being built. + # This selects between `head_rev` and `comm_head_rev` and related paramters. + # (See http://firefox-source-docs.mozilla.org/taskcluster/taskcluster/parameters.html#push-information # noqa + # and http://firefox-source-docs.mozilla.org/taskcluster/taskcluster/parameters.html#comm-push-information) # noqa + Required("project-repo-param-prefix"): str, + # This specifies the top level directory of the application being built. + # ie. "browser/" for Firefox, "comm/mail/" for Thunderbird. + Required("product-dir"): str, + Required("treeherder"): { + # Mapping of treeherder group symbols to descriptive names + Required("group-names"): {str: str} + }, + Required("index"): {Required("products"): [str]}, + Required("try"): { + # We have a few platforms for which we want to do some "extra" builds, or at + # least build-ish things. Sort of. Anyway, these other things are implemented + # as different "platforms". These do *not* automatically ride along with "-p + # all" + Required("ridealong-builds"): {str: [str]}, + }, + Required("release-promotion"): { + Required("products"): [str], + Required("flavors"): { + str: { + Required("product"): str, + Required("target-tasks-method"): str, + Optional("is-rc"): bool, + Optional("rebuild-kinds"): [str], + Optional("version-bump"): bool, + Optional("partial-updates"): bool, + } + }, + }, + Required("merge-automation"): { + Required("behaviors"): { + str: { + Optional("from-branch"): str, + Required("to-branch"): str, + Optional("from-repo"): str, + Required("to-repo"): str, + Required("version-files"): [ + { + Required("filename"): str, + Optional("new-suffix"): str, + Optional("version-bump"): Any("major", "minor"), + } + ], + Required("replacements"): [[str]], + Required("merge-old-head"): bool, + Optional("base-tag"): str, + Optional("end-tag"): str, + Optional("fetch-version-from"): str, + } + }, + }, + Required("scriptworker"): { + # Prefix to add to scopes controlling scriptworkers + Required("scope-prefix"): str, + }, + Required("task-priority"): optionally_keyed_by( + "project", + Any( + "highest", + "very-high", + "high", + "medium", + "low", + "very-low", + "lowest", + ), + ), + Required("partner-urls"): { + Required("release-partner-repack"): optionally_keyed_by( + "release-product", "release-level", "release-type", Any(str, None) + ), + Optional("release-partner-attribution"): optionally_keyed_by( + "release-product", "release-level", "release-type", Any(str, None) + ), + Required("release-eme-free-repack"): optionally_keyed_by( + "release-product", "release-level", "release-type", Any(str, None) + ), + }, + Required("workers"): { + Required("aliases"): { + str: { + Required("provisioner"): optionally_keyed_by("level", str), + Required("implementation"): str, + Required("os"): str, + Required("worker-type"): optionally_keyed_by( + "level", "release-level", "project", str + ), + } + }, + }, + Required("mac-notarization"): { + Required("mac-entitlements"): optionally_keyed_by( + "platform", "release-level", str + ), + Required("mac-requirements"): optionally_keyed_by("platform", str), + }, + Required("taskgraph"): { + Optional( + "register", + description="Python function to call to register extensions.", + ): str, + Optional("decision-parameters"): str, + }, + Required("expiration-policy"): optionally_keyed_by("project", {str: str}), + } +) diff --git a/taskcluster/gecko_taskgraph/decision.py b/taskcluster/gecko_taskgraph/decision.py new file mode 100644 index 0000000000..1849770481 --- /dev/null +++ b/taskcluster/gecko_taskgraph/decision.py @@ -0,0 +1,565 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging +import os +import shutil +import sys +import time +from collections import defaultdict + +import yaml +from redo import retry +from taskgraph import create +from taskgraph.create import create_tasks + +# TODO: Let standalone taskgraph generate parameters instead of calling internals +from taskgraph.decision import ( + _determine_more_accurate_base_ref, + _determine_more_accurate_base_rev, + _get_env_prefix, +) +from taskgraph.generator import TaskGraphGenerator +from taskgraph.parameters import Parameters +from taskgraph.taskgraph import TaskGraph +from taskgraph.util.python_path import find_object +from taskgraph.util.schema import Schema, validate_schema +from taskgraph.util.taskcluster import get_artifact +from taskgraph.util.vcs import get_repository +from taskgraph.util.yaml import load_yaml +from voluptuous import Any, Optional, Required + +from . import GECKO +from .actions import render_actions_json +from .parameters import get_app_version, get_version +from .try_option_syntax import parse_message +from .util.backstop import BACKSTOP_INDEX, is_backstop +from .util.bugbug import push_schedules +from .util.chunking import resolver +from .util.hg import get_hg_commit_message, get_hg_revision_branch +from .util.partials import populate_release_history +from .util.taskcluster import insert_index +from .util.taskgraph import find_decision_task, find_existing_tasks_from_previous_kinds + +logger = logging.getLogger(__name__) + +ARTIFACTS_DIR = "artifacts" + +# For each project, this gives a set of parameters specific to the project. +# See `taskcluster/docs/parameters.rst` for information on parameters. +PER_PROJECT_PARAMETERS = { + "try": { + "enable_always_target": True, + "target_tasks_method": "try_tasks", + }, + "kaios-try": { + "target_tasks_method": "try_tasks", + }, + "ash": { + "target_tasks_method": "default", + }, + "cedar": { + "target_tasks_method": "default", + }, + "holly": { + "enable_always_target": True, + "target_tasks_method": "holly_tasks", + }, + "oak": { + "target_tasks_method": "default", + "release_type": "nightly-oak", + }, + "graphics": { + "target_tasks_method": "graphics_tasks", + }, + "autoland": { + "optimize_strategies": "gecko_taskgraph.optimize:project.autoland", + "target_tasks_method": "autoland_tasks", + "test_manifest_loader": "bugbug", # Remove this line to disable "manifest scheduling". + }, + "mozilla-central": { + "target_tasks_method": "mozilla_central_tasks", + "release_type": "nightly", + }, + "mozilla-beta": { + "target_tasks_method": "mozilla_beta_tasks", + "release_type": "beta", + }, + "mozilla-release": { + "target_tasks_method": "mozilla_release_tasks", + "release_type": "release", + }, + "mozilla-esr102": { + "target_tasks_method": "mozilla_esr102_tasks", + "release_type": "esr102", + }, + "mozilla-esr115": { + "target_tasks_method": "mozilla_esr115_tasks", + "release_type": "esr115", + }, + "pine": { + "target_tasks_method": "pine_tasks", + }, + "kaios": { + "target_tasks_method": "kaios_tasks", + }, + "toolchains": { + "target_tasks_method": "mozilla_central_tasks", + }, + # the default parameters are used for projects that do not match above. + "default": { + "target_tasks_method": "default", + }, +} + +try_task_config_schema = Schema( + { + Required("tasks"): [str], + Optional("browsertime"): bool, + Optional("chemspill-prio"): bool, + Optional("disable-pgo"): bool, + Optional("env"): {str: str}, + Optional("gecko-profile"): bool, + Optional("gecko-profile-interval"): float, + Optional("gecko-profile-entries"): int, + Optional("gecko-profile-features"): str, + Optional("gecko-profile-threads"): str, + Optional( + "perftest-options", + description="Options passed from `mach perftest` to try.", + ): object, + Optional( + "optimize-strategies", + description="Alternative optimization strategies to use instead of the default. " + "A module path pointing to a dict to be use as the `strategy_override` " + "argument in `taskgraph.optimize.base.optimize_task_graph`.", + ): str, + Optional("rebuild"): int, + Optional("tasks-regex"): { + "include": Any(None, [str]), + "exclude": Any(None, [str]), + }, + Optional("use-artifact-builds"): bool, + Optional( + "worker-overrides", + description="Mapping of worker alias to worker pools to use for those aliases.", + ): {str: str}, + Optional("routes"): [str], + } +) +""" +Schema for try_task_config.json files. +""" + +try_task_config_schema_v2 = Schema( + { + Optional("parameters"): {str: object}, + } +) + + +def full_task_graph_to_runnable_jobs(full_task_json): + runnable_jobs = {} + for label, node in full_task_json.items(): + if not ("extra" in node["task"] and "treeherder" in node["task"]["extra"]): + continue + + th = node["task"]["extra"]["treeherder"] + runnable_jobs[label] = {"symbol": th["symbol"]} + + for i in ("groupName", "groupSymbol", "collection"): + if i in th: + runnable_jobs[label][i] = th[i] + if th.get("machine", {}).get("platform"): + runnable_jobs[label]["platform"] = th["machine"]["platform"] + return runnable_jobs + + +def full_task_graph_to_manifests_by_task(full_task_json): + manifests_by_task = defaultdict(list) + for label, node in full_task_json.items(): + manifests = node["attributes"].get("test_manifests") + if not manifests: + continue + + manifests_by_task[label].extend(manifests) + return manifests_by_task + + +def try_syntax_from_message(message): + """ + Parse the try syntax out of a commit message, returning '' if none is + found. + """ + try_idx = message.find("try:") + if try_idx == -1: + return "" + return message[try_idx:].split("\n", 1)[0] + + +def taskgraph_decision(options, parameters=None): + """ + Run the decision task. This function implements `mach taskgraph decision`, + and is responsible for + + * processing decision task command-line options into parameters + * running task-graph generation exactly the same way the other `mach + taskgraph` commands do + * generating a set of artifacts to memorialize the graph + * calling TaskCluster APIs to create the graph + """ + + parameters = parameters or ( + lambda graph_config: get_decision_parameters(graph_config, options) + ) + + decision_task_id = os.environ["TASK_ID"] + + # create a TaskGraphGenerator instance + tgg = TaskGraphGenerator( + root_dir=options.get("root"), + parameters=parameters, + decision_task_id=decision_task_id, + write_artifacts=True, + ) + + if not create.testing: + # set additional index paths for the decision task + set_decision_indexes(decision_task_id, tgg.parameters, tgg.graph_config) + + # write out the parameters used to generate this graph + write_artifact("parameters.yml", dict(**tgg.parameters)) + + # write out the public/actions.json file + write_artifact( + "actions.json", + render_actions_json(tgg.parameters, tgg.graph_config, decision_task_id), + ) + + # write out the full graph for reference + full_task_json = tgg.full_task_graph.to_json() + write_artifact("full-task-graph.json", full_task_json) + + # write out the public/runnable-jobs.json file + write_artifact( + "runnable-jobs.json", full_task_graph_to_runnable_jobs(full_task_json) + ) + + # write out the public/manifests-by-task.json file + write_artifact( + "manifests-by-task.json.gz", + full_task_graph_to_manifests_by_task(full_task_json), + ) + + # write out the public/tests-by-manifest.json file + write_artifact("tests-by-manifest.json.gz", resolver.tests_by_manifest) + + # this is just a test to check whether the from_json() function is working + _, _ = TaskGraph.from_json(full_task_json) + + # write out the target task set to allow reproducing this as input + write_artifact("target-tasks.json", list(tgg.target_task_set.tasks.keys())) + + # write out the optimized task graph to describe what will actually happen, + # and the map of labels to taskids + write_artifact("task-graph.json", tgg.morphed_task_graph.to_json()) + write_artifact("label-to-taskid.json", tgg.label_to_taskid) + + # write bugbug scheduling information if it was invoked + if len(push_schedules) > 0: + write_artifact("bugbug-push-schedules.json", push_schedules.popitem()[1]) + + # cache run-task & misc/fetch-content + scripts_root_dir = os.path.join( + "/builds/worker/checkouts/gecko/taskcluster/scripts" + ) + run_task_file_path = os.path.join(scripts_root_dir, "run-task") + fetch_content_file_path = os.path.join(scripts_root_dir, "misc/fetch-content") + shutil.copy2(run_task_file_path, ARTIFACTS_DIR) + shutil.copy2(fetch_content_file_path, ARTIFACTS_DIR) + + # actually create the graph + create_tasks( + tgg.graph_config, + tgg.morphed_task_graph, + tgg.label_to_taskid, + tgg.parameters, + decision_task_id=decision_task_id, + ) + + +def get_decision_parameters(graph_config, options): + """ + Load parameters from the command-line options for 'taskgraph decision'. + This also applies per-project parameters, based on the given project. + + """ + product_dir = graph_config["product-dir"] + + parameters = { + n: options[n] + for n in [ + "base_repository", + "base_ref", + "base_rev", + "head_repository", + "head_rev", + "head_ref", + "head_tag", + "project", + "pushlog_id", + "pushdate", + "owner", + "level", + "repository_type", + "target_tasks_method", + "tasks_for", + ] + if n in options + } + + commit_message = get_hg_commit_message(os.path.join(GECKO, product_dir)) + + repo_path = os.getcwd() + repo = get_repository(repo_path) + parameters["base_ref"] = _determine_more_accurate_base_ref( + repo, + candidate_base_ref=options.get("base_ref"), + head_ref=options.get("head_ref"), + base_rev=options.get("base_rev"), + ) + + parameters["base_rev"] = _determine_more_accurate_base_rev( + repo, + base_ref=parameters["base_ref"], + candidate_base_rev=options.get("base_rev"), + head_rev=options.get("head_rev"), + env_prefix=_get_env_prefix(graph_config), + ) + + # Define default filter list, as most configurations shouldn't need + # custom filters. + parameters["filters"] = [ + "target_tasks_method", + ] + parameters["enable_always_target"] = False + parameters["existing_tasks"] = {} + parameters["do_not_optimize"] = [] + parameters["build_number"] = 1 + parameters["version"] = get_version(product_dir) + parameters["app_version"] = get_app_version(product_dir) + parameters["message"] = try_syntax_from_message(commit_message) + parameters["hg_branch"] = get_hg_revision_branch( + GECKO, revision=parameters["head_rev"] + ) + parameters["next_version"] = None + parameters["optimize_strategies"] = None + parameters["optimize_target_tasks"] = True + parameters["phabricator_diff"] = None + parameters["release_type"] = "" + parameters["release_eta"] = "" + parameters["release_enable_partner_repack"] = False + parameters["release_enable_partner_attribution"] = False + parameters["release_partners"] = [] + parameters["release_partner_config"] = {} + parameters["release_partner_build_number"] = 1 + parameters["release_enable_emefree"] = False + parameters["release_product"] = None + parameters["required_signoffs"] = [] + parameters["signoff_urls"] = {} + parameters["test_manifest_loader"] = "default" + parameters["try_mode"] = None + parameters["try_task_config"] = {} + parameters["try_options"] = None + + # owner must be an email, but sometimes (e.g., for ffxbld) it is not, in which + # case, fake it + if "@" not in parameters["owner"]: + parameters["owner"] += "@noreply.mozilla.org" + + # use the pushdate as build_date if given, else use current time + parameters["build_date"] = parameters["pushdate"] or int(time.time()) + # moz_build_date is the build identifier based on build_date + parameters["moz_build_date"] = time.strftime( + "%Y%m%d%H%M%S", time.gmtime(parameters["build_date"]) + ) + + project = parameters["project"] + try: + parameters.update(PER_PROJECT_PARAMETERS[project]) + except KeyError: + logger.warning( + "using default project parameters; add {} to " + "PER_PROJECT_PARAMETERS in {} to customize behavior " + "for this project".format(project, __file__) + ) + parameters.update(PER_PROJECT_PARAMETERS["default"]) + + # `target_tasks_method` has higher precedence than `project` parameters + if options.get("target_tasks_method"): + parameters["target_tasks_method"] = options["target_tasks_method"] + + # ..but can be overridden by the commit message: if it contains the special + # string "DONTBUILD" and this is an on-push decision task, then use the + # special 'nothing' target task method. + if "DONTBUILD" in commit_message and options["tasks_for"] == "hg-push": + parameters["target_tasks_method"] = "nothing" + + if options.get("include_push_tasks"): + get_existing_tasks(options.get("rebuild_kinds", []), parameters, graph_config) + + # If the target method is nightly, we should build partials. This means + # knowing what has been released previously. + # An empty release_history is fine, it just means no partials will be built + parameters.setdefault("release_history", dict()) + if "nightly" in parameters.get("target_tasks_method", ""): + parameters["release_history"] = populate_release_history("Firefox", project) + + if options.get("try_task_config_file"): + task_config_file = os.path.abspath(options.get("try_task_config_file")) + else: + # if try_task_config.json is present, load it + task_config_file = os.path.join(os.getcwd(), "try_task_config.json") + + # load try settings + if "try" in project and options["tasks_for"] == "hg-push": + set_try_config(parameters, task_config_file) + + if options.get("optimize_target_tasks") is not None: + parameters["optimize_target_tasks"] = options["optimize_target_tasks"] + + # Determine if this should be a backstop push. + parameters["backstop"] = is_backstop(parameters) + + if "decision-parameters" in graph_config["taskgraph"]: + find_object(graph_config["taskgraph"]["decision-parameters"])( + graph_config, parameters + ) + + result = Parameters(**parameters) + result.check() + return result + + +def get_existing_tasks(rebuild_kinds, parameters, graph_config): + """ + Find the decision task corresponding to the on-push graph, and return + a mapping of labels to task-ids from it. This will skip the kinds specificed + by `rebuild_kinds`. + """ + try: + decision_task = retry( + find_decision_task, + args=(parameters, graph_config), + attempts=4, + sleeptime=5 * 60, + ) + except Exception: + logger.exception("Didn't find existing push task.") + sys.exit(1) + _, task_graph = TaskGraph.from_json( + get_artifact(decision_task, "public/full-task-graph.json") + ) + parameters["existing_tasks"] = find_existing_tasks_from_previous_kinds( + task_graph, [decision_task], rebuild_kinds + ) + + +def set_try_config(parameters, task_config_file): + if os.path.isfile(task_config_file): + logger.info(f"using try tasks from {task_config_file}") + with open(task_config_file) as fh: + task_config = json.load(fh) + task_config_version = task_config.pop("version", 1) + if task_config_version == 1: + validate_schema( + try_task_config_schema, + task_config, + "Invalid v1 `try_task_config.json`.", + ) + parameters["try_mode"] = "try_task_config" + parameters["try_task_config"] = task_config + elif task_config_version == 2: + validate_schema( + try_task_config_schema_v2, + task_config, + "Invalid v2 `try_task_config.json`.", + ) + parameters.update(task_config["parameters"]) + return + else: + raise Exception( + f"Unknown `try_task_config.json` version: {task_config_version}" + ) + + if "try:" in parameters["message"]: + parameters["try_mode"] = "try_option_syntax" + parameters.update(parse_message(parameters["message"])) + else: + parameters["try_options"] = None + + if parameters["try_mode"] == "try_task_config": + # The user has explicitly requested a set of jobs, so run them all + # regardless of optimization. Their dependencies can be optimized, + # though. + parameters["optimize_target_tasks"] = False + else: + # For a try push with no task selection, apply the default optimization + # process to all of the tasks. + parameters["optimize_target_tasks"] = True + + +def set_decision_indexes(decision_task_id, params, graph_config): + index_paths = [] + if params["backstop"]: + index_paths.append(BACKSTOP_INDEX) + + subs = params.copy() + subs["trust-domain"] = graph_config["trust-domain"] + + index_paths = [i.format(**subs) for i in index_paths] + for index_path in index_paths: + insert_index(index_path, decision_task_id, use_proxy=True) + + +def write_artifact(filename, data): + logger.info(f"writing artifact file `{filename}`") + if not os.path.isdir(ARTIFACTS_DIR): + os.mkdir(ARTIFACTS_DIR) + path = os.path.join(ARTIFACTS_DIR, filename) + if filename.endswith(".yml"): + with open(path, "w") as f: + yaml.safe_dump(data, f, allow_unicode=True, default_flow_style=False) + elif filename.endswith(".json"): + with open(path, "w") as f: + json.dump(data, f, sort_keys=True, indent=2, separators=(",", ": ")) + elif filename.endswith(".json.gz"): + import gzip + + with gzip.open(path, "wb") as f: + f.write(json.dumps(data).encode("utf-8")) + else: + raise TypeError(f"Don't know how to write to {filename}") + + +def read_artifact(filename): + path = os.path.join(ARTIFACTS_DIR, filename) + if filename.endswith(".yml"): + return load_yaml(path, filename) + if filename.endswith(".json"): + with open(path) as f: + return json.load(f) + if filename.endswith(".json.gz"): + import gzip + + with gzip.open(path, "rb") as f: + return json.load(f.decode("utf-8")) + else: + raise TypeError(f"Don't know how to read {filename}") + + +def rename_artifact(src, dest): + os.rename(os.path.join(ARTIFACTS_DIR, src), os.path.join(ARTIFACTS_DIR, dest)) diff --git a/taskcluster/gecko_taskgraph/docker.py b/taskcluster/gecko_taskgraph/docker.py new file mode 100644 index 0000000000..a1952f278c --- /dev/null +++ b/taskcluster/gecko_taskgraph/docker.py @@ -0,0 +1,198 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os +import tarfile +from io import BytesIO + +from taskgraph.generator import load_tasks_for_kind +from taskgraph.parameters import Parameters +from taskgraph.util.taskcluster import get_artifact_url, get_session + +from gecko_taskgraph.optimize.strategies import IndexSearch +from gecko_taskgraph.util import docker + +from . import GECKO + + +def get_image_digest(image_name): + params = Parameters( + level=os.environ.get("MOZ_SCM_LEVEL", "3"), + strict=False, + ) + tasks = load_tasks_for_kind(params, "docker-image") + task = tasks[f"docker-image-{image_name}"] + return task.attributes["cached_task"]["digest"] + + +def load_image_by_name(image_name, tag=None): + params = {"level": os.environ.get("MOZ_SCM_LEVEL", "3")} + tasks = load_tasks_for_kind(params, "docker-image") + task = tasks[f"docker-image-{image_name}"] + deadline = None + task_id = IndexSearch().should_replace_task( + task, {}, deadline, task.optimization.get("index-search", []) + ) + + if task_id in (True, False): + print( + "Could not find artifacts for a docker image " + "named `{image_name}`. Local commits and other changes " + "in your checkout may cause this error. Try " + "updating to a fresh checkout of mozilla-central " + "to download image.".format(image_name=image_name) + ) + return False + + return load_image_by_task_id(task_id, tag) + + +def load_image_by_task_id(task_id, tag=None): + artifact_url = get_artifact_url(task_id, "public/image.tar.zst") + result = load_image(artifact_url, tag) + print("Found docker image: {}:{}".format(result["image"], result["tag"])) + if tag: + print(f"Re-tagged as: {tag}") + else: + tag = "{}:{}".format(result["image"], result["tag"]) + print(f"Try: docker run -ti --rm {tag} bash") + return True + + +def build_context(name, outputFile, args=None): + """Build a context.tar for image with specified name.""" + if not name: + raise ValueError("must provide a Docker image name") + if not outputFile: + raise ValueError("must provide a outputFile") + + image_dir = docker.image_path(name) + if not os.path.isdir(image_dir): + raise Exception("image directory does not exist: %s" % image_dir) + + docker.create_context_tar(GECKO, image_dir, outputFile, image_name=name, args=args) + + +def build_image(name, tag, args=None): + """Build a Docker image of specified name. + + Output from image building process will be printed to stdout. + """ + if not name: + raise ValueError("must provide a Docker image name") + + image_dir = docker.image_path(name) + if not os.path.isdir(image_dir): + raise Exception("image directory does not exist: %s" % image_dir) + + tag = tag or docker.docker_image(name, by_tag=True) + + buf = BytesIO() + docker.stream_context_tar(GECKO, image_dir, buf, name, args) + docker.post_to_docker(buf.getvalue(), "/build", nocache=1, t=tag) + + print(f"Successfully built {name} and tagged with {tag}") + + if tag.endswith(":latest"): + print("*" * 50) + print("WARNING: no VERSION file found in image directory.") + print("Image is not suitable for deploying/pushing.") + print("Create an image suitable for deploying/pushing by creating") + print("a VERSION file in the image directory.") + print("*" * 50) + + +def load_image(url, imageName=None, imageTag=None): + """ + Load docker image from URL as imageName:tag, if no imageName or tag is given + it will use whatever is inside the zstd compressed tarball. + + Returns an object with properties 'image', 'tag' and 'layer'. + """ + import zstandard as zstd + + # If imageName is given and we don't have an imageTag + # we parse out the imageTag from imageName, or default it to 'latest' + # if no imageName and no imageTag is given, 'repositories' won't be rewritten + if imageName and not imageTag: + if ":" in imageName: + imageName, imageTag = imageName.split(":", 1) + else: + imageTag = "latest" + + info = {} + + def download_and_modify_image(): + # This function downloads and edits the downloaded tar file on the fly. + # It emits chunked buffers of the editted tar file, as a generator. + print(f"Downloading from {url}") + # get_session() gets us a requests.Session set to retry several times. + req = get_session().get(url, stream=True) + req.raise_for_status() + + with zstd.ZstdDecompressor().stream_reader(req.raw) as ifh: + + tarin = tarfile.open( + mode="r|", + fileobj=ifh, + bufsize=zstd.DECOMPRESSION_RECOMMENDED_OUTPUT_SIZE, + ) + + # Stream through each member of the downloaded tar file individually. + for member in tarin: + # Non-file members only need a tar header. Emit one. + if not member.isfile(): + yield member.tobuf(tarfile.GNU_FORMAT) + continue + + # Open stream reader for the member + reader = tarin.extractfile(member) + + # If member is `repositories`, we parse and possibly rewrite the + # image tags. + if member.name == "repositories": + # Read and parse repositories + repos = json.loads(reader.read()) + reader.close() + + # If there is more than one image or tag, we can't handle it + # here. + if len(repos.keys()) > 1: + raise Exception("file contains more than one image") + info["image"] = image = list(repos.keys())[0] + if len(repos[image].keys()) > 1: + raise Exception("file contains more than one tag") + info["tag"] = tag = list(repos[image].keys())[0] + info["layer"] = layer = repos[image][tag] + + # Rewrite the repositories file + data = json.dumps({imageName or image: {imageTag or tag: layer}}) + reader = BytesIO(data.encode("utf-8")) + member.size = len(data) + + # Emit the tar header for this member. + yield member.tobuf(tarfile.GNU_FORMAT) + # Then emit its content. + remaining = member.size + while remaining: + length = min(remaining, zstd.DECOMPRESSION_RECOMMENDED_OUTPUT_SIZE) + buf = reader.read(length) + remaining -= len(buf) + yield buf + # Pad to fill a 512 bytes block, per tar format. + remainder = member.size % 512 + if remainder: + yield ("\0" * (512 - remainder)).encode("utf-8") + + reader.close() + + docker.post_to_docker(download_and_modify_image(), "/images/load", quiet=0) + + # Check that we found a repositories file + if not info.get("image") or not info.get("tag") or not info.get("layer"): + raise Exception("No repositories file found!") + + return info diff --git a/taskcluster/gecko_taskgraph/files_changed.py b/taskcluster/gecko_taskgraph/files_changed.py new file mode 100644 index 0000000000..c814df0806 --- /dev/null +++ b/taskcluster/gecko_taskgraph/files_changed.py @@ -0,0 +1,95 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Support for optimizing tasks based on the set of files that have changed. +""" + +import logging +import os +from subprocess import CalledProcessError + +from mozbuild.util import memoize +from mozpack.path import join as join_path +from mozpack.path import match as mozpackmatch +from mozversioncontrol import InvalidRepoPath, get_repository_object + +from gecko_taskgraph import GECKO +from gecko_taskgraph.util.hg import get_json_automationrelevance + +logger = logging.getLogger(__name__) + + +@memoize +def get_changed_files(repository, revision): + """ + Get the set of files changed in the push headed by the given revision. + Responses are cached, so multiple calls with the same arguments are OK. + """ + contents = get_json_automationrelevance(repository, revision) + try: + changesets = contents["changesets"] + except KeyError: + # We shouldn't hit this error in CI. + if os.environ.get("MOZ_AUTOMATION"): + raise + + # We're likely on an unpublished commit, grab changed files from + # version control. + return get_locally_changed_files(GECKO) + + logger.debug("{} commits influencing task scheduling:".format(len(changesets))) + changed_files = set() + for c in changesets: + desc = "" # Support empty desc + if c["desc"]: + desc = c["desc"].splitlines()[0].encode("ascii", "ignore") + logger.debug(" {cset} {desc}".format(cset=c["node"][0:12], desc=desc)) + changed_files |= set(c["files"]) + + return changed_files + + +def check(params, file_patterns): + """Determine whether any of the files changed in the indicated push to + https://hg.mozilla.org match any of the given file patterns.""" + repository = params.get("head_repository") + revision = params.get("head_rev") + if not repository or not revision: + logger.warning( + "Missing `head_repository` or `head_rev` parameters; " + "assuming all files have changed" + ) + return True + + changed_files = get_changed_files(repository, revision) + + if "comm_head_repository" in params: + repository = params.get("comm_head_repository") + revision = params.get("comm_head_rev") + if not revision: + logger.warning( + "Missing `comm_head_rev` parameters; " "assuming all files have changed" + ) + return True + + changed_files |= { + join_path("comm", file) for file in get_changed_files(repository, revision) + } + + for pattern in file_patterns: + for path in changed_files: + if mozpackmatch(path, pattern): + return True + + return False + + +@memoize +def get_locally_changed_files(repo): + try: + vcs = get_repository_object(repo) + return set(vcs.get_outgoing_files("AM")) + except (InvalidRepoPath, CalledProcessError): + return set() diff --git a/taskcluster/gecko_taskgraph/loader/__init__.py b/taskcluster/gecko_taskgraph/loader/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/taskcluster/gecko_taskgraph/loader/multi_dep.py b/taskcluster/gecko_taskgraph/loader/multi_dep.py new file mode 100644 index 0000000000..04fda04415 --- /dev/null +++ b/taskcluster/gecko_taskgraph/loader/multi_dep.py @@ -0,0 +1,275 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.task import Task +from taskgraph.util.schema import Schema +from voluptuous import Required + +from gecko_taskgraph.util.copy_task import copy_task + +from ..util.attributes import sorted_unique_list + +schema = Schema( + { + Required("primary-dependency", "primary dependency task"): Task, + Required( + "dependent-tasks", + "dictionary of dependent tasks, keyed by kind", + ): {str: Task}, + } +) + + +# Define a collection of group_by functions +GROUP_BY_MAP = {} + + +def group_by(name): + def wrapper(func): + GROUP_BY_MAP[name] = func + return func + + return wrapper + + +def loader(kind, path, config, params, loaded_tasks): + """ + Load tasks based on the jobs dependant kinds, designed for use as + multiple-dependent needs. + + Required ``group-by-fn`` is used to define how we coalesce the + multiple deps together to pass to transforms, e.g. all kinds specified get + collapsed by platform with `platform` + + Optional ``primary-dependency`` (ordered list or string) is used to determine + which upstream kind to inherit attrs from. See ``get_primary_dep``. + + The `only-for-build-platforms` kind configuration, if specified, will limit + the build platforms for which a job will be created. Alternatively there is + 'not-for-build-platforms' kind configuration which will be consulted only after + 'only-for-build-platforms' is checked (if present), and omit any jobs where the + build platform matches. + + Optional ``job-template`` kind configuration value, if specified, will be used to + pass configuration down to the specified transforms used. + """ + job_template = config.get("job-template") + + for dep_tasks in group_tasks(config, loaded_tasks): + job = {"dependent-tasks": dep_tasks} + job["primary-dependency"] = get_primary_dep(config, dep_tasks) + if job_template: + job.update(copy_task(job_template)) + # copy shipping_product from upstream + product = job["primary-dependency"].attributes.get( + "shipping_product", job["primary-dependency"].task.get("shipping-product") + ) + if product: + job.setdefault("shipping-product", product) + job.setdefault("attributes", {})["required_signoffs"] = sorted_unique_list( + *( + task.attributes.get("required_signoffs", []) + for task in dep_tasks.values() + ) + ) + + yield job + + +def skip_only_or_not(config, task): + """Return True if we should skip this task based on `only_` or `not_` config.""" + only_platforms = config.get("only-for-build-platforms") + not_platforms = config.get("not-for-build-platforms") + only_attributes = config.get("only-for-attributes") + not_attributes = config.get("not-for-attributes") + task_attrs = task.attributes + if only_platforms or not_platforms: + platform = task_attrs.get("build_platform") + build_type = task_attrs.get("build_type") + if not platform or not build_type: + return True + combined_platform = f"{platform}/{build_type}" + if only_platforms and combined_platform not in only_platforms: + return True + if not_platforms and combined_platform in not_platforms: + return True + if only_attributes: + if not set(only_attributes) & set(task_attrs): + # make sure any attribute exists + return True + if not_attributes: + if set(not_attributes) & set(task_attrs): + return True + return False + + +def group_tasks(config, tasks): + group_by_fn = GROUP_BY_MAP[config["group-by"]] + + groups = group_by_fn(config, tasks) + + for combinations in groups.values(): + kinds = [f.kind for f in combinations] + assert_unique_members( + kinds, + error_msg=("Multi_dep.py should have filtered down to one task per kind"), + ) + dependencies = {t.kind: copy_task(t) for t in combinations} + yield dependencies + + +@group_by("platform") +def platform_grouping(config, tasks): + groups = {} + for task in tasks: + if task.kind not in config.get("kind-dependencies", []): + continue + if skip_only_or_not(config, task): + continue + platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + product = task.attributes.get( + "shipping_product", task.task.get("shipping-product") + ) + + groups.setdefault((platform, build_type, product), []).append(task) + return groups + + +@group_by("single-locale") +def single_locale_grouping(config, tasks): + """Split by a single locale (but also by platform, build-type, product) + + The locale can be `None` (en-US build/signing/repackage), a single locale, + or multiple locales per task, e.g. for l10n chunking. In the case of a task + with, say, five locales, the task will show up in all five locale groupings. + + This grouping is written for non-partner-repack beetmover, but might also + be useful elsewhere. + + """ + groups = {} + + for task in tasks: + if task.kind not in config.get("kind-dependencies", []): + continue + if skip_only_or_not(config, task): + continue + platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + product = task.attributes.get( + "shipping_product", task.task.get("shipping-product") + ) + task_locale = task.attributes.get("locale") + chunk_locales = task.attributes.get("chunk_locales") + locales = chunk_locales or [task_locale] + + for locale in locales: + locale_key = (platform, build_type, product, locale) + groups.setdefault(locale_key, []) + if task not in groups[locale_key]: + groups[locale_key].append(task) + + return groups + + +@group_by("chunk-locales") +def chunk_locale_grouping(config, tasks): + """Split by a chunk_locale (but also by platform, build-type, product) + + This grouping is written for mac signing with notarization, but might also + be useful elsewhere. + + """ + groups = {} + + for task in tasks: + if task.kind not in config.get("kind-dependencies", []): + continue + if skip_only_or_not(config, task): + continue + platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + product = task.attributes.get( + "shipping_product", task.task.get("shipping-product") + ) + chunk_locales = tuple(sorted(task.attributes.get("chunk_locales", []))) + + chunk_locale_key = (platform, build_type, product, chunk_locales) + groups.setdefault(chunk_locale_key, []) + if task not in groups[chunk_locale_key]: + groups[chunk_locale_key].append(task) + + return groups + + +@group_by("partner-repack-ids") +def partner_repack_ids_grouping(config, tasks): + """Split by partner_repack_ids (but also by platform, build-type, product) + + This grouping is written for release-{eme-free,partner}-repack-signing. + + """ + groups = {} + + for task in tasks: + if task.kind not in config.get("kind-dependencies", []): + continue + if skip_only_or_not(config, task): + continue + platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + product = task.attributes.get( + "shipping_product", task.task.get("shipping-product") + ) + partner_repack_ids = tuple( + sorted(task.task.get("extra", {}).get("repack_ids", [])) + ) + + partner_repack_ids_key = (platform, build_type, product, partner_repack_ids) + groups.setdefault(partner_repack_ids_key, []) + if task not in groups[partner_repack_ids_key]: + groups[partner_repack_ids_key].append(task) + + return groups + + +def assert_unique_members(kinds, error_msg=None): + if len(kinds) != len(set(kinds)): + raise Exception(error_msg) + + +def get_primary_dep(config, dep_tasks): + """Find the dependent task to inherit attributes from. + + If ``primary-dependency`` is defined in ``kind.yml`` and is a string, + then find the first dep with that task kind and return it. If it is + defined and is a list, the first kind in that list with a matching dep + is the primary dependency. If it's undefined, return the first dep. + + """ + primary_dependencies = config.get("primary-dependency") + if isinstance(primary_dependencies, str): + primary_dependencies = [primary_dependencies] + if not primary_dependencies: + assert len(dep_tasks) == 1, "Must define a primary-dependency!" + return list(dep_tasks.values())[0] + primary_dep = None + for primary_kind in primary_dependencies: + for dep_kind in dep_tasks: + if dep_kind == primary_kind: + assert ( + primary_dep is None + ), "Too many primary dependent tasks in dep_tasks: {}!".format( + [t.label for t in dep_tasks] + ) + primary_dep = dep_tasks[dep_kind] + if primary_dep is None: + raise Exception( + "Can't find dependency of {}: {}".format( + config["primary-dependency"], config + ) + ) + return primary_dep diff --git a/taskcluster/gecko_taskgraph/loader/single_dep.py b/taskcluster/gecko_taskgraph/loader/single_dep.py new file mode 100644 index 0000000000..caea4b85d0 --- /dev/null +++ b/taskcluster/gecko_taskgraph/loader/single_dep.py @@ -0,0 +1,76 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.task import Task +from taskgraph.util.schema import Schema +from voluptuous import Required + +from gecko_taskgraph.util.copy_task import copy_task + +schema = Schema( + { + Required("primary-dependency", "primary dependency task"): Task, + } +) + + +def loader(kind, path, config, params, loaded_tasks): + """ + Load tasks based on the jobs dependant kinds. + + The `only-for-build-platforms` kind configuration, if specified, will limit + the build platforms for which a job will be created. Alternatively there is + 'not-for-build-platforms' kind configuration which will be consulted only after + 'only-for-build-platforms' is checked (if present), and omit any jobs where the + build platform matches. + + Optional `only-for-attributes` kind configuration, if specified, will limit + the jobs chosen to ones which have the specified attribute, with the specified + value. + + Optional `job-template` kind configuration value, if specified, will be used to + pass configuration down to the specified transforms used. + """ + only_platforms = config.get("only-for-build-platforms") + not_platforms = config.get("not-for-build-platforms") + only_attributes = config.get("only-for-attributes") + job_template = config.get("job-template") + + for task in loaded_tasks: + if task.kind not in config.get("kind-dependencies", []): + continue + + if only_platforms or not_platforms: + build_platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + if not build_platform or not build_type: + continue + platform = f"{build_platform}/{build_type}" + if only_platforms and platform not in only_platforms: + continue + elif not_platforms and platform in not_platforms: + continue + + if only_attributes: + config_attrs = set(only_attributes) + if not config_attrs & set(task.attributes): + # make sure any attribute exists + continue + + job = { + "primary-dependency": task, + } + + if job_template: + job.update(copy_task(job_template)) + + # copy shipping_product from upstream + product = task.attributes.get( + "shipping_product", task.task.get("shipping-product") + ) + if product: + job.setdefault("shipping-product", product) + + yield job diff --git a/taskcluster/gecko_taskgraph/loader/test.py b/taskcluster/gecko_taskgraph/loader/test.py new file mode 100644 index 0000000000..c97acecd1a --- /dev/null +++ b/taskcluster/gecko_taskgraph/loader/test.py @@ -0,0 +1,142 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from taskgraph.util.yaml import load_yaml + +from gecko_taskgraph.util.copy_task import copy_task + +from .transform import loader as transform_loader + +logger = logging.getLogger(__name__) + + +def loader(kind, path, config, params, loaded_tasks): + """ + Generate tasks implementing Gecko tests. + """ + + builds_by_platform = get_builds_by_platform( + dep_kind="build", loaded_tasks=loaded_tasks + ) + signed_builds_by_platform = get_builds_by_platform( + dep_kind="build-signing", loaded_tasks=loaded_tasks + ) + + # get the test platforms for those build tasks + test_platforms_cfg = load_yaml(path, "test-platforms.yml") + test_platforms = get_test_platforms( + test_platforms_cfg, builds_by_platform, signed_builds_by_platform + ) + + # expand the test sets for each of those platforms + test_sets_cfg = load_yaml(path, "test-sets.yml") + test_platforms = expand_tests(test_sets_cfg, test_platforms) + + # load the test descriptions + tests = transform_loader(kind, path, config, params, loaded_tasks) + test_descriptions = {t.pop("name"): t for t in tests} + + # generate all tests for all test platforms + for test_platform_name, test_platform in test_platforms.items(): + for test_name in test_platform["test-names"]: + test = copy_task(test_descriptions[test_name]) + test["build-platform"] = test_platform["build-platform"] + test["test-platform"] = test_platform_name + test["build-label"] = test_platform["build-label"] + if test_platform.get("build-signing-label", None): + test["build-signing-label"] = test_platform["build-signing-label"] + + test["build-attributes"] = test_platform["build-attributes"] + test["test-name"] = test_name + if test_platform.get("shippable"): + test.setdefault("attributes", {})["shippable"] = True + test["attributes"]["shipping_product"] = test_platform[ + "shipping_product" + ] + + logger.debug( + "Generating tasks for test {} on platform {}".format( + test_name, test["test-platform"] + ) + ) + yield test + + +def get_builds_by_platform(dep_kind, loaded_tasks): + """Find the build tasks on which tests will depend, keyed by + platform/type. Returns a dictionary mapping build platform to task.""" + builds_by_platform = {} + for task in loaded_tasks: + if task.kind != dep_kind: + continue + + build_platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + if not build_platform or not build_type: + continue + platform = f"{build_platform}/{build_type}" + if platform in builds_by_platform: + raise Exception("multiple build jobs for " + platform) + builds_by_platform[platform] = task + return builds_by_platform + + +def get_test_platforms( + test_platforms_cfg, builds_by_platform, signed_builds_by_platform={} +): + """Get the test platforms for which test tasks should be generated, + based on the available build platforms. Returns a dictionary mapping + test platform to {test-set, build-platform, build-label}.""" + test_platforms = {} + for test_platform, cfg in test_platforms_cfg.items(): + build_platform = cfg["build-platform"] + if build_platform not in builds_by_platform: + logger.warning( + "No build task with platform {}; ignoring test platform {}".format( + build_platform, test_platform + ) + ) + continue + test_platforms[test_platform] = { + "build-platform": build_platform, + "build-label": builds_by_platform[build_platform].label, + "build-attributes": builds_by_platform[build_platform].attributes, + } + + if builds_by_platform[build_platform].attributes.get("shippable"): + test_platforms[test_platform]["shippable"] = builds_by_platform[ + build_platform + ].attributes["shippable"] + test_platforms[test_platform]["shipping_product"] = builds_by_platform[ + build_platform + ].attributes["shipping_product"] + + test_platforms[test_platform].update(cfg) + + return test_platforms + + +def expand_tests(test_sets_cfg, test_platforms): + """Expand the test sets in `test_platforms` out to sets of test names. + Returns a dictionary like `get_test_platforms`, with an additional + `test-names` key for each test platform, containing a set of test + names.""" + rv = {} + for test_platform, cfg in test_platforms.items(): + test_sets = cfg["test-sets"] + if not set(test_sets) <= set(test_sets_cfg): + raise Exception( + "Test sets {} for test platform {} are not defined".format( + ", ".join(test_sets), test_platform + ) + ) + test_names = set() + for test_set in test_sets: + test_names.update(test_sets_cfg[test_set]) + rv[test_platform] = cfg.copy() + rv[test_platform]["test-names"] = test_names + return rv diff --git a/taskcluster/gecko_taskgraph/loader/transform.py b/taskcluster/gecko_taskgraph/loader/transform.py new file mode 100644 index 0000000000..1e513bcb73 --- /dev/null +++ b/taskcluster/gecko_taskgraph/loader/transform.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +from taskgraph.util.yaml import load_yaml + +from ..util.templates import merge + +logger = logging.getLogger(__name__) + + +def loader(kind, path, config, params, loaded_tasks): + """ + Get the input elements that will be transformed into tasks in a generic + way. The elements themselves are free-form, and become the input to the + first transform. + + By default, this reads jobs from the `jobs` key, or from yaml files + named by `jobs-from`. The entities are read from mappings, and the + keys to those mappings are added in the `name` key of each entity. + + If there is a `job-defaults` config, then every job is merged with it. + This provides a simple way to set default values for all jobs of a kind. + The `job-defaults` key can also be specified in a yaml file pointed to by + `jobs-from`. In this case it will only apply to tasks defined in the same + file. + + Other kind implementations can use a different loader function to + produce inputs and hand them to `transform_inputs`. + """ + + def jobs(): + defaults = config.get("job-defaults") + for name, job in config.get("jobs", {}).items(): + if defaults: + job = merge(defaults, job) + job["job-from"] = "kind.yml" + yield name, job + + for filename in config.get("jobs-from", []): + tasks = load_yaml(path, filename) + + file_defaults = tasks.pop("job-defaults", None) + if defaults: + file_defaults = merge(defaults, file_defaults or {}) + + for name, job in tasks.items(): + if file_defaults: + job = merge(file_defaults, job) + job["job-from"] = filename + yield name, job + + for name, job in jobs(): + job["name"] = name + logger.debug(f"Generating tasks for {kind} {name}") + yield job diff --git a/taskcluster/gecko_taskgraph/main.py b/taskcluster/gecko_taskgraph/main.py new file mode 100644 index 0000000000..bb49ba6000 --- /dev/null +++ b/taskcluster/gecko_taskgraph/main.py @@ -0,0 +1,765 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import atexit +import json +import logging +import os +import re +import shutil +import subprocess +import sys +import tempfile +import traceback +from collections import namedtuple +from concurrent.futures import ProcessPoolExecutor, as_completed +from pathlib import Path +from typing import Any, List + +import appdirs +import yaml + +Command = namedtuple("Command", ["func", "args", "kwargs", "defaults"]) +commands = {} + + +def command(*args, **kwargs): + defaults = kwargs.pop("defaults", {}) + + def decorator(func): + commands[args[0]] = Command(func, args, kwargs, defaults) + return func + + return decorator + + +def argument(*args, **kwargs): + def decorator(func): + if not hasattr(func, "args"): + func.args = [] + func.args.append((args, kwargs)) + return func + + return decorator + + +def format_taskgraph_labels(taskgraph): + return "\n".join( + sorted( + taskgraph.tasks[index].label for index in taskgraph.graph.visit_postorder() + ) + ) + + +def format_taskgraph_json(taskgraph): + return json.dumps( + taskgraph.to_json(), sort_keys=True, indent=2, separators=(",", ": ") + ) + + +def format_taskgraph_yaml(taskgraph): + return yaml.safe_dump(taskgraph.to_json(), default_flow_style=False) + + +def get_filtered_taskgraph(taskgraph, tasksregex): + """ + Filter all the tasks on basis of a regular expression + and returns a new TaskGraph object + """ + from taskgraph.graph import Graph + from taskgraph.taskgraph import TaskGraph + + # return original taskgraph if no regular expression is passed + if not tasksregex: + return taskgraph + named_links_dict = taskgraph.graph.named_links_dict() + filteredtasks = {} + filterededges = set() + regexprogram = re.compile(tasksregex) + + for key in taskgraph.graph.visit_postorder(): + task = taskgraph.tasks[key] + if regexprogram.match(task.label): + filteredtasks[key] = task + for depname, dep in named_links_dict[key].items(): + if regexprogram.match(dep): + filterededges.add((key, dep, depname)) + filtered_taskgraph = TaskGraph( + filteredtasks, Graph(set(filteredtasks), filterededges) + ) + return filtered_taskgraph + + +FORMAT_METHODS = { + "labels": format_taskgraph_labels, + "json": format_taskgraph_json, + "yaml": format_taskgraph_yaml, +} + + +def get_taskgraph_generator(root, parameters): + """Helper function to make testing a little easier.""" + from taskgraph.generator import TaskGraphGenerator + + return TaskGraphGenerator(root_dir=root, parameters=parameters) + + +def format_taskgraph(options, parameters, logfile=None): + import taskgraph + from taskgraph.parameters import parameters_loader + + if logfile: + handler = logging.FileHandler(logfile, mode="w") + if logging.root.handlers: + oldhandler = logging.root.handlers[-1] + logging.root.removeHandler(oldhandler) + handler.setFormatter(oldhandler.formatter) + logging.root.addHandler(handler) + + if options["fast"]: + taskgraph.fast = True + + if isinstance(parameters, str): + parameters = parameters_loader( + parameters, + overrides={"target-kind": options.get("target_kind")}, + strict=False, + ) + + tgg = get_taskgraph_generator(options.get("root"), parameters) + + tg = getattr(tgg, options["graph_attr"]) + tg = get_filtered_taskgraph(tg, options["tasks_regex"]) + format_method = FORMAT_METHODS[options["format"] or "labels"] + return format_method(tg) + + +def dump_output(out, path=None, params_spec=None): + from taskgraph.parameters import Parameters + + params_name = Parameters.format_spec(params_spec) + fh = None + if path: + # Substitute params name into file path if necessary + if params_spec and "{params}" not in path: + name, ext = os.path.splitext(path) + name += "_{params}" + path = name + ext + + path = path.format(params=params_name) + fh = open(path, "w") + else: + print( + "Dumping result with parameters from {}:".format(params_name), + file=sys.stderr, + ) + print(out + "\n", file=fh) + + +def generate_taskgraph(options, parameters, logdir): + from taskgraph.parameters import Parameters + + def logfile(spec): + """Determine logfile given a parameters specification.""" + if logdir is None: + return None + return os.path.join( + logdir, + "{}_{}.log".format(options["graph_attr"], Parameters.format_spec(spec)), + ) + + # Don't bother using futures if there's only one parameter. This can make + # tracebacks a little more readable and avoids additional process overhead. + if len(parameters) == 1: + spec = parameters[0] + out = format_taskgraph(options, spec, logfile(spec)) + dump_output(out, options["output_file"]) + return + + futures = {} + with ProcessPoolExecutor() as executor: + for spec in parameters: + f = executor.submit(format_taskgraph, options, spec, logfile(spec)) + futures[f] = spec + + for future in as_completed(futures): + output_file = options["output_file"] + spec = futures[future] + e = future.exception() + if e: + out = "".join(traceback.format_exception(type(e), e, e.__traceback__)) + if options["diff"]: + # Dump to console so we don't accidentally diff the tracebacks. + output_file = None + else: + out = future.result() + + dump_output( + out, + path=output_file, + params_spec=spec if len(parameters) > 1 else None, + ) + + +@command( + "tasks", + help="Show all tasks in the taskgraph.", + defaults={"graph_attr": "full_task_set"}, +) +@command( + "full", help="Show the full taskgraph.", defaults={"graph_attr": "full_task_graph"} +) +@command( + "target", + help="Show the set of target tasks.", + defaults={"graph_attr": "target_task_set"}, +) +@command( + "target-graph", + help="Show the target graph.", + defaults={"graph_attr": "target_task_graph"}, +) +@command( + "optimized", + help="Show the optimized graph.", + defaults={"graph_attr": "optimized_task_graph"}, +) +@command( + "morphed", + help="Show the morphed graph.", + defaults={"graph_attr": "morphed_task_graph"}, +) +@argument("--root", "-r", help="root of the taskgraph definition relative to topsrcdir") +@argument("--quiet", "-q", action="store_true", help="suppress all logging output") +@argument( + "--verbose", "-v", action="store_true", help="include debug-level logging output" +) +@argument( + "--json", + "-J", + action="store_const", + dest="format", + const="json", + help="Output task graph as a JSON object", +) +@argument( + "--yaml", + "-Y", + action="store_const", + dest="format", + const="yaml", + help="Output task graph as a YAML object", +) +@argument( + "--labels", + "-L", + action="store_const", + dest="format", + const="labels", + help="Output the label for each task in the task graph (default)", +) +@argument( + "--parameters", + "-p", + default=None, + action="append", + help="Parameters to use for the generation. Can be a path to file (.yml or " + ".json; see `taskcluster/docs/parameters.rst`), a directory (containing " + "parameters files), a url, of the form `project=mozilla-central` to download " + "latest parameters file for the specified project from CI, or of the form " + "`task-id=` to download parameters from the specified " + "decision task. Can be specified multiple times, in which case multiple " + "generations will happen from the same invocation (one per parameters " + "specified).", +) +@argument( + "--no-optimize", + dest="optimize", + action="store_false", + default="true", + help="do not remove tasks from the graph that are found in the " + "index (a.k.a. optimize the graph)", +) +@argument( + "-o", + "--output-file", + default=None, + help="file path to store generated output.", +) +@argument( + "--tasks-regex", + "--tasks", + default=None, + help="only return tasks with labels matching this regular " "expression.", +) +@argument( + "--target-kind", + default=None, + help="only return tasks that are of the given kind, or their dependencies.", +) +@argument( + "-F", + "--fast", + default=False, + action="store_true", + help="enable fast task generation for local debugging.", +) +@argument( + "--diff", + const="default", + nargs="?", + default=None, + help="Generate and diff the current taskgraph against another revision. " + "Without args the base revision will be used. A revision specifier such as " + "the hash or `.~1` (hg) or `HEAD~1` (git) can be used as well.", +) +def show_taskgraph(options): + from mozversioncontrol import get_repository_object as get_repository + from taskgraph.parameters import Parameters, parameters_loader + + if options.pop("verbose", False): + logging.root.setLevel(logging.DEBUG) + + repo = None + cur_ref = None + diffdir = None + output_file = options["output_file"] + + if options["diff"]: + repo = get_repository(os.getcwd()) + + if not repo.working_directory_clean(): + print( + "abort: can't diff taskgraph with dirty working directory", + file=sys.stderr, + ) + return 1 + + # We want to return the working directory to the current state + # as best we can after we're done. In all known cases, using + # branch or bookmark (which are both available on the VCS object) + # as `branch` is preferable to a specific revision. + cur_ref = repo.branch or repo.head_ref[:12] + + diffdir = tempfile.mkdtemp() + atexit.register( + shutil.rmtree, diffdir + ) # make sure the directory gets cleaned up + options["output_file"] = os.path.join( + diffdir, f"{options['graph_attr']}_{cur_ref}" + ) + print(f"Generating {options['graph_attr']} @ {cur_ref}", file=sys.stderr) + + parameters: List[Any[str, Parameters]] = options.pop("parameters") + if not parameters: + overrides = { + "target-kind": options.get("target_kind"), + } + parameters = [ + parameters_loader(None, strict=False, overrides=overrides) + ] # will use default values + + for param in parameters[:]: + if isinstance(param, str) and os.path.isdir(param): + parameters.remove(param) + parameters.extend( + [ + p.as_posix() + for p in Path(param).iterdir() + if p.suffix in (".yml", ".json") + ] + ) + + logdir = None + if len(parameters) > 1: + # Log to separate files for each process instead of stderr to + # avoid interleaving. + basename = os.path.basename(os.getcwd()) + logdir = os.path.join(appdirs.user_log_dir("taskgraph"), basename) + if not os.path.isdir(logdir): + os.makedirs(logdir) + else: + # Only setup logging if we have a single parameter spec. Otherwise + # logging will go to files. This is also used as a hook for Gecko + # to setup its `mach` based logging. + setup_logging() + + generate_taskgraph(options, parameters, logdir) + + if options["diff"]: + assert diffdir is not None + assert repo is not None + + # Reload taskgraph modules to pick up changes and clear global state. + for mod in sys.modules.copy(): + if mod != __name__ and mod.split(".", 1)[0].endswith( + ("taskgraph", "mozbuild") + ): + del sys.modules[mod] + + # Ensure gecko_taskgraph is ahead of taskcluster_taskgraph in sys.path. + # Without this, we may end up validating some things against the wrong + # schema. + import gecko_taskgraph # noqa + + if options["diff"] == "default": + base_ref = repo.base_ref + else: + base_ref = options["diff"] + + try: + repo.update(base_ref) + base_ref = repo.head_ref[:12] + options["output_file"] = os.path.join( + diffdir, f"{options['graph_attr']}_{base_ref}" + ) + print(f"Generating {options['graph_attr']} @ {base_ref}", file=sys.stderr) + generate_taskgraph(options, parameters, logdir) + finally: + repo.update(cur_ref) + + # Generate diff(s) + diffcmd = [ + "diff", + "-U20", + "--report-identical-files", + f"--label={options['graph_attr']}@{base_ref}", + f"--label={options['graph_attr']}@{cur_ref}", + ] + + non_fatal_failures = [] + for spec in parameters: + base_path = os.path.join(diffdir, f"{options['graph_attr']}_{base_ref}") + cur_path = os.path.join(diffdir, f"{options['graph_attr']}_{cur_ref}") + + params_name = None + if len(parameters) > 1: + params_name = Parameters.format_spec(spec) + base_path += f"_{params_name}" + cur_path += f"_{params_name}" + + # If the base or cur files are missing it means that generation + # failed. If one of them failed but not the other, the failure is + # likely due to the patch making changes to taskgraph in modules + # that don't get reloaded (safe to ignore). If both generations + # failed, there's likely a real issue. + base_missing = not os.path.isfile(base_path) + cur_missing = not os.path.isfile(cur_path) + if base_missing != cur_missing: # != is equivalent to XOR for booleans + non_fatal_failures.append(os.path.basename(base_path)) + continue + + try: + # If the output file(s) are missing, this command will raise + # CalledProcessError with a returncode > 1. + proc = subprocess.run( + diffcmd + [base_path, cur_path], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + check=True, + ) + diff_output = proc.stdout + returncode = 0 + except subprocess.CalledProcessError as e: + # returncode 1 simply means diffs were found + if e.returncode != 1: + print(e.stderr, file=sys.stderr) + raise + diff_output = e.output + returncode = e.returncode + + dump_output( + diff_output, + # Don't bother saving file if no diffs were found. Log to + # console in this case instead. + path=None if returncode == 0 else output_file, + params_spec=spec if len(parameters) > 1 else None, + ) + + if non_fatal_failures: + failstr = "\n ".join(sorted(non_fatal_failures)) + print( + "WARNING: Diff skipped for the following generation{s} " + "due to failures:\n {failstr}".format( + s="s" if len(non_fatal_failures) > 1 else "", failstr=failstr + ), + file=sys.stderr, + ) + + if options["format"] != "json": + print( + "If you were expecting differences in task bodies " + 'you should pass "-J"\n', + file=sys.stderr, + ) + + if len(parameters) > 1: + print("See '{}' for logs".format(logdir), file=sys.stderr) + + +@command("build-image", help="Build a Docker image") +@argument("image_name", help="Name of the image to build") +@argument( + "-t", "--tag", help="tag that the image should be built as.", metavar="name:tag" +) +@argument( + "--context-only", + help="File name the context tarball should be written to." + "with this option it will only build the context.tar.", + metavar="context.tar", +) +def build_image(args): + from gecko_taskgraph.docker import build_context, build_image + + if args["context_only"] is None: + build_image(args["image_name"], args["tag"], os.environ) + else: + build_context(args["image_name"], args["context_only"], os.environ) + + +@command( + "load-image", + help="Load a pre-built Docker image. Note that you need to " + "have docker installed and running for this to work.", +) +@argument( + "--task-id", + help="Load the image at public/image.tar.zst in this task, " + "rather than searching the index", +) +@argument( + "-t", + "--tag", + help="tag that the image should be loaded as. If not " + "image will be loaded with tag from the tarball", + metavar="name:tag", +) +@argument( + "image_name", + nargs="?", + help="Load the image of this name based on the current " + "contents of the tree (as built for mozilla-central " + "or mozilla-inbound)", +) +def load_image(args): + from gecko_taskgraph.docker import load_image_by_name, load_image_by_task_id + + if not args.get("image_name") and not args.get("task_id"): + print("Specify either IMAGE-NAME or TASK-ID") + sys.exit(1) + try: + if args["task_id"]: + ok = load_image_by_task_id(args["task_id"], args.get("tag")) + else: + ok = load_image_by_name(args["image_name"], args.get("tag")) + if not ok: + sys.exit(1) + except Exception: + traceback.print_exc() + sys.exit(1) + + +@command("image-digest", help="Print the digest of a docker image.") +@argument( + "image_name", + help="Print the digest of the image of this name based on the current " + "contents of the tree.", +) +def image_digest(args): + from gecko_taskgraph.docker import get_image_digest + + try: + digest = get_image_digest(args["image_name"]) + print(digest) + except Exception: + traceback.print_exc() + sys.exit(1) + + +@command("decision", help="Run the decision task") +@argument("--root", "-r", help="root of the taskgraph definition relative to topsrcdir") +@argument( + "--message", + required=False, + help=argparse.SUPPRESS, +) +@argument( + "--project", + required=True, + help="Project to use for creating task graph. Example: --project=try", +) +@argument("--pushlog-id", dest="pushlog_id", required=True, default="0") +@argument("--pushdate", dest="pushdate", required=True, type=int, default=0) +@argument("--owner", required=True, help="email address of who owns this graph") +@argument("--level", required=True, help="SCM level of this repository") +@argument( + "--target-tasks-method", help="method for selecting the target tasks to generate" +) +@argument( + "--repository-type", + required=True, + help='Type of repository, either "hg" or "git"', +) +@argument("--base-repository", required=True, help='URL for "base" repository to clone') +@argument( + "--base-ref", default="", help='Reference of the revision in the "base" repository' +) +@argument( + "--base-rev", + default="", + help="Taskgraph decides what to do based on the revision range between " + "`--base-rev` and `--head-rev`. Value is determined automatically if not provided", +) +@argument( + "--head-repository", + required=True, + help='URL for "head" repository to fetch revision from', +) +@argument( + "--head-ref", required=True, help="Reference (this is same as rev usually for hg)" +) +@argument( + "--head-rev", required=True, help="Commit revision to use from head repository" +) +@argument("--head-tag", help="Tag attached to the revision", default="") +@argument( + "--tasks-for", required=True, help="the tasks_for value used to generate this task" +) +@argument("--try-task-config-file", help="path to try task configuration file") +def decision(options): + from gecko_taskgraph.decision import taskgraph_decision + + taskgraph_decision(options) + + +@command("action-callback", description="Run action callback used by action tasks") +@argument( + "--root", + "-r", + default="taskcluster/ci", + help="root of the taskgraph definition relative to topsrcdir", +) +def action_callback(options): + from gecko_taskgraph.actions import trigger_action_callback + from gecko_taskgraph.actions.util import get_parameters + + try: + # the target task for this action (or null if it's a group action) + task_id = json.loads(os.environ.get("ACTION_TASK_ID", "null")) + # the target task group for this action + task_group_id = os.environ.get("ACTION_TASK_GROUP_ID", None) + input = json.loads(os.environ.get("ACTION_INPUT", "null")) + callback = os.environ.get("ACTION_CALLBACK", None) + root = options["root"] + + parameters = get_parameters(task_group_id) + + return trigger_action_callback( + task_group_id=task_group_id, + task_id=task_id, + input=input, + callback=callback, + parameters=parameters, + root=root, + test=False, + ) + except Exception: + traceback.print_exc() + sys.exit(1) + + +@command("test-action-callback", description="Run an action callback in a testing mode") +@argument( + "--root", + "-r", + default="taskcluster/ci", + help="root of the taskgraph definition relative to topsrcdir", +) +@argument( + "--parameters", + "-p", + default="", + help="parameters file (.yml or .json; see " "`taskcluster/docs/parameters.rst`)`", +) +@argument("--task-id", default=None, help="TaskId to which the action applies") +@argument( + "--task-group-id", default=None, help="TaskGroupId to which the action applies" +) +@argument("--input", default=None, help="Action input (.yml or .json)") +@argument("callback", default=None, help="Action callback name (Python function name)") +def test_action_callback(options): + import taskgraph.parameters + from taskgraph.config import load_graph_config + from taskgraph.util import yaml + + import gecko_taskgraph.actions + + def load_data(filename): + with open(filename) as f: + if filename.endswith(".yml"): + return yaml.load_stream(f) + if filename.endswith(".json"): + return json.load(f) + raise Exception(f"unknown filename {filename}") + + try: + task_id = options["task_id"] + + if options["input"]: + input = load_data(options["input"]) + else: + input = None + + root = options["root"] + graph_config = load_graph_config(root) + trust_domain = graph_config["trust-domain"] + graph_config.register() + + parameters = taskgraph.parameters.load_parameters_file( + options["parameters"], strict=False, trust_domain=trust_domain + ) + parameters.check() + + return gecko_taskgraph.actions.trigger_action_callback( + task_group_id=options["task_group_id"], + task_id=task_id, + input=input, + callback=options["callback"], + parameters=parameters, + root=root, + test=True, + ) + except Exception: + traceback.print_exc() + sys.exit(1) + + +def create_parser(): + parser = argparse.ArgumentParser(description="Interact with taskgraph") + subparsers = parser.add_subparsers() + for _, (func, args, kwargs, defaults) in commands.items(): + subparser = subparsers.add_parser(*args, **kwargs) + for arg in func.args: + subparser.add_argument(*arg[0], **arg[1]) + subparser.set_defaults(command=func, **defaults) + return parser + + +def setup_logging(): + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO + ) + + +def main(args=sys.argv[1:]): + setup_logging() + parser = create_parser() + args = parser.parse_args(args) + try: + args.command(vars(args)) + except Exception: + traceback.print_exc() + sys.exit(1) diff --git a/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml b/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml new file mode 100644 index 0000000000..18974d3c19 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml @@ -0,0 +1,210 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +s3_bucket_paths: + - maven2 +default_locales: # Ignored for geckoview + - en-US +tasktype_map: # Map task reference to task type. + build: build + build-fat-aar: build + build-signing: signing + +# A default entry, which the mappings below extend and override. +# Final 'destinations' will be the product of: +# s3_bucket_paths + destinations + locale_prefix + pretty_name +default: &default + locale_prefix: '' + source_path_modifier: maven/org/mozilla/geckoview/${artifact_id}/${major_version}.${minor_version}.${build_date} + description: "TO_BE_OVERRIDDEN" + destinations: # locale_prefix is appended + - org/mozilla/geckoview/${artifact_id}/${major_version}.${minor_version}.${build_date} + +mapping: + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc: + <<: *default + from: ['build-signing'] + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc: + <<: *default + from: ['build-signing'] + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc: + <<: *default + from: ['build-signing'] + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256 + ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc: + <<: *default + from: ['build-signing'] + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar + ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc: + <<: *default + from: ['build-signing'] + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc + ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5 + ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1: + <<: *default + from: + - build + - build-fat-aar + pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1 + checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1 diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml b/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml new file mode 100644 index 0000000000..e8d7061c78 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml @@ -0,0 +1,430 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +# This file contains exhaustive information about all the release artifacs that +# are needed within a type of release. +# +# Structure +# -------- +# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets +# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of +# destinations. If given an empty locale, it uses these locales instead. +# `tasktype_map` -- mapping between task reference and task type, particularly usefule when +# composing the upstreamArtifacts for scriptworker. +# `platform_names` -- various platform mappings used in reckoning artifacts or other paths +# `default` -- a default entry, which the mappings extend and override in such a way that +# final path full-destinations will be a concatenation of the following: +# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name` +# `from` -- specifies the dependency(ies) from which to expect the particular artifact +# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected +# for all locales or just the default one +# `description` -- brief summary of what that artifact is +# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not +# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location +# for example `public/build` vs `public/build/ach/`. +# `destinations` -- final list of directories where to push the artifacts in S3 +# `pretty_name` -- the final name the artifact will have at destination +# `checksums_path` -- the name to identify one artifact within the checksums file +# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform +# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform +# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present +# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest +# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest + +s3_bucket_paths: + by-platform: + .*devedition.*: + - pub/devedition/candidates + default: + - pub/firefox/candidates +default_locales: + - en-US +tasktype_map: + build: build + signing: signing + mar-signing: signing + partials-signing: signing + repackage: repackage + repackage-deb: repackage + repackage-deb-l10n: repackage + repackage-signing: repackage + repackage-signing-msi: repackage + repackage-signing-shippable-l10n-msix: signing + langpack-copy: scriptworker + attribution: build + attribution-l10n: build +platform_names: + path_platform: + by-platform: + linux-shippable: 'linux-i686' + linux-devedition: 'linux-i686' + linux64-shippable: 'linux-x86_64' + linux64-devedition: 'linux-x86_64' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'mac' + macosx64-devedition: 'mac' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + tools_platform: + by-platform: + linux-shippable: 'linux' + linux-devedition: 'linux-devedition' + linux64-shippable: 'linux64' + linux64-devedition: 'linux64-devedition' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'macosx64' + macosx64-devedition: 'macosx64-devedition' + win32-shippable: 'win32' + win32-devedition: 'win32-devedition' + win64-shippable: 'win64' + win64-devedition: 'win64-devedition' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64-devedition' + win64-asan-reporter-shippable: 'win64-asan-reporter' + filename_platform: + by-platform: + linux-shippable: 'linux' + linux-devedition: 'linux' + linux64-shippable: 'linux64' + linux64-devedition: 'linux64' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'macosx64' + macosx64-devedition: 'macosx64' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64_aarch64' + win64-aarch64-devedition: 'win64_aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + +default: &default + from: + - build + all_locales: false + description: "TO_BE_OVERRIDDEN" + locale_prefix: '${locale}/' + source_path_modifier: + by-locale: + default: '${locale}' + en-US: '' + destinations: + - ${version}-candidates/build${build_number}/${path_platform} + +mapping: + buildhub.json: + <<: *default + all_locales: false + description: "Build related information to be consumed by Buildhub service" + pretty_name: buildhub.json + checksums_path: ${path_platform}/${locale}/buildhub.json + target.common.tests.tar.gz: + <<: *default + description: "Mixture of reftests, mochitests, UI and others, commonly bundled together in a test suite" + pretty_name: firefox-${version}.common.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.common.tests.tar.gz + target.cppunittest.tests.tar.gz: + <<: *default + description: "C++ unittests related in-tree test infrastructure" + pretty_name: firefox-${version}.cppunittest.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.cppunittest.tests.tar.gz + target.crashreporter-symbols.zip: + <<: *default + description: "Crashreporter symbols to be consumed by Socorro" + pretty_name: firefox-${version}.crashreporter-symbols.zip + checksums_path: ${path_platform}/${locale}/firefox-${version}.crashreporter-symbols.zip + target.json: + <<: *default + description: "Various compile and moz_app flags baked together in a json file" + pretty_name: firefox-${version}.json + checksums_path: ${path_platform}/${locale}/firefox-${version}.json + target.mochitest.tests.tar.gz: + <<: *default + description: "Results for running the mochitest testing framework via Javascript function calls" + pretty_name: firefox-${version}.mochitest.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.mochitest.tests.tar.gz + target.mozinfo.json: + <<: *default + description: "Various compile and moz_app flags baked together in a json file" + pretty_name: firefox-${version}.mozinfo.json + checksums_path: ${path_platform}/${locale}/firefox-${version}.mozinfo.json + target.reftest.tests.tar.gz: + <<: *default + description: "Results for running the reftest testing framework via display of two Web pages comparison" + pretty_name: firefox-${version}.reftest.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.reftest.tests.tar.gz + target.talos.tests.tar.gz: + <<: *default + description: "Results for running the talos testing framework to measure performance" + pretty_name: firefox-${version}.talos.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.talos.tests.tar.gz + target.awsy.tests.tar.gz: + <<: *default + description: "Results for running the awsy testing framework to track memory usage" + pretty_name: firefox-${version}.awsy.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.awsy.tests.tar.gz + target.test_packages.json: + <<: *default + description: "File containing metadata about all other files and testing harnesses specifics" + pretty_name: firefox-${version}.test_packages.json + checksums_path: ${path_platform}/${locale}/firefox-${version}.test_packages.json + target.web-platform.tests.tar.gz: + <<: *default + description: "Results for running the webplatform testing framework to cover standard Web platform features" + pretty_name: firefox-${version}.web-platform.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.web-platform.tests.tar.gz + target.xpcshell.tests.tar.gz: + <<: *default + description: "Results for running the xpcshell testing framework to enable XPConnect console application" + pretty_name: firefox-${version}.xpcshell.tests.tar.gz + checksums_path: ${path_platform}/${locale}/firefox-${version}.xpcshell.tests.tar.gz + target_info.txt: + <<: *default + description: "File containing the buildID" + locale_prefix: '' + pretty_name: ${filename_platform}_info.txt + checksums_path: ${filename_platform}_info.txt + destinations: + - ${version}-candidates/build${build_number} + mozharness.zip: + <<: *default + description: "File containing the mozharness set of scripts and configuration used by various automation tools" + pretty_name: mozharness.zip + checksums_path: ${path_platform}/${locale}/mozharness.zip + target.jsshell.zip: + <<: *default + description: "Set of shells to allow test snippets of Javascript code without needing to reload the page" + locale_prefix: '' + pretty_name: jsshell-${path_platform}.zip + checksums_path: jsshell/jsshell-${path_platform}.zip + destinations: + - ${version}-candidates/build${build_number}/jsshell + target.langpack.xpi: + <<: *default + all_locales: true + description: "Localized repack that grabs a packaged en-US Firefox and repackages it as locale-specific Firefox" + locale_prefix: '' + from: + - langpack-copy + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux64-devedition + - macosx64-shippable + - win32-shippable + - win64-shippable + pretty_name: ${locale}.xpi + checksums_path: ${path_platform}/xpi/${locale}.xpi + destinations: + - ${version}-candidates/build${build_number}/${path_platform}/xpi + target.langpack.deb: + <<: *default + all_locales: true + description: "langpack.xpi repackaged as a .deb" + locale_prefix: '' + from: + - repackage-deb-l10n + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux-devedition + - linux64-devedition + pretty_name: ${locale}.deb + checksums_path: ${path_platform}/deb-l10n/${locale}.deb + destinations: + - ${version}-candidates/build${build_number}/${path_platform}/deb-l10n + update_balrog_manifest: false + mar: + <<: *default + description: "Alongside `mbsdiff`, a tool used to generate partials" + locale_prefix: '' + source_path_modifier: 'host/bin' + pretty_name: ${tools_platform}/mar + checksums_path: mar-tools/${tools_platform}/mar + not_for_platforms: + - win32-shippable + - win64-shippable + - win64-aarch64-shippable + - win32-devedition + - win64-devedition + - win64-aarch64-devedition + destinations: + - ${version}-candidates/build${build_number}/mar-tools + mbsdiff: + <<: *default + description: "Alongside `mar`, a tool used to generate partials" + locale_prefix: '' + source_path_modifier: 'host/bin' + pretty_name: ${tools_platform}/mbsdiff + checksums_path: mar-tools/${tools_platform}/mbsdiff + not_for_platforms: + - win32-shippable + - win64-shippable + - win64-aarch64-shippable + - win32-devedition + - win64-devedition + - win64-aarch64-devedition + destinations: + - ${version}-candidates/build${build_number}/mar-tools + target.tar.bz2: + <<: *default + description: "Main installer for Linux platforms" + all_locales: true + from: + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux-devedition + - linux64-devedition + pretty_name: firefox-${version}.tar.bz2 + checksums_path: ${path_platform}/${locale}/firefox-${version}.tar.bz2 + target.tar.bz2.asc: + <<: *default + description: "Detached signature for the checksums file" + all_locales: true + from: + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux-devedition + - linux64-devedition + pretty_name: firefox-${version}.tar.bz2.asc + checksums_path: ${path_platform}/${locale}/firefox-${version}.tar.bz2.asc + target.pkg: + <<: *default + description: "Main package installer for Mac OS X platforms" + all_locales: true + from: + - signing + only_for_platforms: + - macosx64-shippable + pretty_name: Firefox ${version}.pkg + checksums_path: ${path_platform}/${locale}/Firefox ${version}.pkg + target.dmg: + <<: *default + description: "Main package disk image for Mac OS X platforms" + all_locales: true + from: + - repackage + only_for_platforms: + - macosx64-shippable + - macosx64-devedition + pretty_name: Firefox ${version}.dmg + checksums_path: ${path_platform}/${locale}/Firefox ${version}.dmg + target.zip: + <<: *default + description: "Main package installer for Windows platforms" + all_locales: true + from: + - signing + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-aarch64-shippable + - win64-devedition + - win32-devedition + - win64-aarch64-devedition + pretty_name: firefox-${version}.zip + checksums_path: ${path_platform}/${locale}/firefox-${version}.zip + target.installer.exe: + <<: *default + description: "Main installer for Windows platforms" + all_locales: true + source_path_modifier: '' + from: + - attribution + - attribution-l10n + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-aarch64-shippable + - win64-devedition + - win32-devedition + - win64-aarch64-devedition + pretty_name: Firefox Setup ${version}.exe + checksums_path: ${path_platform}/${locale}/Firefox Setup ${version}.exe + target.stub-installer.exe: + <<: *default + description: "Stub installer for Win32 platforms" + all_locales: true + source_path_modifier: '' + from: + - attribution + - attribution-l10n + only_for_platforms: + - win32-shippable + - win32-devedition + pretty_name: Firefox Installer.exe + checksums_path: ${path_platform}/${locale}/Firefox Installer.exe + target.installer.msi: + <<: *default + description: "Windows installer for MSI platform" + all_locales: true + from: + - repackage-signing-msi + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-devedition + - win32-devedition + pretty_name: Firefox Setup ${version}.msi + checksums_path: ${path_platform}/${locale}/Firefox Setup ${version}.msi + target.installer.msix: + <<: *default + description: "Windows MSIX installer" + from: + - repackage-signing-shippable-l10n-msix + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-devedition + - win32-devedition + locale_prefix: 'multi/' + pretty_name: Firefox Setup ${version}.msix + checksums_path: ${path_platform}/multi/Firefox Setup ${version}.msix + target.complete.mar: + <<: *default + description: "Complete MAR to serve as updates" + all_locales: true + from: + - mar-signing + pretty_name: firefox-${version}.complete.mar + checksums_path: update/${path_platform}/${locale}/firefox-${version}.complete.mar + update_balrog_manifest: true + destinations: + - ${version}-candidates/build${build_number}/update/${path_platform} + target.deb: + <<: *default + description: "Firefox as a .deb package" + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux-devedition + - linux64-devedition + pretty_name: firefox-${version}.deb + checksums_path: ${path_platform}/${locale}/firefox-${version}.deb + from: + - repackage-deb + update_balrog_manifest: false + ${partial}: + <<: *default + description: "Partials MAR files to serve as updates" + all_locales: true + from: + - partials-signing + partials_only: true + pretty_name: firefox-${previous_version}-${version}.partial.mar + checksums_path: update/${path_platform}/${locale}/firefox-${previous_version}-${version}.partial.mar + update_balrog_manifest: true + from_buildid: ${from_buildid} + destinations: + - ${version}-candidates/build${build_number}/update/${path_platform} diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml b/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml new file mode 100644 index 0000000000..43ba4cbf15 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml @@ -0,0 +1,94 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +# This file contains exhaustive information about all the release artifacs that +# are needed within a type of release. +# +# Structure +# -------- +# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets +# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of +# destinations. If given an empty locale, it uses these locales instead. +# `tasktype_map` -- mapping between task reference and task type, particularly usefule when +# composing the upstreamArtifacts for scriptworker. +# `platform_names` -- various platform mappings used in reckoning artifacts or other paths +# `default` -- a default entry, which the mappings extend and override in such a way that +# final path full-destinations will be a concatenation of the following: +# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name` +# `from` -- specifies the dependency(ies) from which to expect the particular artifact +# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected +# for all locales or just the default one +# `description` -- brief summary of what that artifact is +# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not +# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location +# for example `public/build` vs `public/build/ach/`. +# `destinations` -- final list of directories where to push the artifacts in S3 +# `pretty_name` -- the final name the artifact will have at destination +# `checksums_path` -- the name to identify one artifact within the checksums file +# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform +# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform +# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present +# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest +# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest + +s3_bucket_paths: + by-platform: + .*devedition.*: + - pub/devedition/candidates + default: + - pub/firefox/candidates +default_locales: + - en-US +tasktype_map: + beetmover-repackage: beetmover + release-beetmover-signed-langpacks: signing +platform_names: + path_platform: + by-platform: + linux-shippable: 'linux-i686' + linux-devedition: 'linux-i686' + linux64-shippable: 'linux-x86_64' + linux64-devedition: 'linux-x86_64' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'mac' + macosx64-devedition: 'mac' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + linux: 'linux-i686' + linux64: 'linux-x86_64' + macosx64: 'mac' + win32: 'win32' + win64: 'win64' + +default: &default + from: + - beetmover-repackage + all_locales: true + description: "TO_BE_OVERRIDDEN" + locale_prefix: '${locale}/' + source_path_modifier: '' + destinations: + - ${version}-candidates/build${build_number}/beetmover-checksums/${path_platform} + +mapping: + target.checksums: + <<: *default + description: "Checksums file containing size, hash, sha algorithm and filename" + pretty_name: firefox-${version}.checksums.beet + checksums_path: beetmover-checksums/${path_platform}/${locale}/firefox-${version}.checksums.beet + target-langpack.checksums: + <<: *default + description: "Checksums file containing size, hash, sha algorithm and filename for the langpack" + locale_prefix: '' + from: + - release-beetmover-signed-langpacks + pretty_name: ${locale}.checksums.beet + checksums_path: beetmover-checksums/${path_platform}/xpi/${locale}.checksums.beet + destinations: + - ${version}-candidates/build${build_number}/beetmover-checksums/${path_platform}/xpi diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml b/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml new file mode 100644 index 0000000000..d2e4f6adf0 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml @@ -0,0 +1,520 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +# This file contains exhaustive information about all the release artifacs that +# are needed within a type of release. +# +# Structure +# -------- +# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets +# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of +# destinations. If given an empty locale, it uses these locales instead. +# `tasktype_map` -- mapping between task reference and task type, particularly usefule when +# composing the upstreamArtifacts for scriptworker. +# `platform_names` -- various platform mappings used in reckoning artifacts or other paths +# `default` -- a default entry, which the mappings extend and override in such a way that +# final path full-destinations will be a concatenation of the following: +# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name` +# `from` -- specifies the dependency(ies) from which to expect the particular artifact +# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected +# for all locales or just the default one +# `description` -- brief summary of what that artifact is +# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not +# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location +# for example `public/build` vs `public/build/ach/`. +# `destinations` -- final list of directories where to push the artifacts in S3 +# `pretty_name` -- the final name the artifact will have at destination +# `checksums_path` -- the name to identify one artifact within the checksums file +# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform +# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform +# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present +# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest +# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest + +s3_bucket_paths: + - pub/firefox/nightly +default_locales: + - en-US +tasktype_map: + build: build + signing: signing + mar-signing: signing + partials-signing: signing + repackage: repackage + repackage-deb: repackage + repackage-deb-l10n: repackage + repackage-signing: repackage + repackage-signing-msi: repackage + repackage-signing-shippable-l10n-msix: signing + langpack-copy: signing + attribution: build + attribution-l10n: build +platform_names: + filename_platform: + by-platform: + linux-shippable: 'linux-i686' + linux-devedition: 'linux-i686' + linux64-shippable: 'linux-x86_64' + linux64-devedition: 'linux-x86_64' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'mac' + macosx64-devedition: 'mac' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + stage_platform: + by-platform: + linux-shippable: 'linux' + linux-devedition: 'linux' + linux64-asan-reporter-shippable: 'linux64-asan-reporter' + linux64-shippable: 'linux64' + linux64-devedition: 'linux64' + macosx64-shippable: 'macosx64' + macosx64-devedition: 'macosx64' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + +default: &default + from: + - build + all_locales: false + description: "TO_BE_OVERRIDDEN" + locale_prefix: '' + source_path_modifier: + by-locale: + default: '${locale}' + en-US: '' + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + +mapping: + buildhub.json: + <<: *default + description: "Build related information to be consumed by Buildhub service" + pretty_name: firefox-${version}.${locale}.${filename_platform}.buildhub.json + checksums_path: firefox-${version}.${locale}.${filename_platform}.buildhub.json + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + KEY: + <<: *default + from: + - signing + description: "Public GPG Key" + pretty_name: KEY + checksums_path: KEY + only_for_platforms: + - linux64-shippable + destinations: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + target.common.tests.tar.gz: + <<: *default + description: "Mixture of reftests, mochitests, UI and others, commonly bundled together in a test suite" + pretty_name: firefox-${version}.${locale}.${filename_platform}.common.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.common.tests.tar.gz + target.cppunittest.tests.tar.gz: + <<: *default + description: "C++ unittests related in-tree test infrastructure" + pretty_name: firefox-${version}.${locale}.${filename_platform}.cppunittest.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.cppunittest.tests.tar.gz + target.crashreporter-symbols.zip: + <<: *default + description: "Crashreporter symbols to be consumed by Socorro" + pretty_name: firefox-${version}.${locale}.${filename_platform}.crashreporter-symbols.zip + checksums_path: firefox-${version}.${locale}.${filename_platform}.crashreporter-symbols.zip + not_for_platforms: + - linux64-asan-reporter-shippable + - win64-asan-reporter-shippable + target.json: + <<: *default + description: "Various compile and moz_app flags baked together in a json file" + pretty_name: firefox-${version}.${locale}.${filename_platform}.json + checksums_path: firefox-${version}.${locale}.${filename_platform}.json + target.mochitest.tests.tar.gz: + <<: *default + description: "Results for running the mochitest testing framework via Javascript function calls" + pretty_name: firefox-${version}.${locale}.${filename_platform}.mochitest.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.mochitest.tests.tar.gz + target.mozinfo.json: + <<: *default + description: "Various compile and moz_app flags baked together in a json file" + pretty_name: firefox-${version}.${locale}.${filename_platform}.mozinfo.json + checksums_path: firefox-${version}.${locale}.${filename_platform}.mozinfo.json + target.reftest.tests.tar.gz: + <<: *default + description: "Results for running the reftest testing framework via display of two Web pages comparison" + pretty_name: firefox-${version}.${locale}.${filename_platform}.reftest.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.reftest.tests.tar.gz + target.talos.tests.tar.gz: + <<: *default + description: "Results for running the talos testing framework to measure performance" + pretty_name: firefox-${version}.${locale}.${filename_platform}.talos.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.talos.tests.tar.gz + target.awsy.tests.tar.gz: + <<: *default + description: "Results for running the awsy testing framework to track memory usage" + pretty_name: firefox-${version}.${locale}.${filename_platform}.awsy.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.awsy.tests.tar.gz + target.test_packages.json: + <<: *default + description: "File containing metadata about all other files and testing harnesses specifics" + pretty_name: firefox-${version}.${locale}.${filename_platform}.test_packages.json + checksums_path: firefox-${version}.${locale}.${filename_platform}.test_packages.json + target.txt: + <<: *default + description: "File containing buildid and revision" + pretty_name: firefox-${version}.${locale}.${filename_platform}.txt + checksums_path: firefox-${version}.${locale}.${filename_platform}.txt + target.web-platform.tests.tar.gz: + <<: *default + description: "Results for running the webplatform testing framework to cover standard Web platform features" + pretty_name: firefox-${version}.${locale}.${filename_platform}.web-platform.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.web-platform.tests.tar.gz + target.xpcshell.tests.tar.gz: + <<: *default + description: "Results for running the xpcshell testing framework to enable XPConnect console application" + pretty_name: firefox-${version}.${locale}.${filename_platform}.xpcshell.tests.tar.gz + checksums_path: firefox-${version}.${locale}.${filename_platform}.xpcshell.tests.tar.gz + target_info.txt: + <<: *default + description: "File containing the buildID" + pretty_name: firefox-${version}.${locale}.${filename_platform}_info.txt + checksums_path: firefox-${version}.${locale}.${filename_platform}_info.txt + mozharness.zip: + <<: *default + description: "File containing the mozharness set of scripts and configuration used by various automation tools" + pretty_name: mozharness.zip + checksums_path: mozharness.zip + target.jsshell.zip: + <<: *default + description: "Set of shells to allow test snippets of Javascript code without needing to reload the page" + pretty_name: jsshell-${filename_platform}.zip + checksums_path: jsshell-${filename_platform}.zip + not_for_platforms: + - linux64-asan-reporter-shippable + - win64-asan-reporter-shippable + target.langpack.xpi: + <<: *default + all_locales: true + description: "Localized repack that grabs a packaged en-US Firefox and repackages it as locale-specific Firefox" + from: + - langpack-copy + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win64-shippable + - win32-shippable + - win64-shippable + - win64-aarch64-shippable + - win64-asan-reporter-shippable + - linux64-asan-reporter-shippable + pretty_name: firefox-${version}.${locale}.langpack.xpi + checksums_path: firefox-${version}.${locale}.langpack.xpi + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + default: + - ${year}/${month}/${upload_date}-${branch}-l10n/${filename_platform}/xpi + - latest-${branch}-l10n/${filename_platform}/xpi + target.langpack.deb: + <<: *default + all_locales: true + description: "langpack.xpi repackaged as a .deb" + from: + - repackage-deb-l10n + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux-devedition + - linux64-devedition + pretty_name: firefox-${version}.${locale}.langpack.deb + checksums_path: firefox-${version}.${locale}.langpack.deb + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + default: + - ${year}/${month}/${upload_date}-${branch}-l10n/${filename_platform}/deb-l10n + - latest-${branch}-l10n/${filename_platform}/deb-l10n + mar: + <<: *default + description: "Alongside `mbsdiff`, a tool used to generate partials" + source_path_modifier: 'host/bin' + pretty_name: mar + checksums_path: mar + not_for_platforms: + - win32-shippable + - win64-shippable + - win64-aarch64-shippable + - win64-asan-reporter-shippable + destinations: + - ${year}/${month}/${upload_date}-${branch}/mar-tools/${stage_platform} + - latest-${branch}/mar-tools/${stage_platform} + mbsdiff: + <<: *default + description: "Alongside `mar`, a tool used to generate partials" + source_path_modifier: 'host/bin' + pretty_name: mbsdiff + checksums_path: mbsdiff + not_for_platforms: + - win32-shippable + - win64-shippable + - win64-aarch64-shippable + - win64-asan-reporter-shippable + destinations: + - ${year}/${month}/${upload_date}-${branch}/mar-tools/${stage_platform} + - latest-${branch}/mar-tools/${stage_platform} + target.tar.bz2: + <<: *default + description: "Main installer for Linux platforms" + all_locales: true + from: + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux64-asan-reporter-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.tar.bz2 + checksums_path: firefox-${version}.${locale}.${filename_platform}.tar.bz2 + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.tar.bz2.asc: + <<: *default + description: "Detached signature for the checksums file" + all_locales: true + from: + - signing + only_for_platforms: + - linux-shippable + - linux64-shippable + - linux64-asan-reporter-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.tar.bz2.asc + checksums_path: firefox-${version}.${locale}.${filename_platform}.tar.bz2.asc + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.pkg: + <<: *default + description: "Main package installer for Mac OS X platforms" + all_locales: true + from: + - signing + only_for_platforms: + - macosx64-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.pkg + checksums_path: firefox-${version}.${locale}.${filename_platform}.pkg + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.dmg: + <<: *default + description: "Main package disk image for Mac OS X platforms" + all_locales: true + from: + - repackage + only_for_platforms: + - macosx64-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.dmg + checksums_path: firefox-${version}.${locale}.${filename_platform}.dmg + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.zip: + <<: *default + description: "Main package installer for Windows platforms" + all_locales: true + from: + - signing + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-aarch64-shippable + - win64-asan-reporter-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.zip + checksums_path: firefox-${version}.${locale}.${filename_platform}.zip + target.installer.exe: + <<: *default + description: "Main installer for Windows platforms" + all_locales: true + source_path_modifier: '' + from: + by-platform: + win64-asan-reporter-shippable: + - repackage-signing + default: + - attribution + - attribution-l10n + only_for_platforms: + - win64-shippable + - win32-shippable + - win64-aarch64-shippable + - win64-asan-reporter-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.installer.exe + checksums_path: firefox-${version}.${locale}.${filename_platform}.installer.exe + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.stub-installer.exe: + <<: *default + description: "Stub installer for Win32 platforms" + all_locales: true + source_path_modifier: '' + from: + - attribution + - attribution-l10n + only_for_platforms: + - win32-shippable + pretty_name: Firefox Installer.${locale}.exe + checksums_path: Firefox Installer.${locale}.exe + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.installer.msi: + <<: *default + description: "Windows installer for MSI platform" + all_locales: true + from: + - repackage-signing-msi + only_for_platforms: + - win64-shippable + - win32-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.installer.msi + checksums_path: firefox-${version}.${locale}.${filename_platform}.installer.msi + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.installer.msix: + <<: *default + description: "Windows MSIX installer" + all_locales: true + from: + - repackage-signing-shippable-l10n-msix + only_for_platforms: + - win64-shippable + - win32-shippable + pretty_name: firefox-${version}.multi.${filename_platform}.installer.msix + checksums_path: firefox-${version}.multi.${filename_platform}.installer.msix + destinations: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + target.complete.mar: + <<: *default + description: "The main installer we ship our products baked within" + all_locales: true + from: + - mar-signing + pretty_name: firefox-${version}.${locale}.${filename_platform}.complete.mar + checksums_path: firefox-${version}.${locale}.${filename_platform}.complete.mar + update_balrog_manifest: true + destinations: + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + target.deb: + <<: *default + description: "Firefox as a .deb package" + from: + - repackage-deb + only_for_platforms: + - linux-shippable + - linux64-shippable + pretty_name: firefox-${version}.${locale}.${filename_platform}.deb + checksums_path: firefox-${version}.${locale}.${filename_platform}.deb + update_balrog_manifest: false + destinations: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + ${partial}: + <<: *default + description: "Partials MAR files to serve as updates" + all_locales: true + from: + - partials-signing + partials_only: true + pretty_name: firefox-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar + checksums_path: firefox-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar + update_balrog_manifest: true + from_buildid: ${from_buildid} + destinations: + by-locale: + en-US: + - partials/${year}/${month}/${upload_date}-${branch} + default: + - partials/${year}/${month}/${upload_date}-${branch}-l10n diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml b/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml new file mode 100644 index 0000000000..f1b81572ab --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +s3_bucket_paths: + by-platform: + .*devedition.*: + - pub/devedition/nightly + default: + - pub/firefox/nightly +default_locales: # if given an empty locale, use these locales + - en-US +tasktype_map: # Map task reference to task type. + beetmover-repackage: beetmover +platform_names: + filename_platform: + by-platform: + linux-shippable: 'linux-i686' + linux-devedition: 'linux-i686' + linux64-shippable: 'linux-x86_64' + linux64-devedition: 'linux-x86_64' + linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter' + macosx64-shippable: 'mac' + macosx64-devedition: 'mac' + win32-shippable: 'win32' + win32-devedition: 'win32' + win64-shippable: 'win64' + win64-devedition: 'win64' + win64-aarch64-shippable: 'win64-aarch64' + win64-aarch64-devedition: 'win64-aarch64' + win64-asan-reporter-shippable: 'win64-asan-reporter' + +# A default entry, which the mappings below extend and override. +# Final 'destinations' will be the product of: +# s3_bucket_paths + destinations + locale_prefix + pretty_name +default: &default + from: + - beetmover-repackage + all_locales: true + description: "TO_BE_OVERRIDDEN" + locale_prefix: '' + source_path_modifier: '' + destinations: # locale_prefix is appended + by-locale: + en-US: + - ${year}/${month}/${upload_date}-${branch} + - latest-${branch} + - latest-${branch}-l10n + default: + - ${year}/${month}/${upload_date}-${branch}-l10n + - latest-${branch}-l10n + +# Configuration for individual files. Extends 'default', above. +mapping: + target.checksums: + <<: *default + description: "Checksums file containing size, hash, sha algorithm and filename" + pretty_name: firefox-${version}.${locale}.${filename_platform}.checksums + checksums_path: firefox-${version}.${locale}.${filename_platform}.checksums diff --git a/taskcluster/gecko_taskgraph/manifests/release_checksums.yml b/taskcluster/gecko_taskgraph/manifests/release_checksums.yml new file mode 100644 index 0000000000..c11e339958 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/release_checksums.yml @@ -0,0 +1,70 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +s3_bucket_paths: + by-platform: + devedition-release: + - pub/devedition/candidates + firefox-release: + - pub/firefox/candidates +default_locales: # if given an empty locale, use these locales + - en-US +tasktype_map: # Map task reference to task type. + release-generate-checksums: build + release-generate-checksums-signing: signing + +# A default entry, which the mappings below extend and override. +# Final 'destinations' will be the product of: +# s3_bucket_paths + destinations + locale_prefix + pretty_name +default: &default + from: + - release-generate-checksums-signing + all_locales: true + description: "TO_BE_OVERRIDDEN" + locale_prefix: '' + source_path_modifier: '' + destinations: # locale_prefix is appended + - ${version}-candidates/build${build_number} + +# Configuration for individual files. Extends 'default', above. +mapping: + SHA256SUMMARY: + <<: *default + description: "Merkle-tree for the release artifacts with sha 256 hashes" + from: + - release-generate-checksums + pretty_name: SHA256SUMMARY + checksums_path: SHA256SUMMARY + SHA512SUMMARY: + <<: *default + description: "Merkle-tree for the release artifacts with sha 512 hashes" + from: + - release-generate-checksums + pretty_name: SHA512SUMMARY + checksums_path: SHA512SUMMARY + KEY: + <<: *default + description: "Public side of the key that was used to sign the release artifacts" + pretty_name: KEY + checksums_path: KEY + SHA256SUMS: + <<: *default + description: "Aggregated checksums with main installers details per platform in sha512 hashes" + pretty_name: SHA256SUMS + checksums_path: SHA256SUMS + SHA256SUMS.asc: + <<: *default + description: "Detached signature for the checksums file" + pretty_name: SHA256SUMS.asc + checksums_path: SHA256SUMS.asc + SHA512SUMS: + <<: *default + description: "Aggregated checksums with main installers details per platform in sha256 hashes" + pretty_name: SHA512SUMS + checksums_path: SHA512SUMS + SHA512SUMS.asc: + <<: *default + description: "Detached signature for the checksums file" + pretty_name: SHA512SUMS.asc + checksums_path: SHA512SUMS.asc diff --git a/taskcluster/gecko_taskgraph/manifests/source_checksums.yml b/taskcluster/gecko_taskgraph/manifests/source_checksums.yml new file mode 100644 index 0000000000..0789bcfa93 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/source_checksums.yml @@ -0,0 +1,52 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +s3_bucket_paths: + by-platform: + devedition-source: + - pub/devedition/candidates + firefox-source: + - pub/firefox/candidates +default_locales: # if given an empty locale, use these locales + - en-US +tasktype_map: # Map task reference to task type. + release-source-checksums-signing: signing + +# A default entry, which the mappings below extend and override. +# Final 'destinations' will be the product of: +# s3_bucket_paths + destinations + locale_prefix + pretty_name +default: &default + from: + - release-source-checksums-signing + all_locales: false + description: "TO_BE_OVERRIDDEN" + locale_prefix: '' + source_path_modifier: '' + destinations: # locale_prefix is appended + - ${version}-candidates/build${build_number}/beetmover-checksums/source + +# Configuration for individual files. Extends 'default', above. +mapping: + target-source.checksums: + <<: *default + description: "Checksums file for the source zip files" + pretty_name: + by-platform: + firefox-source: firefox-${version}.checksums.beet + devedition-source: firefox-${version}.checksums.beet + checksums_path: + by-platform: + firefox-source: firefox-${version}.checksums.beet + devedition-source: firefox-${version}.checksums.beet + target-source.checksums.asc: + <<: *default + description: "Detached signature for the checksums file" + pretty_name: + by-platform: + firefox-source: firefox-${version}.checksums.asc + devedition-source: firefox-${version}.checksums.asc + checksums_path: + by-platform: + firefox-source: firefox-${version}.checksums.asc + devedition-source: firefox-${version}.checksums.asc diff --git a/taskcluster/gecko_taskgraph/manifests/source_files.yml b/taskcluster/gecko_taskgraph/manifests/source_files.yml new file mode 100644 index 0000000000..0f5f5b5250 --- /dev/null +++ b/taskcluster/gecko_taskgraph/manifests/source_files.yml @@ -0,0 +1,52 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +s3_bucket_paths: + by-platform: + devedition-source: + - pub/devedition/candidates + firefox-source: + - pub/firefox/candidates +default_locales: # if given an empty locale, use these locales + - en-US +tasktype_map: # Map task reference to task type. + release-source-signing: signing + +# A default entry, which the mappings below extend and override. +# Final 'destinations' will be the product of: +# s3_bucket_paths + destinations + locale_prefix + pretty_name +default: &default + from: + - release-source-signing + all_locales: false + description: "TO_BE_OVERRIDDEN" + locale_prefix: '' + source_path_modifier: '' + destinations: # locale_prefix is appended + - ${version}-candidates/build${build_number}/source + +# Configuration for individual files. Extends 'default', above. +mapping: + source.tar.xz: + <<: *default + description: "Source file with the in-tree code archived" + pretty_name: + by-platform: + firefox-source: firefox-${version}.source.tar.xz + devedition-source: firefox-${version}.source.tar.xz + checksums_path: + by-platform: + firefox-source: source/firefox-${version}.source.tar.xz + devedition-source: source/firefox-${version}.source.tar.xz + source.tar.xz.asc: + <<: *default + description: "Detached signature for the source file" + pretty_name: + by-platform: + firefox-source: firefox-${version}.source.tar.xz.asc + devedition-source: firefox-${version}.source.tar.xz.asc + checksums_path: + by-platform: + firefox-source: source/firefox-${version}.source.tar.xz.asc + devedition-source: source/firefox-${version}.source.tar.xz.asc diff --git a/taskcluster/gecko_taskgraph/morph.py b/taskcluster/gecko_taskgraph/morph.py new file mode 100644 index 0000000000..1d03ddaab6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/morph.py @@ -0,0 +1,263 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Graph morphs are modifications to task-graphs that take place *after* the +optimization phase. + +These graph morphs are largely invisible to developers running `./mach` +locally, so they should be limited to changes that do not modify the meaning of +the graph. +""" + +# Note that the translation of `{'task-reference': '..'}` and +# `artifact-reference` are handled in the optimization phase (since +# optimization involves dealing with taskIds directly). Similarly, +# `{'relative-datestamp': '..'}` is handled at the last possible moment during +# task creation. + + +import copy +import logging +import os +import re + +from slugid import nice as slugid +from taskgraph.graph import Graph +from taskgraph.morph import register_morph +from taskgraph.task import Task +from taskgraph.taskgraph import TaskGraph + +from .util.workertypes import get_worker_type + +here = os.path.abspath(os.path.dirname(__file__)) +logger = logging.getLogger(__name__) +MAX_ROUTES = 10 + + +def amend_taskgraph(taskgraph, label_to_taskid, to_add): + """Add the given tasks to the taskgraph, returning a new taskgraph""" + new_tasks = taskgraph.tasks.copy() + new_edges = set(taskgraph.graph.edges) + for task in to_add: + new_tasks[task.task_id] = task + assert task.label not in label_to_taskid + label_to_taskid[task.label] = task.task_id + for depname, dep in task.dependencies.items(): + new_edges.add((task.task_id, dep, depname)) + + taskgraph = TaskGraph(new_tasks, Graph(set(new_tasks), new_edges)) + return taskgraph, label_to_taskid + + +def derive_misc_task( + target_task, + purpose, + image, + taskgraph, + label_to_taskid, + parameters, + graph_config, + dependencies, +): + """Create the shell of a task that depends on `dependencies` and on the given docker + image.""" + label = f"{purpose}-{target_task.label}" + + # this is why all docker image tasks are included in the target task graph: we + # need to find them in label_to_taskid, even if nothing else required them + image_taskid = label_to_taskid["docker-image-" + image] + + provisioner_id, worker_type = get_worker_type( + graph_config, + parameters, + "misc", + ) + + deps = copy.copy(dependencies) + deps["docker-image"] = image_taskid + + task_def = { + "provisionerId": provisioner_id, + "workerType": worker_type, + "dependencies": [d for d in deps.values()], + "created": {"relative-datestamp": "0 seconds"}, + "deadline": target_task.task["deadline"], + # no point existing past the parent task's deadline + "expires": target_task.task["deadline"], + "metadata": { + "name": label, + "description": f"{purpose} for {target_task.description}", + "owner": target_task.task["metadata"]["owner"], + "source": target_task.task["metadata"]["source"], + }, + "scopes": [], + "payload": { + "image": { + "path": "public/image.tar.zst", + "taskId": image_taskid, + "type": "task-image", + }, + "features": {"taskclusterProxy": True}, + "maxRunTime": 600, + }, + } + + if image_taskid not in taskgraph.tasks: + # The task above depends on the replaced docker-image not one in + # this current graph. + del deps["docker-image"] + + task = Task( + kind="misc", + label=label, + attributes={}, + task=task_def, + dependencies=deps, + ) + task.task_id = slugid() + return task + + +# these regular expressions capture route prefixes for which we have a star +# scope, allowing them to be summarized. Each should correspond to a star scope +# in each Gecko `assume:repo:hg.mozilla.org/...` role. +SCOPE_SUMMARY_REGEXPS = [ + re.compile(r"(index:insert-task:docker\.images\.v1\.[^.]*\.).*"), + re.compile(r"(index:insert-task:gecko\.v2\.[^.]*\.).*"), + re.compile(r"(index:insert-task:comm\.v2\.[^.]*\.).*"), +] + + +def make_index_task( + parent_task, + taskgraph, + label_to_taskid, + parameters, + graph_config, + index_paths, + index_rank, + purpose, + dependencies, +): + task = derive_misc_task( + parent_task, + purpose, + "index-task", + taskgraph, + label_to_taskid, + parameters, + graph_config, + dependencies, + ) + + # we need to "summarize" the scopes, otherwise a particularly + # namespace-heavy index task might have more scopes than can fit in a + # temporary credential. + scopes = set() + for path in index_paths: + scope = f"index:insert-task:{path}" + for summ_re in SCOPE_SUMMARY_REGEXPS: + match = summ_re.match(scope) + if match: + scope = match.group(1) + "*" + break + scopes.add(scope) + task.task["scopes"] = sorted(scopes) + + task.task["payload"]["command"] = ["insert-indexes.js"] + index_paths + task.task["payload"]["env"] = { + "TARGET_TASKID": parent_task.task_id, + "INDEX_RANK": index_rank, + } + return task + + +@register_morph +def add_index_tasks(taskgraph, label_to_taskid, parameters, graph_config): + """ + The TaskCluster queue only allows 10 routes on a task, but we have tasks + with many more routes, for purposes of indexing. This graph morph adds + "index tasks" that depend on such tasks and do the index insertions + directly, avoiding the limits on task.routes. + """ + logger.debug("Morphing: adding index tasks") + + # Add indexes for tasks that exceed MAX_ROUTES. + added = [] + for label, task in taskgraph.tasks.items(): + if len(task.task.get("routes", [])) <= MAX_ROUTES: + continue + index_paths = [ + r.split(".", 1)[1] for r in task.task["routes"] if r.startswith("index.") + ] + task.task["routes"] = [ + r for r in task.task["routes"] if not r.startswith("index.") + ] + added.append( + make_index_task( + task, + taskgraph, + label_to_taskid, + parameters, + graph_config, + index_paths=index_paths, + index_rank=task.task.get("extra", {}).get("index", {}).get("rank", 0), + purpose="index-task", + dependencies={"parent": task.task_id}, + ) + ) + + if added: + taskgraph, label_to_taskid = amend_taskgraph(taskgraph, label_to_taskid, added) + logger.info(f"Added {len(added)} index tasks") + + return taskgraph, label_to_taskid + + +@register_morph +def add_eager_cache_index_tasks(taskgraph, label_to_taskid, parameters, graph_config): + """ + Some tasks (e.g. cached tasks) we want to exist in the index before they even + run/complete. Our current use is to allow us to depend on an unfinished cached + task in future pushes. This graph morph adds "eager-index tasks" that depend on + the decision task and do the index insertions directly, which does not need to + wait on the pointed at task to complete. + """ + logger.debug("Morphing: Adding eager cached index's") + + added = [] + for label, task in taskgraph.tasks.items(): + if "eager_indexes" not in task.attributes: + continue + eager_indexes = task.attributes["eager_indexes"] + added.append( + make_index_task( + task, + taskgraph, + label_to_taskid, + parameters, + graph_config, + index_paths=eager_indexes, + index_rank=0, # Be sure complete tasks get priority + purpose="eager-index", + dependencies={}, + ) + ) + + if added: + taskgraph, label_to_taskid = amend_taskgraph(taskgraph, label_to_taskid, added) + logger.info(f"Added {len(added)} eager index tasks") + return taskgraph, label_to_taskid + + +@register_morph +def add_try_task_duplicates(taskgraph, label_to_taskid, parameters, graph_config): + try_config = parameters["try_task_config"] + rebuild = try_config.get("rebuild") + if rebuild: + for task in taskgraph.tasks.values(): + if task.label in try_config.get("tasks", []): + task.attributes["task_duplicates"] = rebuild + return taskgraph, label_to_taskid diff --git a/taskcluster/gecko_taskgraph/optimize/__init__.py b/taskcluster/gecko_taskgraph/optimize/__init__.py new file mode 100644 index 0000000000..c2d3fdf839 --- /dev/null +++ b/taskcluster/gecko_taskgraph/optimize/__init__.py @@ -0,0 +1,287 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +The objective of optimization is to remove as many tasks from the graph as +possible, as efficiently as possible, thereby delivering useful results as +quickly as possible. For example, ideally if only a test script is modified in +a push, then the resulting graph contains only the corresponding test suite +task. + +See ``taskcluster/docs/optimization.rst`` for more information. +""" + +from taskgraph.optimize.base import Alias, All, Any, Not, register_strategy, registry +from taskgraph.util.python_path import import_sibling_modules + +# Use the gecko_taskgraph version of 'skip-unless-changed' for now. +registry.pop("skip-unless-changed", None) + +# Trigger registration in sibling modules. +import_sibling_modules() + + +def split_bugbug_arg(arg, substrategies): + """Split args for bugbug based strategies. + + Many bugbug based optimizations require passing an empty dict by reference + to communicate to downstream strategies. This function passes the provided + arg to the first (non bugbug) strategies and a shared empty dict to the + bugbug strategy and all substrategies after it. + """ + from gecko_taskgraph.optimize.bugbug import BugBugPushSchedules + + index = [ + i + for i, strategy in enumerate(substrategies) + if isinstance(strategy, BugBugPushSchedules) + ][0] + + return [arg] * index + [{}] * (len(substrategies) - index) + + +# Register composite strategies. +register_strategy("build", args=("skip-unless-schedules",))(Alias) +register_strategy("test", args=("skip-unless-schedules",))(Alias) +register_strategy("test-inclusive", args=("skip-unless-schedules",))(Alias) +register_strategy("test-verify", args=("skip-unless-schedules",))(Alias) +register_strategy("upload-symbols", args=("never",))(Alias) +register_strategy("reprocess-symbols", args=("never",))(Alias) + + +# Strategy overrides used to tweak the default strategies. These are referenced +# by the `optimize_strategies` parameter. + + +class project: + """Strategies that should be applied per-project.""" + + autoland = { + "test": Any( + # This `Any` strategy implements bi-modal behaviour. It allows different + # strategies on expanded pushes vs regular pushes. + # This first `All` handles "expanded" pushes. + All( + # There are three substrategies in this `All`, the first two act as barriers + # that help determine when to apply the third: + # 1. On backstop pushes, `skip-unless-backstop` returns False. Therefore + # the overall composite strategy is False and we don't optimize. + # 2. On regular pushes, `Not('skip-unless-expanded')` returns False. Therefore + # the overall composite strategy is False and we don't optimize. + # 3. On expanded pushes, the third strategy will determine whether or + # not to optimize each individual task. + # The barrier strategies. + "skip-unless-backstop", + Not("skip-unless-expanded"), + # The actual test strategy applied to "expanded" pushes. + Any( + "skip-unless-schedules", + "bugbug-reduced-manifests-fallback-last-10-pushes", + "platform-disperse", + split_args=split_bugbug_arg, + ), + ), + # This second `All` handles regular (aka not expanded or backstop) + # pushes. + All( + # There are two substrategies in this `All`, the first acts as a barrier + # that determines when to apply the second: + # 1. On expanded pushes (which includes backstops), `skip-unless-expanded` + # returns False. Therefore the overall composite strategy is False and we + # don't optimize. + # 2. On regular pushes, the second strategy will determine whether or + # not to optimize each individual task. + # The barrier strategy. + "skip-unless-expanded", + # The actual test strategy applied to regular pushes. + Any( + "skip-unless-schedules", + "bugbug-reduced-manifests-fallback-low", + "platform-disperse", + split_args=split_bugbug_arg, + ), + ), + ), + "build": All( + "skip-unless-expanded", + Any( + "skip-unless-schedules", + "bugbug-reduced-fallback", + split_args=split_bugbug_arg, + ), + ), + } + """Strategy overrides that apply to autoland.""" + + +class experimental: + """Experimental strategies either under development or used as benchmarks. + + These run as "shadow-schedulers" on each autoland push (tier 3) and/or can be used + with `./mach try auto`. E.g: + + ./mach try auto --strategy relevant_tests + """ + + bugbug_tasks_medium = { + "test": Any( + "skip-unless-schedules", "bugbug-tasks-medium", split_args=split_bugbug_arg + ), + } + """Doesn't limit platforms, medium confidence threshold.""" + + bugbug_tasks_high = { + "test": Any( + "skip-unless-schedules", "bugbug-tasks-high", split_args=split_bugbug_arg + ), + } + """Doesn't limit platforms, high confidence threshold.""" + + bugbug_debug_disperse = { + "test": Any( + "skip-unless-schedules", + "bugbug-low", + "platform-debug", + "platform-disperse", + split_args=split_bugbug_arg, + ), + } + """Restricts tests to debug platforms.""" + + bugbug_disperse_low = { + "test": Any( + "skip-unless-schedules", + "bugbug-low", + "platform-disperse", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms, low confidence threshold.""" + + bugbug_disperse_medium = { + "test": Any( + "skip-unless-schedules", + "bugbug-medium", + "platform-disperse", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms, medium confidence threshold.""" + + bugbug_disperse_reduced_medium = { + "test": Any( + "skip-unless-schedules", + "bugbug-reduced-manifests", + "platform-disperse", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms, medium confidence threshold with reduced tasks.""" + + bugbug_reduced_manifests_config_selection_low = { + "test": Any( + "skip-unless-schedules", + "bugbug-reduced-manifests-config-selection-low", + split_args=split_bugbug_arg, + ), + } + """Choose configs selected by bugbug, low confidence threshold with reduced tasks.""" + + bugbug_reduced_manifests_config_selection_medium = { + "test": Any( + "skip-unless-schedules", + "bugbug-reduced-manifests-config-selection", + split_args=split_bugbug_arg, + ), + } + """Choose configs selected by bugbug, medium confidence threshold with reduced tasks.""" + + bugbug_disperse_medium_no_unseen = { + "test": Any( + "skip-unless-schedules", + "bugbug-medium", + "platform-disperse-no-unseen", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms (no modified for unseen configurations), medium confidence + threshold.""" + + bugbug_disperse_medium_only_one = { + "test": Any( + "skip-unless-schedules", + "bugbug-medium", + "platform-disperse-only-one", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms (one platform per group), medium confidence threshold.""" + + bugbug_disperse_high = { + "test": Any( + "skip-unless-schedules", + "bugbug-high", + "platform-disperse", + split_args=split_bugbug_arg, + ), + } + """Disperse tests across platforms, high confidence threshold.""" + + bugbug_reduced = { + "test": Any( + "skip-unless-schedules", "bugbug-reduced", split_args=split_bugbug_arg + ), + } + """Use the reduced set of tasks (and no groups) chosen by bugbug.""" + + bugbug_reduced_high = { + "test": Any( + "skip-unless-schedules", "bugbug-reduced-high", split_args=split_bugbug_arg + ), + } + """Use the reduced set of tasks (and no groups) chosen by bugbug, high + confidence threshold.""" + + relevant_tests = { + "test": Any("skip-unless-schedules", "skip-unless-has-relevant-tests"), + } + """Runs task containing tests in the same directories as modified files.""" + + +class ExperimentalOverride: + """Overrides dictionaries that are stored in a container with new values. + + This can be used to modify all strategies in a collection the same way, + presumably with strategies affecting kinds of tasks tangential to the + current context. + + Args: + base (object): A container class supporting attribute access. + overrides (dict): Values to update any accessed dictionaries with. + """ + + def __init__(self, base, overrides): + self.base = base + self.overrides = overrides + + def __getattr__(self, name): + val = getattr(self.base, name).copy() + for name, strategy in self.overrides.items(): + if isinstance(strategy, str) and strategy.startswith("base:"): + strategy = val[strategy[len("base:") :]] + + val[name] = strategy + return val + + +tryselect = ExperimentalOverride( + experimental, + { + "build": Any( + "skip-unless-schedules", "bugbug-reduced", split_args=split_bugbug_arg + ), + "test-verify": "base:test", + "upload-symbols": Alias("always"), + "reprocess-symbols": Alias("always"), + }, +) diff --git a/taskcluster/gecko_taskgraph/optimize/backstop.py b/taskcluster/gecko_taskgraph/optimize/backstop.py new file mode 100644 index 0000000000..7b0c86222b --- /dev/null +++ b/taskcluster/gecko_taskgraph/optimize/backstop.py @@ -0,0 +1,47 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.optimize.base import All, OptimizationStrategy, register_strategy + +from gecko_taskgraph.util.backstop import BACKSTOP_PUSH_INTERVAL + + +@register_strategy("skip-unless-backstop") +class SkipUnlessBackstop(OptimizationStrategy): + """Always removes tasks except on backstop pushes.""" + + def should_remove_task(self, task, params, _): + return not params["backstop"] + + +class SkipUnlessPushInterval(OptimizationStrategy): + """Always removes tasks except every N pushes. + + Args: + push_interval (int): Number of pushes + """ + + def __init__(self, push_interval, remove_on_projects=None): + self.push_interval = push_interval + + @property + def description(self): + return f"skip-unless-push-interval-{self.push_interval}" + + def should_remove_task(self, task, params, _): + # On every Nth push, want to run all tasks. + return int(params["pushlog_id"]) % self.push_interval != 0 + + +# Strategy to run tasks on "expanded" pushes, currently defined as pushes that +# are half the backstop interval. The 'All' composite strategy means that the +# "backstop" strategy will prevent "expanded" from applying on backstop pushes. +register_strategy( + "skip-unless-expanded", + args=( + "skip-unless-backstop", + SkipUnlessPushInterval(BACKSTOP_PUSH_INTERVAL / 2), + ), +)(All) diff --git a/taskcluster/gecko_taskgraph/optimize/bugbug.py b/taskcluster/gecko_taskgraph/optimize/bugbug.py new file mode 100644 index 0000000000..d8603560ef --- /dev/null +++ b/taskcluster/gecko_taskgraph/optimize/bugbug.py @@ -0,0 +1,321 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from collections import defaultdict +from fnmatch import fnmatch + +from taskgraph.optimize.base import OptimizationStrategy, register_strategy, registry + +from gecko_taskgraph.util.bugbug import ( + CT_HIGH, + CT_LOW, + CT_MEDIUM, + BugbugTimeoutException, + push_schedules, +) +from gecko_taskgraph.util.hg import get_push_data + +FALLBACK = "skip-unless-has-relevant-tests" + + +def merge_bugbug_replies(data, new_data): + """Merge a bugbug reply (stored in the `new_data` argument) into another (stored + in the `data` argument). + """ + for key, value in new_data.items(): + if isinstance(value, dict): + if key not in data: + data[key] = {} + + if len(value) == 0: + continue + + dict_value = next(iter(value.values())) + if isinstance(dict_value, list): + for name, configs in value.items(): + if name not in data[key]: + data[key][name] = set() + + data[key][name].update(configs) + else: + for name, confidence in value.items(): + if name not in data[key] or data[key][name] < confidence: + data[key][name] = confidence + elif isinstance(value, list): + if key not in data: + data[key] = set() + + data[key].update(value) + + +@register_strategy("bugbug-low", args=(CT_LOW,)) +@register_strategy("bugbug-medium", args=(CT_MEDIUM,)) +@register_strategy("bugbug-high", args=(CT_HIGH,)) +@register_strategy("bugbug-tasks-medium", args=(CT_MEDIUM, True)) +@register_strategy("bugbug-tasks-high", args=(CT_HIGH, True)) +@register_strategy("bugbug-reduced", args=(CT_MEDIUM, True, True)) +@register_strategy("bugbug-reduced-fallback", args=(CT_MEDIUM, True, True, FALLBACK)) +@register_strategy("bugbug-reduced-high", args=(CT_HIGH, True, True)) +@register_strategy("bugbug-reduced-manifests", args=(CT_MEDIUM, False, True)) +@register_strategy( + "bugbug-reduced-manifests-config-selection-low", + args=(CT_LOW, False, True, None, 1, True), +) +@register_strategy( + "bugbug-reduced-manifests-config-selection", + args=(CT_MEDIUM, False, True, None, 1, True), +) +@register_strategy( + "bugbug-reduced-manifests-fallback-low", args=(CT_LOW, False, True, FALLBACK) +) +@register_strategy( + "bugbug-reduced-manifests-fallback", args=(CT_MEDIUM, False, True, FALLBACK) +) +@register_strategy( + "bugbug-reduced-manifests-fallback-last-10-pushes", + args=(0.3, False, True, FALLBACK, 10), +) +class BugBugPushSchedules(OptimizationStrategy): + """Query the 'bugbug' service to retrieve relevant tasks and manifests. + + Args: + confidence_threshold (float): The minimum confidence threshold (in + range [0, 1]) needed for a task to be scheduled. + tasks_only (bool): Whether or not to only use tasks and no groups + (default: False) + use_reduced_tasks (bool): Whether or not to use the reduced set of tasks + provided by the bugbug service (default: False). + fallback (str): The fallback strategy to use if there + was a failure in bugbug (default: None) + num_pushes (int): The number of pushes to consider for the selection + (default: 1). + select_configs (bool): Whether to select configurations for manifests + too (default: False). + """ + + def __init__( + self, + confidence_threshold, + tasks_only=False, + use_reduced_tasks=False, + fallback=None, + num_pushes=1, + select_configs=False, + ): + self.confidence_threshold = confidence_threshold + self.use_reduced_tasks = use_reduced_tasks + self.fallback = fallback + self.tasks_only = tasks_only + self.num_pushes = num_pushes + self.select_configs = select_configs + self.timedout = False + + def should_remove_task(self, task, params, importance): + project = params["project"] + + if project not in ("autoland", "try"): + return False + + current_push_id = int(params["pushlog_id"]) + + rev = params["head_rev"] + + if self.timedout: + return registry[self.fallback].should_remove_task(task, params, importance) + + data = {} + + start_push_id = current_push_id - self.num_pushes + 1 + if self.num_pushes != 1: + push_data = get_push_data( + params["head_repository"], project, start_push_id, current_push_id - 1 + ) + + for push_id in range(start_push_id, current_push_id + 1): + if push_id == current_push_id: + rev = params["head_rev"] + else: + rev = push_data[push_id]["changesets"][-1] + + try: + new_data = push_schedules(params["project"], rev) + merge_bugbug_replies(data, new_data) + except BugbugTimeoutException: + if not self.fallback: + raise + + self.timedout = True + return self.should_remove_task(task, params, importance) + + key = "reduced_tasks" if self.use_reduced_tasks else "tasks" + tasks = { + task + for task, confidence in data.get(key, {}).items() + if confidence >= self.confidence_threshold + } + + test_manifests = task.attributes.get("test_manifests") + if test_manifests is None or self.tasks_only: + if data.get("known_tasks") and task.label not in data["known_tasks"]: + return False + + if task.label not in tasks: + return True + + return False + + # If a task contains more than one group, use the max confidence. + groups = data.get("groups", {}) + confidences = [c for g, c in groups.items() if g in test_manifests] + if not confidences or max(confidences) < self.confidence_threshold: + return True + + # If the task configuration doesn't match the ones selected by bugbug for + # the manifests, optimize out. + if self.select_configs: + selected_groups = [ + g + for g, c in groups.items() + if g in test_manifests and c > self.confidence_threshold + ] + + config_groups = data.get("config_groups", defaultdict(list)) + + # Configurations returned by bugbug are in a format such as + # `test-windows10-64/opt-*-e10s`, while task labels are like + # test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6. + # In order to match the strings, we need to ignore the chunk number + # from the task label. + parts = task.label.split("-") + label_without_chunk_number = "-".join( + parts[:-1] if parts[-1].isdigit() else parts + ) + + if not any( + fnmatch(label_without_chunk_number, config) + for group in selected_groups + for config in config_groups[group] + ): + return True + + # Store group importance so future optimizers can access it. + for manifest in test_manifests: + if manifest not in groups: + continue + + confidence = groups[manifest] + if confidence >= CT_HIGH: + importance[manifest] = "high" + elif confidence >= CT_MEDIUM: + importance[manifest] = "medium" + elif confidence >= CT_LOW: + importance[manifest] = "low" + else: + importance[manifest] = "lowest" + + return False + + +@register_strategy("platform-debug") +class SkipUnlessDebug(OptimizationStrategy): + """Only run debug platforms.""" + + def should_remove_task(self, task, params, arg): + return ( + "build_type" in task.attributes and task.attributes["build_type"] != "debug" + ) + + +@register_strategy("platform-disperse") +@register_strategy("platform-disperse-no-unseen", args=(None, 0)) +@register_strategy( + "platform-disperse-only-one", + args=( + { + "high": 1, + "medium": 1, + "low": 1, + "lowest": 0, + }, + 0, + ), +) +class DisperseGroups(OptimizationStrategy): + """Disperse groups across test configs. + + Each task has an associated 'importance' dict passed in via the arg. This + is of the form `{: }`. + + Where 'group' is a test group id (usually a path to a manifest), and 'importance' is + one of `{'lowest', 'low', 'medium', 'high'}`. + + Each importance value has an associated 'count' as defined in + `self.target_counts`. It guarantees that 'manifest' will run in at least + 'count' different configurations (assuming there are enough tasks + containing 'manifest'). + + On configurations that haven't been seen before, we'll increase the target + count by `self.unseen_modifier` to increase the likelihood of scheduling a + task on that configuration. + + Args: + target_counts (dict): Override DEFAULT_TARGET_COUNTS with custom counts. This + is a dict mapping the importance value ('lowest', 'low', etc) to the + minimum number of configurations manifests with this value should run + on. + + unseen_modifier (int): Override DEFAULT_UNSEEN_MODIFIER to a custom + value. This is the amount we'll increase 'target_count' by for unseen + configurations. + """ + + DEFAULT_TARGET_COUNTS = { + "high": 3, + "medium": 2, + "low": 1, + "lowest": 0, + } + DEFAULT_UNSEEN_MODIFIER = 1 + + def __init__(self, target_counts=None, unseen_modifier=DEFAULT_UNSEEN_MODIFIER): + self.target_counts = self.DEFAULT_TARGET_COUNTS.copy() + if target_counts: + self.target_counts.update(target_counts) + self.unseen_modifier = unseen_modifier + + self.count = defaultdict(int) + self.seen_configurations = set() + + def should_remove_task(self, task, params, importance): + test_manifests = task.attributes.get("test_manifests") + test_platform = task.attributes.get("test_platform") + + if not importance or not test_manifests or not test_platform: + return False + + # Build the test configuration key. + key = test_platform + if "unittest_variant" in task.attributes: + key += "-" + task.attributes["unittest_variant"] + + important_manifests = set(test_manifests) & set(importance) + for manifest in important_manifests: + target_count = self.target_counts[importance[manifest]] + + # If this configuration hasn't been seen before, increase the + # likelihood of scheduling the task. + if key not in self.seen_configurations: + target_count += self.unseen_modifier + + if self.count[manifest] < target_count: + # Update manifest counts and seen configurations. + self.seen_configurations.add(key) + for manifest in important_manifests: + self.count[manifest] += 1 + return False + + # Should remove task because all manifests have reached their + # importance count (or there were no important manifests). + return True diff --git a/taskcluster/gecko_taskgraph/optimize/schema.py b/taskcluster/gecko_taskgraph/optimize/schema.py new file mode 100644 index 0000000000..a7f878cf60 --- /dev/null +++ b/taskcluster/gecko_taskgraph/optimize/schema.py @@ -0,0 +1,60 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +import voluptuous +from mozbuild import schedules + +logger = logging.getLogger(__name__) + + +default_optimizations = ( + # always run this task (default) + None, + # always optimize this task + {"always": None}, + # optimize strategy aliases for build kind + {"build": list(schedules.ALL_COMPONENTS)}, + # search the index for the given index namespaces, and replace this task if found + # the search occurs in order, with the first match winning + {"index-search": [str]}, + # never optimize this task + {"never": None}, + # skip the task except for every Nth push + {"skip-unless-expanded": None}, + {"skip-unless-backstop": None}, + # skip this task if none of the given file patterns match + {"skip-unless-changed": [str]}, + # skip this task if unless the change files' SCHEDULES contains any of these components + {"skip-unless-schedules": list(schedules.ALL_COMPONENTS)}, + # optimize strategy aliases for the test kind + {"test": list(schedules.ALL_COMPONENTS)}, + {"test-inclusive": list(schedules.ALL_COMPONENTS)}, + # optimize strategy alias for test-verify tasks + {"test-verify": list(schedules.ALL_COMPONENTS)}, + # optimize strategy alias for upload-symbols tasks + {"upload-symbols": None}, + # optimize strategy alias for reprocess-symbols tasks + {"reprocess-symbols": None}, +) + +OptimizationSchema = voluptuous.Any(*default_optimizations) + + +def set_optimization_schema(schema_tuple): + """Sets OptimizationSchema so it can be imported by the task transform. + This function is called by projects that extend Firefox's taskgraph. + It should be called by the project's taskgraph:register function before + any transport or job runner code is imported. + + :param tuple schema_tuple: Tuple of possible optimization strategies + """ + global OptimizationSchema + if OptimizationSchema.validators == default_optimizations: + logger.info("OptimizationSchema updated.") + OptimizationSchema = voluptuous.Any(*schema_tuple) + else: + raise Exception("Can only call set_optimization_schema once.") diff --git a/taskcluster/gecko_taskgraph/optimize/strategies.py b/taskcluster/gecko_taskgraph/optimize/strategies.py new file mode 100644 index 0000000000..2e520c4750 --- /dev/null +++ b/taskcluster/gecko_taskgraph/optimize/strategies.py @@ -0,0 +1,136 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +from datetime import datetime + +import mozpack.path as mozpath +from mozbuild.base import MozbuildObject +from mozbuild.util import memoize +from taskgraph.optimize.base import OptimizationStrategy, register_strategy +from taskgraph.util.taskcluster import find_task_id + +from gecko_taskgraph import files_changed +from gecko_taskgraph.util.taskcluster import status_task + +logger = logging.getLogger(__name__) + + +@register_strategy("index-search") +class IndexSearch(OptimizationStrategy): + + # A task with no dependencies remaining after optimization will be replaced + # if artifacts exist for the corresponding index_paths. + # Otherwise, we're in one of the following cases: + # - the task has un-optimized dependencies + # - the artifacts have expired + # - some changes altered the index_paths and new artifacts need to be + # created. + # In every of those cases, we need to run the task to create or refresh + # artifacts. + + fmt = "%Y-%m-%dT%H:%M:%S.%fZ" + + def should_replace_task(self, task, params, deadline, index_paths): + "Look for a task with one of the given index paths" + for index_path in index_paths: + try: + task_id = find_task_id(index_path) + status = status_task(task_id) + # status can be `None` if we're in `testing` mode + # (e.g. test-action-callback) + if not status or status.get("state") in ("exception", "failed"): + continue + + if deadline and datetime.strptime( + status["expires"], self.fmt + ) < datetime.strptime(deadline, self.fmt): + continue + + return task_id + except KeyError: + # 404 will end up here and go on to the next index path + pass + + return False + + +@register_strategy("skip-unless-changed") +class SkipUnlessChanged(OptimizationStrategy): + def should_remove_task(self, task, params, file_patterns): + # pushlog_id == -1 - this is the case when run from a cron.yml job + if params.get("pushlog_id") == -1: + return False + + changed = files_changed.check(params, file_patterns) + if not changed: + logger.debug( + "no files found matching a pattern in `skip-unless-changed` for " + + task.label + ) + return True + return False + + +@register_strategy("skip-unless-schedules") +class SkipUnlessSchedules(OptimizationStrategy): + @memoize + def scheduled_by_push(self, repository, revision): + changed_files = files_changed.get_changed_files(repository, revision) + + mbo = MozbuildObject.from_environment() + # the decision task has a sparse checkout, so, mozbuild_reader will use + # a MercurialRevisionFinder with revision '.', which should be the same + # as `revision`; in other circumstances, it will use a default reader + rdr = mbo.mozbuild_reader(config_mode="empty") + + components = set() + for p, m in rdr.files_info(changed_files).items(): + components |= set(m["SCHEDULES"].components) + + return components + + def should_remove_task(self, task, params, conditions): + if params.get("pushlog_id") == -1: + return False + + scheduled = self.scheduled_by_push( + params["head_repository"], params["head_rev"] + ) + conditions = set(conditions) + # if *any* of the condition components are scheduled, do not optimize + if conditions & scheduled: + return False + + return True + + +@register_strategy("skip-unless-has-relevant-tests") +class SkipUnlessHasRelevantTests(OptimizationStrategy): + """Optimizes tasks that don't run any tests that were + in child directories of a modified file. + """ + + @memoize + def get_changed_dirs(self, repo, rev): + changed = map(mozpath.dirname, files_changed.get_changed_files(repo, rev)) + # Filter out empty directories (from files modified in the root). + # Otherwise all tasks would be scheduled. + return {d for d in changed if d} + + def should_remove_task(self, task, params, _): + if not task.attributes.get("test_manifests"): + return True + + for d in self.get_changed_dirs(params["head_repository"], params["head_rev"]): + for t in task.attributes["test_manifests"]: + if t.startswith(d): + logger.debug( + "{} runs a test path ({}) contained by a modified file ({})".format( + task.label, t, d + ) + ) + return False + return True diff --git a/taskcluster/gecko_taskgraph/parameters.py b/taskcluster/gecko_taskgraph/parameters.py new file mode 100644 index 0000000000..e7e5df4605 --- /dev/null +++ b/taskcluster/gecko_taskgraph/parameters.py @@ -0,0 +1,100 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import logging +import os + +from taskgraph.parameters import extend_parameters_schema +from voluptuous import Any, Required + +from gecko_taskgraph import GECKO + +logger = logging.getLogger(__name__) + + +gecko_parameters_schema = { + Required("app_version"): str, + Required("backstop"): bool, + Required("build_number"): int, + Required("enable_always_target"): bool, + Required("hg_branch"): str, + Required("message"): str, + Required("next_version"): Any(None, str), + Required("optimize_strategies"): Any(None, str), + Required("phabricator_diff"): Any(None, str), + Required("release_enable_emefree"): bool, + Required("release_enable_partner_repack"): bool, + Required("release_enable_partner_attribution"): bool, + Required("release_eta"): Any(None, str), + Required("release_history"): {str: dict}, + Required("release_partners"): Any(None, [str]), + Required("release_partner_config"): Any(None, dict), + Required("release_partner_build_number"): int, + Required("release_type"): str, + Required("release_product"): Any(None, str), + Required("required_signoffs"): [str], + Required("signoff_urls"): dict, + Required("test_manifest_loader"): str, + Required("try_mode"): Any(None, str), + Required("try_options"): Any(None, dict), + Required("try_task_config"): dict, + Required("version"): str, +} + + +def get_contents(path): + with open(path, "r") as fh: + contents = fh.readline().rstrip() + return contents + + +def get_version(product_dir="browser"): + version_path = os.path.join(GECKO, product_dir, "config", "version_display.txt") + return get_contents(version_path) + + +def get_app_version(product_dir="browser"): + app_version_path = os.path.join(GECKO, product_dir, "config", "version.txt") + return get_contents(app_version_path) + + +def get_defaults(repo_root=None): + return { + "app_version": get_app_version(), + "backstop": False, + "base_repository": "https://hg.mozilla.org/mozilla-unified", + "build_number": 1, + "enable_always_target": False, + "head_repository": "https://hg.mozilla.org/mozilla-central", + "hg_branch": "default", + "message": "", + "next_version": None, + "optimize_strategies": None, + "phabricator_diff": None, + "project": "mozilla-central", + "release_enable_emefree": False, + "release_enable_partner_repack": False, + "release_enable_partner_attribution": False, + "release_eta": "", + "release_history": {}, + "release_partners": [], + "release_partner_config": None, + "release_partner_build_number": 1, + "release_product": None, + "release_type": "nightly", + # This refers to the upstream repo rather than the local checkout, so + # should be hardcoded to 'hg' even with git-cinnabar. + "repository_type": "hg", + "required_signoffs": [], + "signoff_urls": {}, + "test_manifest_loader": "default", + "try_mode": None, + "try_options": None, + "try_task_config": {}, + "version": get_version(), + } + + +def register_parameters(): + extend_parameters_schema(gecko_parameters_schema, defaults_fn=get_defaults) diff --git a/taskcluster/gecko_taskgraph/target_tasks.py b/taskcluster/gecko_taskgraph/target_tasks.py new file mode 100644 index 0000000000..90ebd479ad --- /dev/null +++ b/taskcluster/gecko_taskgraph/target_tasks.py @@ -0,0 +1,1497 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import itertools +import os +import re +from datetime import datetime, timedelta + +from redo import retry +from taskgraph.parameters import Parameters +from taskgraph.target_tasks import _target_task, get_method +from taskgraph.util.taskcluster import find_task_id + +from gecko_taskgraph import GECKO, try_option_syntax +from gecko_taskgraph.util.attributes import ( + match_run_on_hg_branches, + match_run_on_projects, +) +from gecko_taskgraph.util.hg import find_hg_revision_push_info, get_hg_commit_message +from gecko_taskgraph.util.platforms import platform_family + +# Some tasks show up in the target task set, but are possibly special cases, +# uncommon tasks, or tasks running against limited hardware set that they +# should only be selectable with --full. +UNCOMMON_TRY_TASK_LABELS = [ + # Platforms and/or Build types + r"build-.*-gcp", # Bug 1631990 + r"mingwclang", # Bug 1631990 + r"valgrind", # Bug 1631990 + # Android tasks + r"android-geckoview-docs", + r"android-hw", + # Windows tasks + r"windows10-64-ref-hw", + r"windows10-aarch64-qr", + # Linux tasks + r"linux-", # hide all linux32 tasks by default - bug 1599197 + r"linux1804-32", # hide linux32 tests - bug 1599197 + # Test tasks + r"web-platform-tests.*backlog", # hide wpt jobs that are not implemented yet - bug 1572820 + r"-ccov", + r"-profiling-", # talos/raptor profiling jobs are run too often + # Hide shippable versions of tests we have opt versions of because the non-shippable + # versions are faster to run. This is mostly perf tests. + r"-shippable(?!.*(awsy|browsertime|marionette-headless|mochitest-devtools-chrome-fis|raptor|talos|web-platform-tests-wdspec-headless|mochitest-plain-headless))", # noqa - too long +] + + +def index_exists(index_path, reason=""): + print(f"Looking for existing index {index_path} {reason}...") + try: + task_id = find_task_id(index_path) + print(f"Index {index_path} exists: taskId {task_id}") + return True + except KeyError: + print(f"Index {index_path} doesn't exist.") + return False + + +def filter_out_shipping_phase(task, parameters): + return ( + # nightly still here because of geckodriver + not task.attributes.get("nightly") + and task.attributes.get("shipping_phase") in (None, "build") + ) + + +def filter_out_devedition(task, parameters): + return not task.attributes.get("shipping_product") == "devedition" + + +def filter_out_cron(task, parameters): + """ + Filter out tasks that run via cron. + """ + return not task.attributes.get("cron") + + +def filter_for_project(task, parameters): + """Filter tasks by project. Optionally enable nightlies.""" + run_on_projects = set(task.attributes.get("run_on_projects", [])) + return match_run_on_projects(parameters["project"], run_on_projects) + + +def filter_for_hg_branch(task, parameters): + """Filter tasks by hg branch. + If `run_on_hg_branch` is not defined, then task runs on all branches""" + run_on_hg_branches = set(task.attributes.get("run_on_hg_branches", ["all"])) + return match_run_on_hg_branches(parameters["hg_branch"], run_on_hg_branches) + + +def filter_on_platforms(task, platforms): + """Filter tasks on the given platform""" + platform = task.attributes.get("build_platform") + return platform in platforms + + +def filter_by_uncommon_try_tasks(task, optional_filters=None): + """Filters tasks that should not be commonly run on try. + + Args: + task (str): String representing the task name. + optional_filters (list, optional): + Additional filters to apply to task filtering. + + Returns: + (Boolean): True if task does not match any known filters. + False otherwise. + """ + filters = UNCOMMON_TRY_TASK_LABELS + if optional_filters: + filters = itertools.chain(filters, optional_filters) + + return not any(re.search(pattern, task) for pattern in filters) + + +def filter_by_regex(task_label, regexes, mode="include"): + """Filters tasks according to a list of pre-compiled reguar expressions. + + If mode is "include", a task label must match any regex to pass. + If it is "exclude", a task label must _not_ match any regex to pass. + """ + if not regexes: + return True + + assert mode in ["include", "exclude"] + + any_match = any(r.search(task_label) for r in regexes) + if any_match: + return mode == "include" + return mode != "include" + + +def filter_release_tasks(task, parameters): + platform = task.attributes.get("build_platform") + if platform in ( + "linux", + "linux64", + "macosx64", + "win32", + "win64", + "win64-aarch64", + ): + if task.attributes["kind"] == "l10n": + # This is on-change l10n + return True + if ( + task.attributes["build_type"] == "opt" + and task.attributes.get("unittest_suite") != "talos" + and task.attributes.get("unittest_suite") != "raptor" + ): + return False + + if task.attributes.get("shipping_phase") not in (None, "build"): + return False + + """ No debug on release, keep on ESR with 4 week cycles, release + will not be too different from central, but ESR will live for a long time. + + From June 2019 -> June 2020, we found 1 unique regression on ESR debug + and 5 unique regressions on beta/release. Keeping spidermonkey and linux + debug finds all but 1 unique regressions (windows found on try) for beta/release. + + ...but debug-only failures started showing up on ESR (esr-91, esr-102) so + desktop debug tests were added back for beta. + """ + build_type = task.attributes.get("build_type", "") + build_platform = task.attributes.get("build_platform", "") + test_platform = task.attributes.get("test_platform", "") + + if parameters["release_type"].startswith("esr") or ( + parameters["release_type"] == "beta" and "android" not in build_platform + ): + return True + + # code below here is intended to reduce release debug tasks + if task.kind == "hazard" or "toolchain" in build_platform: + # keep hazard and toolchain builds around + return True + + if build_type == "debug": + if "linux" not in build_platform: + # filter out windows/mac/android + return False + if task.kind not in ["spidermonkey"] and "-qr" in test_platform: + # filter out linux-qr tests, leave spidermonkey + return False + if "64" not in build_platform: + # filter out linux32 builds + return False + + # webrender-android-*-debug doesn't have attributes to find 'debug', using task.label. + if task.kind == "webrender" and "debug" in task.label: + return False + return True + + +def filter_out_missing_signoffs(task, parameters): + for signoff in parameters["required_signoffs"]: + if signoff not in parameters["signoff_urls"] and signoff in task.attributes.get( + "required_signoffs", [] + ): + return False + return True + + +def filter_tests_without_manifests(task, parameters): + """Remove test tasks that have an empty 'test_manifests' attribute. + + This situation can arise when the test loader (e.g bugbug) decided there + weren't any important manifests to run for the given push. We filter tasks + out here rather than in the transforms so that the full task graph is still + aware that the task exists (which is needed by the backfill action). + """ + if ( + task.kind == "test" + and "test_manifests" in task.attributes + and not task.attributes["test_manifests"] + ): + return False + return True + + +def standard_filter(task, parameters): + return all( + filter_func(task, parameters) + for filter_func in ( + filter_out_cron, + filter_for_project, + filter_for_hg_branch, + filter_tests_without_manifests, + ) + ) + + +def accept_raptor_android_build(platform): + """Helper function for selecting the correct android raptor builds.""" + if "android" not in platform: + return False + if "shippable" not in platform: + return False + if "p2" in platform and "aarch64" in platform: + return False + if "p5" in platform and "aarch64" in platform: + return False + if "g5" in platform: + return False + if "a51" in platform: + return True + + +def filter_unsupported_artifact_builds(task, parameters): + try_config = parameters.get("try_task_config", {}) + if not try_config.get("use-artifact-builds", False): + return True + + supports_artifact_builds = task.attributes.get("supports-artifact-builds", True) + return supports_artifact_builds + + +def filter_out_shippable(task): + return not task.attributes.get("shippable", False) + + +def _try_task_config(full_task_graph, parameters, graph_config): + requested_tasks = parameters["try_task_config"]["tasks"] + return list(set(requested_tasks) & full_task_graph.graph.nodes) + + +def _try_option_syntax(full_task_graph, parameters, graph_config): + """Generate a list of target tasks based on try syntax in + parameters['message'] and, for context, the full task graph.""" + options = try_option_syntax.TryOptionSyntax( + parameters, full_task_graph, graph_config + ) + target_tasks_labels = [ + t.label + for t in full_task_graph.tasks.values() + if options.task_matches(t) + and filter_by_uncommon_try_tasks(t.label) + and filter_unsupported_artifact_builds(t, parameters) + ] + + attributes = { + k: getattr(options, k) + for k in [ + "no_retry", + "tag", + ] + } + + for l in target_tasks_labels: + task = full_task_graph[l] + if "unittest_suite" in task.attributes: + task.attributes["task_duplicates"] = options.trigger_tests + + for l in target_tasks_labels: + task = full_task_graph[l] + # If the developer wants test jobs to be rebuilt N times we add that value here + if options.trigger_tests > 1 and "unittest_suite" in task.attributes: + task.attributes["task_duplicates"] = options.trigger_tests + + # If the developer wants test talos jobs to be rebuilt N times we add that value here + if ( + options.talos_trigger_tests > 1 + and task.attributes.get("unittest_suite") == "talos" + ): + task.attributes["task_duplicates"] = options.talos_trigger_tests + + # If the developer wants test raptor jobs to be rebuilt N times we add that value here + if ( + options.raptor_trigger_tests + and options.raptor_trigger_tests > 1 + and task.attributes.get("unittest_suite") == "raptor" + ): + task.attributes["task_duplicates"] = options.raptor_trigger_tests + + task.attributes.update(attributes) + + # Add notifications here as well + if options.notifications: + for task in full_task_graph: + owner = parameters.get("owner") + routes = task.task.setdefault("routes", []) + if options.notifications == "all": + routes.append(f"notify.email.{owner}.on-any") + elif options.notifications == "failure": + routes.append(f"notify.email.{owner}.on-failed") + routes.append(f"notify.email.{owner}.on-exception") + + return target_tasks_labels + + +@_target_task("try_tasks") +def target_tasks_try(full_task_graph, parameters, graph_config): + try_mode = parameters["try_mode"] + if try_mode == "try_task_config": + return _try_task_config(full_task_graph, parameters, graph_config) + if try_mode == "try_option_syntax": + return _try_option_syntax(full_task_graph, parameters, graph_config) + # With no try mode, we schedule nothing, allowing the user to add tasks + # later via treeherder. + return [] + + +@_target_task("try_select_tasks") +def target_tasks_try_select(full_task_graph, parameters, graph_config): + tasks = target_tasks_try_select_uncommon(full_task_graph, parameters, graph_config) + return [l for l in tasks if filter_by_uncommon_try_tasks(l)] + + +@_target_task("try_select_tasks_uncommon") +def target_tasks_try_select_uncommon(full_task_graph, parameters, graph_config): + from gecko_taskgraph.decision import PER_PROJECT_PARAMETERS + + projects = ("autoland", "mozilla-central") + if parameters["project"] not in projects: + projects = (parameters["project"],) + + tasks = set() + for project in projects: + params = dict(parameters) + params["project"] = project + parameters = Parameters(**params) + + try: + target_tasks_method = PER_PROJECT_PARAMETERS[project]["target_tasks_method"] + except KeyError: + target_tasks_method = "default" + + tasks.update( + get_method(target_tasks_method)(full_task_graph, parameters, graph_config) + ) + + return sorted(tasks) + + +@_target_task("try_auto") +def target_tasks_try_auto(full_task_graph, parameters, graph_config): + """Target the tasks which have indicated they should be run on autoland + (rather than try) via the `run_on_projects` attributes. + + Should do the same thing as the `default` target tasks method. + """ + params = dict(parameters) + params["project"] = "autoland" + parameters = Parameters(**params) + + regex_filters = parameters["try_task_config"].get("tasks-regex") + include_regexes = exclude_regexes = [] + if regex_filters: + include_regexes = [re.compile(r) for r in regex_filters.get("include", [])] + exclude_regexes = [re.compile(r) for r in regex_filters.get("exclude", [])] + + return [ + l + for l, t in full_task_graph.tasks.items() + if standard_filter(t, parameters) + and filter_out_shipping_phase(t, parameters) + and filter_out_devedition(t, parameters) + and filter_by_uncommon_try_tasks(t.label) + and filter_by_regex(t.label, include_regexes, mode="include") + and filter_by_regex(t.label, exclude_regexes, mode="exclude") + and filter_unsupported_artifact_builds(t, parameters) + and filter_out_shippable(t) + ] + + +@_target_task("default") +def target_tasks_default(full_task_graph, parameters, graph_config): + """Target the tasks which have indicated they should be run on this project + via the `run_on_projects` attributes.""" + return [ + l + for l, t in full_task_graph.tasks.items() + if standard_filter(t, parameters) + and filter_out_shipping_phase(t, parameters) + and filter_out_devedition(t, parameters) + ] + + +@_target_task("autoland_tasks") +def target_tasks_autoland(full_task_graph, parameters, graph_config): + """In addition to doing the filtering by project that the 'default' + filter does, also remove any tests running against shippable builds + for non-backstop pushes.""" + filtered_for_project = target_tasks_default( + full_task_graph, parameters, graph_config + ) + + def filter(task): + if task.kind != "test": + return True + + if parameters["backstop"]: + return True + + build_type = task.attributes.get("build_type") + + if not build_type or build_type != "opt" or filter_out_shippable(task): + return True + + return False + + return [l for l in filtered_for_project if filter(full_task_graph[l])] + + +@_target_task("mozilla_central_tasks") +def target_tasks_mozilla_central(full_task_graph, parameters, graph_config): + """In addition to doing the filtering by project that the 'default' + filter does, also remove any tests running against regular (aka not shippable, + asan, etc.) opt builds.""" + filtered_for_project = target_tasks_default( + full_task_graph, parameters, graph_config + ) + + def filter(task): + if task.kind != "test": + return True + + build_platform = task.attributes.get("build_platform") + build_type = task.attributes.get("build_type") + shippable = task.attributes.get("shippable", False) + + if not build_platform or not build_type: + return True + + family = platform_family(build_platform) + # We need to know whether this test is against a "regular" opt build + # (which is to say, not shippable, asan, tsan, or any other opt build + # with other properties). There's no positive test for this, so we have to + # do it somewhat hackily. Android doesn't have variants other than shippable + # so it is pretty straightforward to check for. Other platforms have many + # variants, but none of the regular opt builds we're looking for have a "-" + # in their platform name, so this works (for now). + is_regular_opt = ( + family == "android" and not shippable + ) or "-" not in build_platform + + if build_type != "opt" or not is_regular_opt: + return True + + return False + + return [l for l in filtered_for_project if filter(full_task_graph[l])] + + +@_target_task("graphics_tasks") +def target_tasks_graphics(full_task_graph, parameters, graph_config): + """In addition to doing the filtering by project that the 'default' + filter does, also remove artifact builds because we have csets on + the graphics branch that aren't on the candidate branches of artifact + builds""" + filtered_for_project = target_tasks_default( + full_task_graph, parameters, graph_config + ) + + def filter(task): + if task.attributes["kind"] == "artifact-build": + return False + return True + + return [l for l in filtered_for_project if filter(full_task_graph[l])] + + +@_target_task("mozilla_beta_tasks") +def target_tasks_mozilla_beta(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a promotable beta or release build + of desktop, plus android CI. The candidates build process involves a pipeline + of builds and signing, but does not include beetmover or balrog jobs.""" + + return [ + l + for l, t in full_task_graph.tasks.items() + if filter_release_tasks(t, parameters) and standard_filter(t, parameters) + ] + + +@_target_task("mozilla_release_tasks") +def target_tasks_mozilla_release(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a promotable beta or release build + of desktop, plus android CI. The candidates build process involves a pipeline + of builds and signing, but does not include beetmover or balrog jobs.""" + + return [ + l + for l, t in full_task_graph.tasks.items() + if filter_release_tasks(t, parameters) and standard_filter(t, parameters) + ] + + +@_target_task("mozilla_esr102_tasks") +def target_tasks_mozilla_esr102(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a promotable beta or release build + of desktop, without android CI. The candidates build process involves a pipeline + of builds and signing, but does not include beetmover or balrog jobs.""" + + def filter(task): + if not filter_release_tasks(task, parameters): + return False + + if not standard_filter(task, parameters): + return False + + platform = task.attributes.get("build_platform") + + # Android is not built on esr102. + if platform and "android" in platform: + return False + + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("mozilla_esr115_tasks") +def target_tasks_mozilla_esr115(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a promotable beta or release build + of desktop, without android CI. The candidates build process involves a pipeline + of builds and signing, but does not include beetmover or balrog jobs.""" + + def filter(task): + if not filter_release_tasks(task, parameters): + return False + + if not standard_filter(task, parameters): + return False + + platform = task.attributes.get("build_platform") + + # Android is not built on esr115. + if platform and "android" in platform: + return False + + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("promote_desktop") +def target_tasks_promote_desktop(full_task_graph, parameters, graph_config): + """Select the superset of tasks required to promote a beta or release build + of a desktop product. This should include all non-android + mozilla_{beta,release} tasks, plus l10n, beetmover, balrog, etc.""" + + def filter(task): + # Bug 1758507 - geckoview ships in the promote phase + if not parameters["release_type"].startswith("esr") and is_geckoview( + task, parameters + ): + return True + + if task.attributes.get("shipping_product") != parameters["release_product"]: + return False + + # 'secondary' balrog/update verify/final verify tasks only run for RCs + if parameters.get("release_type") != "release-rc": + if "secondary" in task.kind: + return False + + if not filter_out_missing_signoffs(task, parameters): + return False + + if task.attributes.get("shipping_phase") == "promote": + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +def is_geckoview(task, parameters): + return ( + task.attributes.get("shipping_product") == "fennec" + and task.kind in ("beetmover-geckoview", "upload-symbols") + and parameters["release_product"] == "firefox" + ) + + +@_target_task("push_desktop") +def target_tasks_push_desktop(full_task_graph, parameters, graph_config): + """Select the set of tasks required to push a build of desktop to cdns. + Previous build deps will be optimized out via action task.""" + filtered_for_candidates = target_tasks_promote_desktop( + full_task_graph, + parameters, + graph_config, + ) + + def filter(task): + if not filter_out_missing_signoffs(task, parameters): + return False + # Include promotion tasks; these will be optimized out + if task.label in filtered_for_candidates: + return True + + if ( + task.attributes.get("shipping_product") == parameters["release_product"] + and task.attributes.get("shipping_phase") == "push" + ): + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("ship_desktop") +def target_tasks_ship_desktop(full_task_graph, parameters, graph_config): + """Select the set of tasks required to ship desktop. + Previous build deps will be optimized out via action task.""" + is_rc = parameters.get("release_type") == "release-rc" + if is_rc: + # ship_firefox_rc runs after `promote` rather than `push`; include + # all promote tasks. + filtered_for_candidates = target_tasks_promote_desktop( + full_task_graph, + parameters, + graph_config, + ) + else: + # ship_firefox runs after `push`; include all push tasks. + filtered_for_candidates = target_tasks_push_desktop( + full_task_graph, + parameters, + graph_config, + ) + + def filter(task): + if not filter_out_missing_signoffs(task, parameters): + return False + # Include promotion tasks; these will be optimized out + if task.label in filtered_for_candidates: + return True + + if ( + task.attributes.get("shipping_product") != parameters["release_product"] + or task.attributes.get("shipping_phase") != "ship" + ): + return False + + if "secondary" in task.kind: + return is_rc + return not is_rc + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("pine_tasks") +def target_tasks_pine(full_task_graph, parameters, graph_config): + """Bug 1339179 - no mobile automation needed on pine""" + + def filter(task): + platform = task.attributes.get("build_platform") + # disable mobile jobs + if str(platform).startswith("android"): + return False + # disable asan + if platform == "linux64-asan": + return False + # disable non-pine and tasks with a shipping phase + if standard_filter(task, parameters) or filter_out_shipping_phase( + task, parameters + ): + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("kaios_tasks") +def target_tasks_kaios(full_task_graph, parameters, graph_config): + """The set of tasks to run for kaios integration""" + + def filter(task): + # We disable everything in central, and adjust downstream. + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("ship_geckoview") +def target_tasks_ship_geckoview(full_task_graph, parameters, graph_config): + """Select the set of tasks required to ship geckoview nightly. The + nightly build process involves a pipeline of builds and an upload to + maven.mozilla.org.""" + index_path = ( + f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision." + f"{parameters['head_rev']}.taskgraph.decision-ship-geckoview" + ) + if os.environ.get("MOZ_AUTOMATION") and retry( + index_exists, + args=(index_path,), + kwargs={ + "reason": "to avoid triggering multiple nightlies off the same revision", + }, + ): + return [] + + def filter(task): + # XXX Starting 69, we don't ship Fennec Nightly anymore. We just want geckoview to be + # uploaded + return task.attributes.get("shipping_product") == "fennec" and task.kind in ( + "beetmover-geckoview", + "upload-symbols", + ) + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("custom-car_perf_testing") +def target_tasks_custom_car_perf_testing(full_task_graph, parameters, graph_config): + """Select tasks required for running daily performance tests for custom chromium-as-release.""" + + def filter(task): + platform = task.attributes.get("test_platform") + attributes = task.attributes + if attributes.get("unittest_suite") != "raptor": + return False + + try_name = attributes.get("raptor_try_name") + + # Completely ignore all non-shippable platforms + if "shippable" not in platform: + return False + + # ignore all windows 7 perf jobs scheduled automatically + if "windows7" in platform or "windows10-32" in platform: + return False + + # Desktop selection only for CaR + if "android" not in platform: + if "browsertime" in try_name and "custom-car" in try_name: + return True + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("general_perf_testing") +def target_tasks_general_perf_testing(full_task_graph, parameters, graph_config): + """ + Select tasks required for running performance tests 3 times a week. + """ + + def filter(task): + platform = task.attributes.get("test_platform") + attributes = task.attributes + if attributes.get("unittest_suite") != "raptor": + return False + + try_name = attributes.get("raptor_try_name") + + # Completely ignore all non-shippable platforms + if "shippable" not in platform: + return False + + # ignore all windows 7 perf jobs scheduled automatically + if "windows7" in platform or "windows10-32" in platform: + return False + + # Desktop selection + if "android" not in platform: + # Select some browsertime tasks as desktop smoke-tests + if "browsertime" in try_name: + if "chrome" in try_name: + return True + if "chromium" in try_name: + return True + # chromium-as-release has it's own cron + if "custom-car" in try_name: + return False + if "-live" in try_name: + return True + if "-fis" in try_name: + return False + if "linux" in platform: + if "speedometer" in try_name: + return True + if "safari" and "benchmark" in try_name: + # Speedometer 3 is broken on Safari, see bug 1802922 + if "speedometer3" in try_name: + return False + return True + else: + # Don't run tp6 raptor tests + if "tp6" in try_name: + return False + # Android selection + elif accept_raptor_android_build(platform): + if "chrome-m" in try_name and ( + ("ebay" in try_name and "live" not in try_name) + or ( + "live" in try_name + and ("facebook" in try_name or "dailymail" in try_name) + ) + ): + return False + # Ignore all fennec tests here, we run those weekly + if "fennec" in try_name: + return False + # Only run webrender tests + if "chrome-m" not in try_name and "-qr" not in platform: + return False + # Select live site tests + if "-live" in try_name: + return True + # Select fenix resource usage tests + if "fenix" in try_name: + # Bug 1816421 disable fission perf tests + if "-fis" in try_name: + return False + if "-power" in try_name: + return True + # Select geckoview resource usage tests + if "geckoview" in try_name: + # Bug 1816421 disable fission perf tests + if "-fis" in try_name: + return False + # Run cpu+memory, and power tests + cpu_n_memory_task = "-cpu" in try_name and "-memory" in try_name + power_task = "-power" in try_name + # Ignore cpu+memory+power tests + if power_task and cpu_n_memory_task: + return False + if cpu_n_memory_task: + return False + if power_task: + return "browsertime" in try_name + # Select browsertime-specific tests + if "browsertime" in try_name: + if "speedometer" in try_name: + return True + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +def make_desktop_nightly_filter(platforms): + """Returns a filter that gets all nightly tasks on the given platform.""" + + def filter(task, parameters): + return all( + [ + filter_on_platforms(task, platforms), + filter_for_project(task, parameters), + task.attributes.get("shippable", False), + # Tests and nightly only builds don't have `shipping_product` set + task.attributes.get("shipping_product") + in {None, "firefox", "thunderbird"}, + task.kind not in {"l10n"}, # no on-change l10n + ] + ) + + return filter + + +@_target_task("sp-perftests") +def target_tasks_speedometer_tests(full_task_graph, parameters, graph_config): + def filter(task): + platform = task.attributes.get("test_platform") + attributes = task.attributes + if attributes.get("unittest_suite") != "raptor": + return False + if "windows10-32" not in platform: + try_name = attributes.get("raptor_try_name") + if ( + "browsertime" in try_name + and "speedometer" in try_name + and "chrome" in try_name + ): + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("nightly_linux") +def target_tasks_nightly_linux(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of linux. The + nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter({"linux64-shippable", "linux-shippable"}) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("nightly_macosx") +def target_tasks_nightly_macosx(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of macosx. The + nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter({"macosx64-shippable"}) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("nightly_win32") +def target_tasks_nightly_win32(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of win32 and win64. + The nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter({"win32-shippable"}) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("nightly_win64") +def target_tasks_nightly_win64(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of win32 and win64. + The nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter({"win64-shippable"}) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("nightly_win64_aarch64") +def target_tasks_nightly_win64_aarch64(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of win32 and win64. + The nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter({"win64-aarch64-shippable"}) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("nightly_asan") +def target_tasks_nightly_asan(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of asan. The + nightly build process involves a pipeline of builds, signing, + and, eventually, uploading the tasks to balrog.""" + filter = make_desktop_nightly_filter( + {"linux64-asan-reporter-shippable", "win64-asan-reporter-shippable"} + ) + return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)] + + +@_target_task("daily_releases") +def target_tasks_daily_releases(full_task_graph, parameters, graph_config): + """Select the set of tasks required to identify if we should release. + If we determine that we should the task will communicate to ship-it to + schedule the release itself.""" + + def filter(task): + return task.kind in ["maybe-release"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("nightly_desktop") +def target_tasks_nightly_desktop(full_task_graph, parameters, graph_config): + """Select the set of tasks required for a nightly build of linux, mac, + windows.""" + index_path = ( + f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision." + f"{parameters['head_rev']}.taskgraph.decision-nightly-desktop" + ) + if os.environ.get("MOZ_AUTOMATION") and retry( + index_exists, + args=(index_path,), + kwargs={ + "reason": "to avoid triggering multiple nightlies off the same revision", + }, + ): + return [] + + # Tasks that aren't platform specific + release_filter = make_desktop_nightly_filter({None}) + release_tasks = [ + l for l, t in full_task_graph.tasks.items() if release_filter(t, parameters) + ] + # Avoid duplicate tasks. + return list( + set(target_tasks_nightly_win32(full_task_graph, parameters, graph_config)) + | set(target_tasks_nightly_win64(full_task_graph, parameters, graph_config)) + | set( + target_tasks_nightly_win64_aarch64( + full_task_graph, parameters, graph_config + ) + ) + | set(target_tasks_nightly_macosx(full_task_graph, parameters, graph_config)) + | set(target_tasks_nightly_linux(full_task_graph, parameters, graph_config)) + | set(target_tasks_nightly_asan(full_task_graph, parameters, graph_config)) + | set(release_tasks) + ) + + +# Run Searchfox analysis once daily. +@_target_task("searchfox_index") +def target_tasks_searchfox(full_task_graph, parameters, graph_config): + """Select tasks required for indexing Firefox for Searchfox web site each day""" + return [ + "searchfox-linux64-searchfox/debug", + "searchfox-macosx64-searchfox/debug", + "searchfox-win64-searchfox/debug", + "searchfox-android-armv7-searchfox/debug", + "source-test-file-metadata-bugzilla-components", + "source-test-file-metadata-test-info-all", + "source-test-wpt-metadata-summary", + ] + + +# Run build linux64-plain-clang-trunk/opt on mozilla-central/beta with perf tests +@_target_task("linux64_clang_trunk_perf") +def target_tasks_build_linux64_clang_trunk_perf( + full_task_graph, parameters, graph_config +): + """Select tasks required to run perf test on linux64 build with clang trunk""" + + # Only keep tasks generated from platform `linux1804-64-clang-trunk-qr/opt` + def filter(task_label): + if "linux1804-64-clang-trunk-qr/opt" in task_label: + return True + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t.label)] + + +# Run Updatebot's cron job 4 times daily. +@_target_task("updatebot_cron") +def target_tasks_updatebot_cron(full_task_graph, parameters, graph_config): + """Select tasks required to run Updatebot's cron job""" + return ["updatebot-cron"] + + +@_target_task("customv8_update") +def target_tasks_customv8_update(full_task_graph, parameters, graph_config): + """Select tasks required for building latest d8/v8 version.""" + return ["toolchain-linux64-custom-v8"] + + +@_target_task("chromium_update") +def target_tasks_chromium_update(full_task_graph, parameters, graph_config): + """Select tasks required for building latest chromium versions.""" + return [ + "fetch-linux64-chromium", + "fetch-win32-chromium", + "fetch-win64-chromium", + "fetch-mac-chromium", + "toolchain-linux64-custom-car", + "toolchain-win64-custom-car", + ] + + +@_target_task("file_update") +def target_tasks_file_update(full_task_graph, parameters, graph_config): + """Select the set of tasks required to perform nightly in-tree file updates""" + + def filter(task): + # For now any task in the repo-update kind is ok + return task.kind in ["repo-update"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("l10n_bump") +def target_tasks_l10n_bump(full_task_graph, parameters, graph_config): + """Select the set of tasks required to perform l10n bumping.""" + + def filter(task): + # For now any task in the repo-update kind is ok + return task.kind in ["l10n-bump"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("merge_automation") +def target_tasks_merge_automation(full_task_graph, parameters, graph_config): + """Select the set of tasks required to perform repository merges.""" + + def filter(task): + # For now any task in the repo-update kind is ok + return task.kind in ["merge-automation"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("scriptworker_canary") +def target_tasks_scriptworker_canary(full_task_graph, parameters, graph_config): + """Select the set of tasks required to run scriptworker canaries.""" + + def filter(task): + # For now any task in the repo-update kind is ok + return task.kind in ["scriptworker-canary"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("cron_bouncer_check") +def target_tasks_bouncer_check(full_task_graph, parameters, graph_config): + """Select the set of tasks required to perform bouncer version verification.""" + + def filter(task): + if not filter_for_project(task, parameters): + return False + # For now any task in the repo-update kind is ok + return task.kind in ["cron-bouncer-check"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("staging_release_builds") +def target_tasks_staging_release(full_task_graph, parameters, graph_config): + """ + Select all builds that are part of releases. + """ + + def filter(task): + if not task.attributes.get("shipping_product"): + return False + if parameters["release_type"].startswith( + "esr" + ) and "android" in task.attributes.get("build_platform", ""): + return False + if parameters["release_type"] != "beta" and "devedition" in task.attributes.get( + "build_platform", "" + ): + return False + if task.attributes.get("shipping_phase") == "build": + return True + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("release_simulation") +def target_tasks_release_simulation(full_task_graph, parameters, graph_config): + """ + Select builds that would run on push on a release branch. + """ + project_by_release = { + "nightly": "mozilla-central", + "beta": "mozilla-beta", + "release": "mozilla-release", + "esr102": "mozilla-esr102", + "esr115": "mozilla-esr115", + } + target_project = project_by_release.get(parameters["release_type"]) + if target_project is None: + raise Exception("Unknown or unspecified release type in simulation run.") + + def filter_for_target_project(task): + """Filter tasks by project. Optionally enable nightlies.""" + run_on_projects = set(task.attributes.get("run_on_projects", [])) + return match_run_on_projects(target_project, run_on_projects) + + def filter_out_android_on_esr(task): + if parameters["release_type"].startswith( + "esr" + ) and "android" in task.attributes.get("build_platform", ""): + return False + return True + + return [ + l + for l, t in full_task_graph.tasks.items() + if filter_release_tasks(t, parameters) + and filter_out_cron(t, parameters) + and filter_for_target_project(t) + and filter_out_android_on_esr(t) + ] + + +@_target_task("codereview") +def target_tasks_codereview(full_task_graph, parameters, graph_config): + """Select all code review tasks needed to produce a report""" + + def filter(task): + # Ending tasks + if task.kind in ["code-review"]: + return True + + # Analyzer tasks + if task.attributes.get("code-review") is True: + return True + + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("nothing") +def target_tasks_nothing(full_task_graph, parameters, graph_config): + """Select nothing, for DONTBUILD pushes""" + return [] + + +@_target_task("daily_beta_perf") +def target_tasks_daily_beta_perf(full_task_graph, parameters, graph_config): + """ + Select performance tests on the beta branch to be run daily + """ + index_path = ( + f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision." + f"{parameters['head_rev']}.taskgraph.decision-daily-beta-perf" + ) + if os.environ.get("MOZ_AUTOMATION") and retry( + index_exists, + args=(index_path,), + kwargs={ + "reason": "to avoid triggering multiple daily beta perftests off of the same revision", + }, + ): + return [] + + def filter(task): + platform = task.attributes.get("test_platform") + attributes = task.attributes + try_name = attributes.get("raptor_try_name") + + if attributes.get("unittest_suite") != "raptor": + return False + + if platform and accept_raptor_android_build(platform): + # Select browsertime & geckoview specific tests + if "browsertime" and "geckoview" in try_name: + if "g5" in platform: + return False + if "power" in try_name: + return False + if "cpu" in try_name: + return False + if "profiling" in try_name: + return False + if "-live" in try_name: + return False + if "speedometer" in try_name: + return True + if "webgl" in try_name: + return True + if "tp6m" in try_name: + return True + + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("weekly_release_perf") +def target_tasks_weekly_release_perf(full_task_graph, parameters, graph_config): + """ + Select performance tests on the release branch to be run weekly + """ + + def filter(task): + platform = task.attributes.get("test_platform") + attributes = task.attributes + try_name = attributes.get("raptor_try_name") + + if attributes.get("unittest_suite") != "raptor": + return False + + if platform and accept_raptor_android_build(platform): + # Select browsertime & geckoview specific tests + if "browsertime" and "geckoview" in try_name: + if "g5" in platform: + return False + if "power" in try_name: + return False + if "cpu" in try_name: + return False + if "profiling" in try_name: + return False + if "-live" in try_name: + return False + if "speedometer" in try_name: + return True + if "webgl" in try_name: + return True + if "tp6m" in try_name: + return True + if "youtube-playback" in try_name: + return True + + return False + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("raptor_tp6m") +def target_tasks_raptor_tp6m(full_task_graph, parameters, graph_config): + """ + Select tasks required for running raptor cold page-load tests on fenix and refbrow + """ + + def filter(task): + platform = task.attributes.get("build_platform") + attributes = task.attributes + + if platform and "android" not in platform: + return False + if attributes.get("unittest_suite") != "raptor": + return False + try_name = attributes.get("raptor_try_name") + if "-cold" in try_name and "shippable" in platform: + # Get browsertime amazon smoke tests + if ( + "browsertime" in try_name + and "amazon" in try_name + and "search" not in try_name + and "fenix" in try_name + ): + return True + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("backfill_all_browsertime") +def target_tasks_backfill_all_browsertime(full_task_graph, parameters, graph_config): + """ + Search for revisions that contains patches that were reviewed by perftest reviewers + and landed the day before the cron is running. Trigger backfill-all-browsertime action + task on each of them. + """ + from gecko_taskgraph.actions.util import get_decision_task_id, get_pushes + + def date_is_yesterday(date): + yesterday = datetime.today() - timedelta(days=1) + date = datetime.fromtimestamp(date) + return date.date() == yesterday.date() + + def reviewed_by_perftest(push): + try: + commit_message = get_hg_commit_message( + os.path.join(GECKO, graph_config["product-dir"]), rev=push + ) + except Exception as e: + print(e) + return False + + for line in commit_message.split("\n\n"): + if line.lower().startswith("bug ") and "r=" in line: + if "perftest-reviewers" in line.split("r=")[-1]: + print(line) + return True + return False + + pushes = get_pushes( + project=parameters["head_repository"], + end_id=int(parameters["pushlog_id"]), + depth=200, + full_response=True, + ) + for push_id in sorted([int(p) for p in pushes.keys()], reverse=True): + push_rev = pushes[str(push_id)]["changesets"][-1] + push_info = find_hg_revision_push_info( + "https://hg.mozilla.org/integration/" + parameters["project"], push_rev + ) + pushdate = int(push_info["pushdate"]) + if date_is_yesterday(pushdate) and reviewed_by_perftest(push_rev): + from gecko_taskgraph.actions.util import trigger_action + + print( + f"Revision {push_rev} was created yesterday and was reviewed by " + f"#perftest-reviewers." + ) + try: + push_decision_task_id = get_decision_task_id( + parameters["project"], push_id + ) + except Exception: + print(f"Could not find decision task for push {push_id}") + continue + try: + trigger_action( + action_name="backfill-all-browsertime", + # This lets the action know on which push we want to add a new task + decision_task_id=push_decision_task_id, + ) + except Exception as e: + print(f"Failed to trigger action for {push_rev}: {e}") + + return [] + + +@_target_task("condprof") +def target_tasks_condprof(full_task_graph, parameters, graph_config): + """ + Select tasks required for building conditioned profiles. + """ + for name, task in full_task_graph.tasks.items(): + if task.kind == "condprof": + if "a51" not in name: # bug 1765348 + yield name + + +@_target_task("system_symbols") +def target_tasks_system_symbols(full_task_graph, parameters, graph_config): + """ + Select tasks for scraping and uploading system symbols. + """ + for name, task in full_task_graph.tasks.items(): + if task.kind in [ + "system-symbols", + "system-symbols-upload", + "system-symbols-reprocess", + ]: + yield name + + +@_target_task("perftest") +def target_tasks_perftest(full_task_graph, parameters, graph_config): + """ + Select perftest tasks we want to run daily + """ + for name, task in full_task_graph.tasks.items(): + if task.kind != "perftest": + continue + if task.attributes.get("cron", False): + yield name + + +@_target_task("perftest-on-autoland") +def target_tasks_perftest_autoland(full_task_graph, parameters, graph_config): + """ + Select perftest tasks we want to run daily + """ + for name, task in full_task_graph.tasks.items(): + if task.kind != "perftest": + continue + if task.attributes.get("cron", False) and any( + test_name in name for test_name in ["view"] + ): + yield name + + +@_target_task("l10n-cross-channel") +def target_tasks_l10n_cross_channel(full_task_graph, parameters, graph_config): + """Select the set of tasks required to run l10n cross-channel.""" + + def filter(task): + return task.kind in ["l10n-cross-channel"] + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] + + +@_target_task("are-we-esmified-yet") +def target_tasks_are_we_esmified_yet(full_task_graph, parameters, graph_config): + """ + select the task to track the progress of the esmification project + """ + return [ + l for l, t in full_task_graph.tasks.items() if t.kind == "are-we-esmified-yet" + ] + + +@_target_task("eslint-build") +def target_tasks_eslint_build(full_task_graph, parameters, graph_config): + """Select the task to run additional ESLint rules which require a build.""" + + for name, task in full_task_graph.tasks.items(): + if task.kind != "source-test": + continue + if "eslint-build" in name: + yield name + + +@_target_task("holly_tasks") +def target_tasks_holly(full_task_graph, parameters, graph_config): + """Bug 1814661: only run updatebot tasks on holly""" + + def filter(task): + return task.kind == "updatebot" + + return [l for l, t in full_task_graph.tasks.items() if filter(t)] diff --git a/taskcluster/gecko_taskgraph/test/__init__.py b/taskcluster/gecko_taskgraph/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/taskcluster/gecko_taskgraph/test/automationrelevance.json b/taskcluster/gecko_taskgraph/test/automationrelevance.json new file mode 100644 index 0000000000..3bdfa9ed9e --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/automationrelevance.json @@ -0,0 +1,358 @@ +{ + "changesets": [ + { + "author": "James Long ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1300866", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1300866" + } + ], + "date": [1473196655.0, 14400], + "desc": "Bug 1300866 - expose devtools require to new debugger r=jlast,bgrins", + "extra": { + "branch": "default" + }, + "files": ["devtools/client/debugger/index.html"], + "node": "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "parents": ["37c9349b4e8167a61b08b7e119c21ea177b98942"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312890, + "reviewers": [ + { + "name": "jlast", + "revset": "reviewer(jlast)" + }, + { + "name": "bgrins", + "revset": "reviewer(bgrins)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Wes Kocher ", + "backsoutnodes": [], + "bugs": [], + "date": [1473208638.0, 25200], + "desc": "Merge m-c to fx-team, a=merge", + "extra": { + "branch": "default" + }, + "files": ["taskcluster/scripts/builder/build-l10n.sh"], + "node": "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "parents": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "91c2b9d5c1354ca79e5b174591dbb03b32b15bbf" + ], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312891, + "reviewers": [ + { + "name": "merge", + "revset": "reviewer(merge)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Towkir Ahmed ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1296648", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1296648" + } + ], + "date": [1472957580.0, 14400], + "desc": "Bug 1296648 - Fix direction of .ruleview-expander.theme-twisty in RTL locales. r=ntim", + "extra": { + "branch": "default" + }, + "files": ["devtools/client/themes/rules.css"], + "node": "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "parents": ["73a6a267a50a0e1c41e689b265ad3eebe43d7ac6"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312892, + "reviewers": [ + { + "name": "ntim", + "revset": "reviewer(ntim)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Oriol ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1300336", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1300336" + } + ], + "date": [1472921160.0, 14400], + "desc": "Bug 1300336 - Allow pseudo-arrays to have a length property. r=fitzgen", + "extra": { + "branch": "default" + }, + "files": [ + "devtools/client/webconsole/test/browser_webconsole_output_06.js", + "devtools/server/actors/object.js" + ], + "node": "99c542fa43a72ee863c813b5624048d1b443549b", + "parents": ["16a1a91f9269ab95dd83eb29dc5d0227665f7d94"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312893, + "reviewers": [ + { + "name": "fitzgen", + "revset": "reviewer(fitzgen)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Ruturaj Vartak ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1295010", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1295010" + } + ], + "date": [1472854020.0, -7200], + "desc": "Bug 1295010 - Don't move the eyedropper to the out of browser window by keyboard navigation. r=pbro\n\nMozReview-Commit-ID: vBwmSxVNXK", + "extra": { + "amend_source": "6885024ef00cfa33d73c59dc03c48ebcda9ccbdd", + "branch": "default", + "histedit_source": "c43167f0a7cbe9f4c733b15da726e5150a9529ba", + "rebase_source": "b74df421630fc46dab6b6cc026bf3e0ae6b4a651" + }, + "files": [ + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js", + "devtools/client/inspector/test/head.js", + "devtools/server/actors/highlighters/eye-dropper.js" + ], + "node": "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "parents": ["99c542fa43a72ee863c813b5624048d1b443549b"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312894, + "reviewers": [ + { + "name": "pbro", + "revset": "reviewer(pbro)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Matteo Ferretti ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1299154", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1299154" + } + ], + "date": [1472629906.0, -7200], + "desc": "Bug 1299154 - added Set/GetOverrideDPPX to restorefromHistory; r=mstange\n\nMozReview-Commit-ID: AsyAcG3Igbn\n", + "extra": { + "branch": "default", + "committer": "Matteo Ferretti 1473236511 -7200" + }, + "files": [ + "docshell/base/nsDocShell.cpp", + "dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html" + ], + "node": "541c9086c0f27fba60beecc9bc94543103895c86", + "parents": ["a6b6a93eb41a05e310a11f0172f01ba9b21d3eac"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312895, + "reviewers": [ + { + "name": "mstange", + "revset": "reviewer(mstange)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Patrick Brosset ", + "backsoutnodes": [], + "bugs": [ + { + "no": "1295010", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1295010" + } + ], + "date": [1473239449.0, -7200], + "desc": "Bug 1295010 - Removed testActor from highlighterHelper in inspector tests; r=me\n\nMozReview-Commit-ID: GMksl81iGcp", + "extra": { + "branch": "default" + }, + "files": [ + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js", + "devtools/client/inspector/test/head.js" + ], + "node": "041a925171e431bf51fb50193ab19d156088c89a", + "parents": ["541c9086c0f27fba60beecc9bc94543103895c86"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312896, + "reviewers": [ + { + "name": "me", + "revset": "reviewer(me)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + }, + { + "author": "Carsten \"Tomcat\" Book ", + "backsoutnodes": [], + "bugs": [], + "date": [1473261233.0, -7200], + "desc": "merge fx-team to mozilla-central a=merge", + "extra": { + "branch": "default" + }, + "files": [], + "node": "a14f88a9af7a59e677478694bafd9375ac53683e", + "parents": [ + "3d0b41fdd93bd8233745eadb4e0358e385bf2cb9", + "041a925171e431bf51fb50193ab19d156088c89a" + ], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "pushdate": [1473261248, 0], + "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e", + "pushid": 30664, + "pushnodes": [ + "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24", + "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6", + "16a1a91f9269ab95dd83eb29dc5d0227665f7d94", + "99c542fa43a72ee863c813b5624048d1b443549b", + "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac", + "541c9086c0f27fba60beecc9bc94543103895c86", + "041a925171e431bf51fb50193ab19d156088c89a", + "a14f88a9af7a59e677478694bafd9375ac53683e" + ], + "pushuser": "cbook@mozilla.com", + "rev": 312897, + "reviewers": [ + { + "name": "merge", + "revset": "reviewer(merge)" + } + ], + "treeherderrepo": "mozilla-central", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central" + } + ], + "visible": true +} diff --git a/taskcluster/gecko_taskgraph/test/conftest.py b/taskcluster/gecko_taskgraph/test/conftest.py new file mode 100644 index 0000000000..09231c5ab2 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/conftest.py @@ -0,0 +1,220 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import os + +import pytest +from mach.logging import LoggingManager +from responses import RequestsMock +from taskgraph import generator as generator_mod +from taskgraph import target_tasks as target_tasks_mod +from taskgraph.config import GraphConfig, load_graph_config +from taskgraph.generator import Kind, TaskGraphGenerator +from taskgraph.optimize import base as optimize_mod +from taskgraph.optimize.base import OptimizationStrategy +from taskgraph.parameters import Parameters + +from gecko_taskgraph import GECKO +from gecko_taskgraph.actions import render_actions_json +from gecko_taskgraph.util.templates import merge + + +@pytest.fixture +def responses(): + with RequestsMock() as rsps: + yield rsps + + +@pytest.fixture(scope="session", autouse=True) +def patch_prefherder(request): + from _pytest.monkeypatch import MonkeyPatch + + m = MonkeyPatch() + m.setattr( + "gecko_taskgraph.util.bugbug._write_perfherder_data", + lambda lower_is_better: None, + ) + yield + m.undo() + + +@pytest.fixture(scope="session", autouse=True) +def enable_logging(): + """Ensure logs from gecko_taskgraph are displayed when a test fails.""" + lm = LoggingManager() + lm.add_terminal_logging() + + +@pytest.fixture(scope="session") +def graph_config(): + return load_graph_config(os.path.join(GECKO, "taskcluster", "ci")) + + +@pytest.fixture(scope="session") +def actions_json(graph_config): + decision_task_id = "abcdef" + return render_actions_json(Parameters(strict=False), graph_config, decision_task_id) + + +def fake_loader(kind, path, config, parameters, loaded_tasks): + for i in range(3): + dependencies = {} + if i >= 1: + dependencies["prev"] = f"{kind}-t-{i - 1}" + + task = { + "kind": kind, + "label": f"{kind}-t-{i}", + "description": f"{kind} task {i}", + "attributes": {"_tasknum": str(i)}, + "task": { + "i": i, + "metadata": {"name": f"t-{i}"}, + "deadline": "soon", + }, + "dependencies": dependencies, + } + if "job-defaults" in config: + task = merge(config["job-defaults"], task) + yield task + + +class FakeTransform: + transforms = [] + params = {} + + def __init__(self): + pass + + @classmethod + def get(self, field, default): + try: + return getattr(self, field) + except AttributeError: + return default + + +class FakeKind(Kind): + def _get_loader(self): + return fake_loader + + def load_tasks(self, parameters, loaded_tasks, write_artifacts): + FakeKind.loaded_kinds.append(self.name) + return super().load_tasks(parameters, loaded_tasks, write_artifacts) + + @staticmethod + def create(name, extra_config, graph_config): + if name == "fullfake": + config = FakeTransform() + else: + config = {"transforms": []} + if extra_config: + config.update(extra_config) + return FakeKind(name, "/fake", config, graph_config) + + +class WithFakeKind(TaskGraphGenerator): + def _load_kinds(self, graph_config, target_kind=None): + for kind_name, cfg in self.parameters["_kinds"]: + yield FakeKind.create(kind_name, cfg, graph_config) + + +def fake_load_graph_config(root_dir): + graph_config = GraphConfig( + {"trust-domain": "test-domain", "taskgraph": {}}, root_dir + ) + graph_config.__dict__["register"] = lambda: None + return graph_config + + +class FakeParameters(dict): + strict = True + + def file_url(self, path, pretty=False): + return "" + + +class FakeOptimization(OptimizationStrategy): + description = "Fake strategy for testing" + + def __init__(self, mode, *args, **kwargs): + super().__init__(*args, **kwargs) + self.mode = mode + + def should_remove_task(self, task, params, arg): + if self.mode == "always": + return True + if self.mode == "even": + return task.task["i"] % 2 == 0 + if self.mode == "odd": + return task.task["i"] % 2 != 0 + return False + + +@pytest.fixture +def maketgg(monkeypatch): + def inner(target_tasks=None, kinds=[("_fake", [])], params=None): + params = params or {} + FakeKind.loaded_kinds = loaded_kinds = [] + target_tasks = target_tasks or [] + + def target_tasks_method(full_task_graph, parameters, graph_config): + return target_tasks + + fake_registry = { + mode: FakeOptimization(mode) for mode in ("always", "never", "even", "odd") + } + + target_tasks_mod._target_task_methods["test_method"] = target_tasks_method + monkeypatch.setattr(optimize_mod, "registry", fake_registry) + + parameters = FakeParameters( + { + "_kinds": kinds, + "backstop": False, + "enable_always_target": False, + "target_tasks_method": "test_method", + "test_manifest_loader": "default", + "try_mode": None, + "try_task_config": {}, + "tasks_for": "hg-push", + "project": "mozilla-central", + } + ) + parameters.update(params) + + monkeypatch.setattr(generator_mod, "load_graph_config", fake_load_graph_config) + + tgg = WithFakeKind("/root", parameters) + tgg.loaded_kinds = loaded_kinds + return tgg + + return inner + + +@pytest.fixture +def run_transform(): + + graph_config = fake_load_graph_config("/root") + kind = FakeKind.create("fake", {}, graph_config) + + def inner(xform, tasks): + if isinstance(tasks, dict): + tasks = [tasks] + return xform(kind.config, tasks) + + return inner + + +@pytest.fixture +def run_full_config_transform(): + + graph_config = fake_load_graph_config("/root") + kind = FakeKind.create("fullfake", {}, graph_config) + + def inner(xform, tasks): + if isinstance(tasks, dict): + tasks = [tasks] + return xform(kind.config, tasks) + + return inner diff --git a/taskcluster/gecko_taskgraph/test/docs/kinds.rst b/taskcluster/gecko_taskgraph/test/docs/kinds.rst new file mode 100644 index 0000000000..fdc16db1e3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/docs/kinds.rst @@ -0,0 +1,12 @@ +Task Kinds +========== + +Fake task kind documentation. + +newkind +---------- +Kind found in separate doc dir, + +anotherkind +----------- +Here's another. diff --git a/taskcluster/gecko_taskgraph/test/docs/parameters.rst b/taskcluster/gecko_taskgraph/test/docs/parameters.rst new file mode 100644 index 0000000000..f943f48e69 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/docs/parameters.rst @@ -0,0 +1,14 @@ +========== +Parameters +========== + +Fake parameters documentation. + +Heading +------- + +``newparameter`` + A new parameter that could be defined in a project. + +``anotherparameter`` + And here is another one. diff --git a/taskcluster/gecko_taskgraph/test/python.ini b/taskcluster/gecko_taskgraph/test/python.ini new file mode 100644 index 0000000000..2dca8fc144 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/python.ini @@ -0,0 +1,23 @@ +[DEFAULT] +subsuite = taskgraph + +[test_actions_util.py] +[test_decision.py] +[test_files_changed.py] +[test_main.py] +[test_morph.py] +[test_optimize_strategies.py] +[test_target_tasks.py] +[test_taskcluster_yml.py] +[test_transforms_job.py] +[test_transforms_test.py] +[test_try_option_syntax.py] +[test_util_attributes.py] +[test_util_backstop.py] +[test_util_bugbug.py] +[test_util_chunking.py] +[test_util_docker.py] +[test_util_partials.py] +[test_util_runnable_jobs.py] +[test_util_templates.py] +[test_util_verify.py] diff --git a/taskcluster/gecko_taskgraph/test/test_actions_util.py b/taskcluster/gecko_taskgraph/test/test_actions_util.py new file mode 100644 index 0000000000..7c38caea57 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_actions_util.py @@ -0,0 +1,179 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import unittest +from pprint import pprint +from unittest.mock import patch + +import pytest +from mozunit import MockedOpen, main +from taskgraph import create +from taskgraph.util import taskcluster + +from gecko_taskgraph import actions +from gecko_taskgraph.actions.util import combine_task_graph_files, relativize_datestamps +from gecko_taskgraph.decision import read_artifact + +TASK_DEF = { + "created": "2017-10-10T18:33:03.460Z", + # note that this is not an even number of seconds off! + "deadline": "2017-10-11T18:33:03.461Z", + "dependencies": [], + "expires": "2018-10-10T18:33:04.461Z", + "payload": { + "artifacts": { + "public": { + "expires": "2018-10-10T18:33:03.463Z", + "path": "/builds/worker/artifacts", + "type": "directory", + }, + }, + "maxRunTime": 1800, + }, +} + + +@pytest.fixture(scope="module", autouse=True) +def enable_test_mode(): + create.testing = True + taskcluster.testing = True + + +class TestRelativize(unittest.TestCase): + def test_relativize(self): + rel = relativize_datestamps(TASK_DEF) + import pprint + + pprint.pprint(rel) + assert rel["created"] == {"relative-datestamp": "0 seconds"} + assert rel["deadline"] == {"relative-datestamp": "86400 seconds"} + assert rel["expires"] == {"relative-datestamp": "31536001 seconds"} + assert rel["payload"]["artifacts"]["public"]["expires"] == { + "relative-datestamp": "31536000 seconds" + } + + +class TestCombineTaskGraphFiles(unittest.TestCase): + def test_no_suffixes(self): + with MockedOpen({}): + combine_task_graph_files([]) + self.assertRaises(Exception, open("artifacts/to-run.json")) + + @patch("gecko_taskgraph.actions.util.rename_artifact") + def test_one_suffix(self, rename_artifact): + combine_task_graph_files(["0"]) + rename_artifact.assert_any_call("task-graph-0.json", "task-graph.json") + rename_artifact.assert_any_call( + "label-to-taskid-0.json", "label-to-taskid.json" + ) + rename_artifact.assert_any_call("to-run-0.json", "to-run.json") + + def test_several_suffixes(self): + files = { + "artifacts/task-graph-0.json": json.dumps({"taska": {}}), + "artifacts/label-to-taskid-0.json": json.dumps({"taska": "TASKA"}), + "artifacts/to-run-0.json": json.dumps(["taska"]), + "artifacts/task-graph-1.json": json.dumps({"taskb": {}}), + "artifacts/label-to-taskid-1.json": json.dumps({"taskb": "TASKB"}), + "artifacts/to-run-1.json": json.dumps(["taskb"]), + } + with MockedOpen(files): + combine_task_graph_files(["0", "1"]) + self.assertEqual( + read_artifact("task-graph.json"), + { + "taska": {}, + "taskb": {}, + }, + ) + self.assertEqual( + read_artifact("label-to-taskid.json"), + { + "taska": "TASKA", + "taskb": "TASKB", + }, + ) + self.assertEqual( + sorted(read_artifact("to-run.json")), + [ + "taska", + "taskb", + ], + ) + + +def is_subset(subset, superset): + if isinstance(subset, dict): + return all( + key in superset and is_subset(val, superset[key]) + for key, val in subset.items() + ) + + if isinstance(subset, list) or isinstance(subset, set): + return all( + any(is_subset(subitem, superitem) for superitem in superset) + for subitem in subset + ) + + if isinstance(subset, str): + return subset in superset + + # assume that subset is a plain value if none of the above match + return subset == superset + + +@pytest.mark.parametrize( + "task_def,expected", + [ + pytest.param( + {"tags": {"kind": "decision-task"}}, + { + "hookPayload": { + "decision": { + "action": {"cb_name": "retrigger-decision"}, + }, + }, + }, + id="retrigger_decision", + ), + pytest.param( + {"tags": {"action": "backfill-task"}}, + { + "hookPayload": { + "decision": { + "action": {"cb_name": "retrigger-decision"}, + }, + }, + }, + id="retrigger_backfill", + ), + ], +) +def test_extract_applicable_action( + responses, monkeypatch, actions_json, task_def, expected +): + base_url = "https://taskcluster" + decision_task_id = "dddd" + task_id = "tttt" + + monkeypatch.setenv("TASK_ID", task_id) + monkeypatch.setenv("TASKCLUSTER_ROOT_URL", base_url) + monkeypatch.setenv("TASKCLUSTER_PROXY_URL", base_url) + responses.add( + responses.GET, + f"{base_url}/api/queue/v1/task/{task_id}", + status=200, + json=task_def, + ) + action = actions.util._extract_applicable_action( + actions_json, "retrigger", decision_task_id, task_id + ) + pprint(action, indent=2) + assert is_subset(expected, action) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_decision.py b/taskcluster/gecko_taskgraph/test/test_decision.py new file mode 100644 index 0000000000..81be7e0c44 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_decision.py @@ -0,0 +1,176 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os +import shutil +import tempfile +import unittest +from unittest.mock import patch + +import pytest +from mozunit import MockedOpen, main +from taskgraph.util.yaml import load_yaml + +from gecko_taskgraph import decision +from gecko_taskgraph.parameters import register_parameters + +FAKE_GRAPH_CONFIG = {"product-dir": "browser", "taskgraph": {}} + + +@pytest.fixture(scope="module", autouse=True) +def register(): + register_parameters() + + +class TestDecision(unittest.TestCase): + def test_write_artifact_json(self): + data = [{"some": "data"}] + tmpdir = tempfile.mkdtemp() + try: + decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts") + decision.write_artifact("artifact.json", data) + with open(os.path.join(decision.ARTIFACTS_DIR, "artifact.json")) as f: + self.assertEqual(json.load(f), data) + finally: + if os.path.exists(tmpdir): + shutil.rmtree(tmpdir) + decision.ARTIFACTS_DIR = "artifacts" + + def test_write_artifact_yml(self): + data = [{"some": "data"}] + tmpdir = tempfile.mkdtemp() + try: + decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts") + decision.write_artifact("artifact.yml", data) + self.assertEqual(load_yaml(decision.ARTIFACTS_DIR, "artifact.yml"), data) + finally: + if os.path.exists(tmpdir): + shutil.rmtree(tmpdir) + decision.ARTIFACTS_DIR = "artifacts" + + +class TestGetDecisionParameters(unittest.TestCase): + + ttc_file = os.path.join(os.getcwd(), "try_task_config.json") + + def setUp(self): + self.options = { + "base_repository": "https://hg.mozilla.org/mozilla-unified", + "head_repository": "https://hg.mozilla.org/mozilla-central", + "head_rev": "abcd", + "head_ref": "ef01", + "head_tag": "", + "message": "", + "project": "mozilla-central", + "pushlog_id": "143", + "pushdate": 1503691511, + "owner": "nobody@mozilla.com", + "repository_type": "hg", + "tasks_for": "hg-push", + "level": "3", + } + + @patch("gecko_taskgraph.decision.get_hg_revision_branch") + @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev") + def test_simple_options( + self, mock_determine_more_accurate_base_rev, mock_get_hg_revision_branch + ): + mock_get_hg_revision_branch.return_value = "default" + mock_determine_more_accurate_base_rev.return_value = "baserev" + with MockedOpen({self.ttc_file: None}): + params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options) + self.assertEqual(params["pushlog_id"], "143") + self.assertEqual(params["build_date"], 1503691511) + self.assertEqual(params["hg_branch"], "default") + self.assertEqual(params["moz_build_date"], "20170825200511") + self.assertEqual(params["try_mode"], None) + self.assertEqual(params["try_options"], None) + self.assertEqual(params["try_task_config"], {}) + + @patch("gecko_taskgraph.decision.get_hg_revision_branch") + @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev") + def test_no_email_owner( + self, mock_determine_more_accurate_base_rev, mock_get_hg_revision_branch + ): + mock_get_hg_revision_branch.return_value = "default" + mock_determine_more_accurate_base_rev.return_value = "baserev" + self.options["owner"] = "ffxbld" + with MockedOpen({self.ttc_file: None}): + params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options) + self.assertEqual(params["owner"], "ffxbld@noreply.mozilla.org") + + @patch("gecko_taskgraph.decision.get_hg_revision_branch") + @patch("gecko_taskgraph.decision.get_hg_commit_message") + @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev") + def test_try_options( + self, + mock_determine_more_accurate_base_rev, + mock_get_hg_commit_message, + mock_get_hg_revision_branch, + ): + mock_get_hg_commit_message.return_value = "try: -b do -t all --artifact" + mock_get_hg_revision_branch.return_value = "default" + mock_determine_more_accurate_base_rev.return_value = "baserev" + self.options["project"] = "try" + with MockedOpen({self.ttc_file: None}): + params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options) + self.assertEqual(params["try_mode"], "try_option_syntax") + self.assertEqual(params["try_options"]["build_types"], "do") + self.assertEqual(params["try_options"]["unittests"], "all") + self.assertEqual( + params["try_task_config"], + { + "gecko-profile": False, + "use-artifact-builds": True, + "env": {}, + }, + ) + + @patch("gecko_taskgraph.decision.get_hg_revision_branch") + @patch("gecko_taskgraph.decision.get_hg_commit_message") + @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev") + def test_try_task_config( + self, + mock_get_hg_commit_message, + mock_get_hg_revision_branch, + mock_determine_more_accurate_base_rev, + ): + mock_get_hg_commit_message.return_value = "Fuzzy query=foo" + mock_get_hg_revision_branch.return_value = "default" + mock_determine_more_accurate_base_rev.return_value = "baserev" + ttc = {"tasks": ["a", "b"]} + self.options["project"] = "try" + with MockedOpen({self.ttc_file: json.dumps(ttc)}): + params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options) + self.assertEqual(params["try_mode"], "try_task_config") + self.assertEqual(params["try_options"], None) + self.assertEqual(params["try_task_config"], ttc) + + def test_try_syntax_from_message_empty(self): + self.assertEqual(decision.try_syntax_from_message(""), "") + + def test_try_syntax_from_message_no_try_syntax(self): + self.assertEqual(decision.try_syntax_from_message("abc | def"), "") + + def test_try_syntax_from_message_initial_try_syntax(self): + self.assertEqual( + decision.try_syntax_from_message("try: -f -o -o"), "try: -f -o -o" + ) + + def test_try_syntax_from_message_initial_try_syntax_multiline(self): + self.assertEqual( + decision.try_syntax_from_message("try: -f -o -o\nabc\ndef"), "try: -f -o -o" + ) + + def test_try_syntax_from_message_embedded_try_syntax_multiline(self): + self.assertEqual( + decision.try_syntax_from_message("some stuff\ntry: -f -o -o\nabc\ndef"), + "try: -f -o -o", + ) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_files_changed.py b/taskcluster/gecko_taskgraph/test/test_files_changed.py new file mode 100644 index 0000000000..5b9a016649 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_files_changed.py @@ -0,0 +1,90 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os +import unittest + +from mozunit import main + +from gecko_taskgraph import files_changed +from gecko_taskgraph.util import hg + +PARAMS = { + "head_repository": "https://hg.mozilla.org/mozilla-central", + "head_rev": "a14f88a9af7a", +} + +FILES_CHANGED = [ + "devtools/client/debugger/index.html", + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js", + "devtools/client/inspector/test/head.js", + "devtools/client/themes/rules.css", + "devtools/client/webconsole/test/browser_webconsole_output_06.js", + "devtools/server/actors/highlighters/eye-dropper.js", + "devtools/server/actors/object.js", + "docshell/base/nsDocShell.cpp", + "dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html", + "taskcluster/scripts/builder/build-l10n.sh", +] + + +class FakeResponse: + def json(self): + with open( + os.path.join(os.path.dirname(__file__), "automationrelevance.json") + ) as f: + return json.load(f) + + +class TestGetChangedFiles(unittest.TestCase): + def setUp(self): + files_changed.get_changed_files.clear() + self.old_get = hg.requests.get + + def fake_get(url, **kwargs): + return FakeResponse() + + hg.requests.get = fake_get + + def tearDown(self): + hg.requests.get = self.old_get + files_changed.get_changed_files.clear() + + def test_get_changed_files(self): + """Get_changed_files correctly gets the list of changed files in a push. + This tests against the production hg.mozilla.org so that it will detect + any changes in the format of the returned data.""" + self.assertEqual( + sorted( + files_changed.get_changed_files( + PARAMS["head_repository"], PARAMS["head_rev"] + ) + ), + FILES_CHANGED, + ) + + +class TestCheck(unittest.TestCase): + def setUp(self): + files_changed.get_changed_files[ + PARAMS["head_repository"], PARAMS["head_rev"] + ] = FILES_CHANGED + + def tearDown(self): + files_changed.get_changed_files.clear() + + def test_check_no_params(self): + self.assertTrue(files_changed.check({}, ["ignored"])) + + def test_check_no_match(self): + self.assertFalse(files_changed.check(PARAMS, ["nosuch/**"])) + + def test_check_match(self): + self.assertTrue(files_changed.check(PARAMS, ["devtools/**"])) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_main.py b/taskcluster/gecko_taskgraph/test/test_main.py new file mode 100644 index 0000000000..bb1aa1caeb --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_main.py @@ -0,0 +1,67 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import pytest +from mozunit import main as mozunit_main + +import gecko_taskgraph +from gecko_taskgraph.main import main as taskgraph_main + + +@pytest.fixture +def run_main(maketgg, monkeypatch): + def inner(args, **kwargs): + kwargs.setdefault("target_tasks", ["_fake-t-0", "_fake-t-1"]) + tgg = maketgg(**kwargs) + + def fake_get_taskgraph_generator(*args): + return tgg + + monkeypatch.setattr( + gecko_taskgraph.main, + "get_taskgraph_generator", + fake_get_taskgraph_generator, + ) + taskgraph_main(args) + return tgg + + return inner + + +@pytest.mark.parametrize( + "attr,expected", + ( + ("tasks", ["_fake-t-0", "_fake-t-1", "_fake-t-2"]), + ("full", ["_fake-t-0", "_fake-t-1", "_fake-t-2"]), + ("target", ["_fake-t-0", "_fake-t-1"]), + ("target-graph", ["_fake-t-0", "_fake-t-1"]), + ("optimized", ["_fake-t-0", "_fake-t-1"]), + ("morphed", ["_fake-t-0", "_fake-t-1"]), + ), +) +def test_show_taskgraph(run_main, capsys, attr, expected): + run_main([attr]) + out, err = capsys.readouterr() + assert out.strip() == "\n".join(expected) + assert "Dumping result" in err + + +def test_tasks_regex(run_main, capsys): + run_main(["full", "--tasks=_.*-t-1"]) + out, _ = capsys.readouterr() + assert out.strip() == "_fake-t-1" + + +def test_output_file(run_main, tmpdir): + output_file = tmpdir.join("out.txt") + assert not output_file.check() + + run_main(["full", f"--output-file={output_file.strpath}"]) + assert output_file.check() + assert output_file.read_text("utf-8").strip() == "\n".join( + ["_fake-t-0", "_fake-t-1", "_fake-t-2"] + ) + + +if __name__ == "__main__": + mozunit_main() diff --git a/taskcluster/gecko_taskgraph/test/test_morph.py b/taskcluster/gecko_taskgraph/test/test_morph.py new file mode 100644 index 0000000000..c29fb58207 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_morph.py @@ -0,0 +1,108 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import pytest +from mozunit import main +from taskgraph.graph import Graph +from taskgraph.parameters import Parameters +from taskgraph.task import Task +from taskgraph.taskgraph import TaskGraph + +from gecko_taskgraph import morph + + +@pytest.fixture +def make_taskgraph(): + def inner(tasks): + label_to_taskid = {k: k + "-tid" for k in tasks} + for label, task_id in label_to_taskid.items(): + tasks[label].task_id = task_id + graph = Graph(nodes=set(tasks), edges=set()) + taskgraph = TaskGraph(tasks, graph) + return taskgraph, label_to_taskid + + return inner + + +def test_make_index_tasks(make_taskgraph, graph_config): + task_def = { + "routes": [ + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.es-MX", + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.fy-NL", + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sk", + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sl", + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.uk", + "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.zh-CN", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.es-MX", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.fy-NL", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.sk", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.sl", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.uk", + "index.gecko.v2.mozilla-central.pushdate." + "2017.04.04.20170404100210.firefox-l10n.linux64-opt.zh-CN", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.es-MX", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.fy-NL", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sk", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sl", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.uk", + "index.gecko.v2.mozilla-central.revision." + "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.zh-CN", + ], + "deadline": "soon", + "metadata": { + "description": "desc", + "owner": "owner@foo.com", + "source": "https://source", + }, + "extra": { + "index": {"rank": 1540722354}, + }, + } + task = Task(kind="test", label="a", attributes={}, task=task_def) + docker_task = Task( + kind="docker-image", label="docker-image-index-task", attributes={}, task={} + ) + taskgraph, label_to_taskid = make_taskgraph( + { + task.label: task, + docker_task.label: docker_task, + } + ) + + index_paths = [ + r.split(".", 1)[1] for r in task_def["routes"] if r.startswith("index.") + ] + index_task = morph.make_index_task( + task, + taskgraph, + label_to_taskid, + Parameters(strict=False), + graph_config, + index_paths=index_paths, + index_rank=1540722354, + purpose="index-task", + dependencies={}, + ) + + assert index_task.task["payload"]["command"][0] == "insert-indexes.js" + assert index_task.task["payload"]["env"]["TARGET_TASKID"] == "a-tid" + assert index_task.task["payload"]["env"]["INDEX_RANK"] == 1540722354 + + # check the scope summary + assert index_task.task["scopes"] == ["index:insert-task:gecko.v2.mozilla-central.*"] + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py b/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py new file mode 100644 index 0000000000..0f37332300 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py @@ -0,0 +1,551 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + + +import time +from datetime import datetime +from time import mktime + +import pytest +from mozunit import main +from taskgraph.optimize.base import registry +from taskgraph.task import Task + +from gecko_taskgraph.optimize import project +from gecko_taskgraph.optimize.backstop import SkipUnlessBackstop, SkipUnlessPushInterval +from gecko_taskgraph.optimize.bugbug import ( + FALLBACK, + BugBugPushSchedules, + DisperseGroups, + SkipUnlessDebug, +) +from gecko_taskgraph.optimize.strategies import IndexSearch, SkipUnlessSchedules +from gecko_taskgraph.util.backstop import BACKSTOP_PUSH_INTERVAL +from gecko_taskgraph.util.bugbug import ( + BUGBUG_BASE_URL, + BugbugTimeoutException, + push_schedules, +) + + +@pytest.fixture(autouse=True) +def clear_push_schedules_memoize(): + push_schedules.clear() + + +@pytest.fixture +def params(): + return { + "branch": "autoland", + "head_repository": "https://hg.mozilla.org/integration/autoland", + "head_rev": "abcdef", + "project": "autoland", + "pushlog_id": 1, + "pushdate": mktime(datetime.now().timetuple()), + } + + +def generate_tasks(*tasks): + for i, task in enumerate(tasks): + task.setdefault("label", f"task-{i}-label") + task.setdefault("kind", "test") + task.setdefault("task", {}) + task.setdefault("attributes", {}) + task["attributes"].setdefault("e10s", True) + + for attr in ( + "optimization", + "dependencies", + "soft_dependencies", + ): + task.setdefault(attr, None) + + task["task"].setdefault("label", task["label"]) + yield Task.from_json(task) + + +# task sets + +default_tasks = list( + generate_tasks( + {"attributes": {"test_manifests": ["foo/test.ini", "bar/test.ini"]}}, + {"attributes": {"test_manifests": ["bar/test.ini"], "build_type": "debug"}}, + {"attributes": {"build_type": "debug"}}, + {"attributes": {"test_manifests": [], "build_type": "opt"}}, + {"attributes": {"build_type": "opt"}}, + ) +) + + +disperse_tasks = list( + generate_tasks( + { + "attributes": { + "test_manifests": ["foo/test.ini", "bar/test.ini"], + "test_platform": "linux/opt", + } + }, + { + "attributes": { + "test_manifests": ["bar/test.ini"], + "test_platform": "linux/opt", + } + }, + { + "attributes": { + "test_manifests": ["bar/test.ini"], + "test_platform": "windows/debug", + } + }, + { + "attributes": { + "test_manifests": ["bar/test.ini"], + "test_platform": "linux/opt", + "unittest_variant": "no-fission", + } + }, + { + "attributes": { + "e10s": False, + "test_manifests": ["bar/test.ini"], + "test_platform": "linux/opt", + } + }, + ) +) + + +def idfn(param): + if isinstance(param, tuple): + try: + return param[0].__name__ + except AttributeError: + return None + return None + + +@pytest.mark.parametrize( + "opt,tasks,arg,expected", + [ + # debug + pytest.param( + SkipUnlessDebug(), + default_tasks, + None, + ["task-0-label", "task-1-label", "task-2-label"], + ), + # disperse with no supplied importance + pytest.param( + DisperseGroups(), + disperse_tasks, + None, + [t.label for t in disperse_tasks], + ), + # disperse with low importance + pytest.param( + DisperseGroups(), + disperse_tasks, + {"bar/test.ini": "low"}, + ["task-0-label", "task-2-label"], + ), + # disperse with medium importance + pytest.param( + DisperseGroups(), + disperse_tasks, + {"bar/test.ini": "medium"}, + ["task-0-label", "task-1-label", "task-2-label"], + ), + # disperse with high importance + pytest.param( + DisperseGroups(), + disperse_tasks, + {"bar/test.ini": "high"}, + ["task-0-label", "task-1-label", "task-2-label", "task-3-label"], + ), + ], + ids=idfn, +) +def test_optimization_strategy_remove(params, opt, tasks, arg, expected): + labels = [t.label for t in tasks if not opt.should_remove_task(t, params, arg)] + assert sorted(labels) == sorted(expected) + + +@pytest.mark.parametrize( + "state,expires,expected", + ( + ("completed", "2021-06-06T14:53:16.937Z", False), + ("completed", "2021-06-08T14:53:16.937Z", "abc"), + ("exception", "2021-06-08T14:53:16.937Z", False), + ("failed", "2021-06-08T14:53:16.937Z", False), + ), +) +def test_index_search(responses, params, state, expires, expected): + taskid = "abc" + index_path = "foo.bar.latest" + responses.add( + responses.GET, + f"https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/{index_path}", + json={"taskId": taskid}, + status=200, + ) + + responses.add( + responses.GET, + f"https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/{taskid}/status", + json={ + "status": { + "state": state, + "expires": expires, + } + }, + status=200, + ) + + opt = IndexSearch() + deadline = "2021-06-07T19:03:20.482Z" + assert opt.should_replace_task({}, params, deadline, (index_path,)) == expected + + +@pytest.mark.parametrize( + "args,data,expected", + [ + # empty + pytest.param( + (0.1,), + {}, + [], + ), + # only tasks without test manifests selected + pytest.param( + (0.1,), + {"tasks": {"task-1-label": 0.9, "task-2-label": 0.1, "task-3-label": 0.5}}, + ["task-2-label"], + ), + # tasks which are unknown to bugbug are selected + pytest.param( + (0.1,), + { + "tasks": {"task-1-label": 0.9, "task-3-label": 0.5}, + "known_tasks": ["task-1-label", "task-3-label", "task-4-label"], + }, + ["task-2-label"], + ), + # tasks containing groups selected + pytest.param( + (0.1,), + {"groups": {"foo/test.ini": 0.4}}, + ["task-0-label"], + ), + # tasks matching "tasks" or "groups" selected + pytest.param( + (0.1,), + { + "tasks": {"task-2-label": 0.2}, + "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75}, + }, + ["task-0-label", "task-1-label", "task-2-label"], + ), + # tasks matching "tasks" or "groups" selected, when they exceed the confidence threshold + pytest.param( + (0.5,), + { + "tasks": {"task-2-label": 0.2, "task-4-label": 0.5}, + "groups": {"foo/test.ini": 0.65, "bar/test.ini": 0.25}, + }, + ["task-0-label", "task-4-label"], + ), + # tasks matching "reduced_tasks" are selected, when they exceed the confidence threshold + pytest.param( + (0.7, True, True), + { + "tasks": {"task-2-label": 0.7, "task-4-label": 0.7}, + "reduced_tasks": {"task-4-label": 0.7}, + "groups": {"foo/test.ini": 0.75, "bar/test.ini": 0.25}, + }, + ["task-4-label"], + ), + # tasks matching "groups" selected, only on specific platforms. + pytest.param( + (0.1, False, False, None, 1, True), + { + "tasks": {"task-2-label": 0.2}, + "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75}, + "config_groups": { + "foo/test.ini": ["task-1-label", "task-0-label"], + "bar/test.ini": ["task-0-label"], + }, + }, + ["task-0-label", "task-2-label"], + ), + pytest.param( + (0.1, False, False, None, 1, True), + { + "tasks": {"task-2-label": 0.2}, + "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75}, + "config_groups": { + "foo/test.ini": ["task-1-label", "task-0-label"], + "bar/test.ini": ["task-1-label"], + }, + }, + ["task-0-label", "task-1-label", "task-2-label"], + ), + pytest.param( + (0.1, False, False, None, 1, True), + { + "tasks": {"task-2-label": 0.2}, + "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75}, + "config_groups": { + "foo/test.ini": ["task-1-label"], + "bar/test.ini": ["task-0-label"], + }, + }, + ["task-0-label", "task-2-label"], + ), + pytest.param( + (0.1, False, False, None, 1, True), + { + "tasks": {"task-2-label": 0.2}, + "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75}, + "config_groups": { + "foo/test.ini": ["task-1-label"], + "bar/test.ini": ["task-3-label"], + }, + }, + ["task-2-label"], + ), + ], + ids=idfn, +) +def test_bugbug_push_schedules(responses, params, args, data, expected): + query = "/push/{branch}/{head_rev}/schedules".format(**params) + url = BUGBUG_BASE_URL + query + + responses.add( + responses.GET, + url, + json=data, + status=200, + ) + + opt = BugBugPushSchedules(*args) + labels = [ + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + ] + assert sorted(labels) == sorted(expected) + + +def test_bugbug_multiple_pushes(responses, params): + pushes = {str(pid): {"changesets": [f"c{pid}"]} for pid in range(8, 10)} + + responses.add( + responses.GET, + "https://hg.mozilla.org/integration/autoland/json-pushes/?version=2&startID=8&endID=9", + json={"pushes": pushes}, + status=200, + ) + + responses.add( + responses.GET, + BUGBUG_BASE_URL + "/push/{}/c9/schedules".format(params["branch"]), + json={ + "tasks": {"task-2-label": 0.2, "task-4-label": 0.5}, + "groups": {"foo/test.ini": 0.2, "bar/test.ini": 0.25}, + "config_groups": {"foo/test.ini": ["linux-*"], "bar/test.ini": ["task-*"]}, + "known_tasks": ["task-4-label"], + }, + status=200, + ) + + # Tasks with a lower confidence don't override task with a higher one. + # Tasks with a higher confidence override tasks with a lower one. + # Known tasks are merged. + responses.add( + responses.GET, + BUGBUG_BASE_URL + "/push/{branch}/{head_rev}/schedules".format(**params), + json={ + "tasks": {"task-2-label": 0.2, "task-4-label": 0.2}, + "groups": {"foo/test.ini": 0.65, "bar/test.ini": 0.25}, + "config_groups": { + "foo/test.ini": ["task-*"], + "bar/test.ini": ["windows-*"], + }, + "known_tasks": ["task-1-label", "task-3-label"], + }, + status=200, + ) + + params["pushlog_id"] = 10 + + opt = BugBugPushSchedules(0.3, False, False, False, 2) + labels = [ + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + ] + assert sorted(labels) == sorted(["task-0-label", "task-2-label", "task-4-label"]) + + opt = BugBugPushSchedules(0.3, False, False, False, 2, True) + labels = [ + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + ] + assert sorted(labels) == sorted(["task-0-label", "task-2-label", "task-4-label"]) + + opt = BugBugPushSchedules(0.2, False, False, False, 2, True) + labels = [ + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + ] + assert sorted(labels) == sorted( + ["task-0-label", "task-1-label", "task-2-label", "task-4-label"] + ) + + +def test_bugbug_timeout(monkeypatch, responses, params): + query = "/push/{branch}/{head_rev}/schedules".format(**params) + url = BUGBUG_BASE_URL + query + responses.add( + responses.GET, + url, + json={"ready": False}, + status=202, + ) + + # Make sure the test runs fast. + monkeypatch.setattr(time, "sleep", lambda i: None) + + opt = BugBugPushSchedules(0.5) + with pytest.raises(BugbugTimeoutException): + opt.should_remove_task(default_tasks[0], params, None) + + +def test_bugbug_fallback(monkeypatch, responses, params): + query = "/push/{branch}/{head_rev}/schedules".format(**params) + url = BUGBUG_BASE_URL + query + responses.add( + responses.GET, + url, + json={"ready": False}, + status=202, + ) + + opt = BugBugPushSchedules(0.5, fallback=FALLBACK) + + # Make sure the test runs fast. + monkeypatch.setattr(time, "sleep", lambda i: None) + + def fake_should_remove_task(task, params, _): + return task.label == default_tasks[0].label + + monkeypatch.setattr( + registry[FALLBACK], "should_remove_task", fake_should_remove_task + ) + + assert opt.should_remove_task(default_tasks[0], params, None) + + # Make sure we don't hit bugbug more than once. + responses.reset() + + assert not opt.should_remove_task(default_tasks[1], params, None) + + +def test_backstop(params): + all_labels = {t.label for t in default_tasks} + opt = SkipUnlessBackstop() + + params["backstop"] = False + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == set() + + params["backstop"] = True + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == all_labels + + +def test_push_interval(params): + all_labels = {t.label for t in default_tasks} + opt = SkipUnlessPushInterval(10) # every 10th push + + # Only multiples of 10 schedule tasks. + params["pushlog_id"] = 9 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == set() + + params["pushlog_id"] = 10 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == all_labels + + +def test_expanded(params): + all_labels = {t.label for t in default_tasks} + opt = registry["skip-unless-expanded"] + + params["backstop"] = False + params["pushlog_id"] = BACKSTOP_PUSH_INTERVAL / 2 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == all_labels + + params["pushlog_id"] += 1 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == set() + + params["backstop"] = True + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, None) + } + assert scheduled == all_labels + + +def test_project_autoland_test(monkeypatch, responses, params): + """Tests the behaviour of the `project.autoland["test"]` strategy on + various types of pushes. + """ + # This is meant to test the composition of substrategies, and not the + # actual optimization implementations. So mock them out for simplicity. + monkeypatch.setattr(SkipUnlessSchedules, "should_remove_task", lambda *args: False) + monkeypatch.setattr(DisperseGroups, "should_remove_task", lambda *args: False) + + def fake_bugbug_should_remove_task(self, task, params, importance): + if self.num_pushes > 1: + return task.label == "task-4-label" + return task.label in ("task-2-label", "task-3-label", "task-4-label") + + monkeypatch.setattr( + BugBugPushSchedules, "should_remove_task", fake_bugbug_should_remove_task + ) + + opt = project.autoland["test"] + + # On backstop pushes, nothing gets optimized. + params["backstop"] = True + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + } + assert scheduled == {t.label for t in default_tasks} + + # On expanded pushes, some things are optimized. + params["backstop"] = False + params["pushlog_id"] = 10 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + } + assert scheduled == {"task-0-label", "task-1-label", "task-2-label", "task-3-label"} + + # On regular pushes, more things are optimized. + params["pushlog_id"] = 11 + scheduled = { + t.label for t in default_tasks if not opt.should_remove_task(t, params, {}) + } + assert scheduled == {"task-0-label", "task-1-label"} + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_target_tasks.py b/taskcluster/gecko_taskgraph/test/test_target_tasks.py new file mode 100644 index 0000000000..154c0f910a --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_target_tasks.py @@ -0,0 +1,371 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import contextlib +import re +import unittest + +import pytest +from mozunit import main +from taskgraph.graph import Graph +from taskgraph.task import Task +from taskgraph.taskgraph import TaskGraph + +from gecko_taskgraph import target_tasks, try_option_syntax + + +class FakeTryOptionSyntax: + def __init__(self, message, task_graph, graph_config): + self.trigger_tests = 0 + self.talos_trigger_tests = 0 + self.raptor_trigger_tests = 0 + self.notifications = None + self.env = [] + self.profile = False + self.tag = None + self.no_retry = False + + def task_matches(self, task): + return "at-at" in task.attributes + + +class TestTargetTasks(unittest.TestCase): + def default_matches_project(self, run_on_projects, project): + return self.default_matches( + attributes={ + "run_on_projects": run_on_projects, + }, + parameters={ + "project": project, + "hg_branch": "default", + }, + ) + + def default_matches_hg_branch(self, run_on_hg_branches, hg_branch): + attributes = {"run_on_projects": ["all"]} + if run_on_hg_branches is not None: + attributes["run_on_hg_branches"] = run_on_hg_branches + + return self.default_matches( + attributes=attributes, + parameters={ + "project": "mozilla-central", + "hg_branch": hg_branch, + }, + ) + + def default_matches(self, attributes, parameters): + method = target_tasks.get_method("default") + graph = TaskGraph( + tasks={ + "a": Task(kind="build", label="a", attributes=attributes, task={}), + }, + graph=Graph(nodes={"a"}, edges=set()), + ) + return "a" in method(graph, parameters, {}) + + def test_default_all(self): + """run_on_projects=[all] includes release, integration, and other projects""" + self.assertTrue(self.default_matches_project(["all"], "mozilla-central")) + self.assertTrue(self.default_matches_project(["all"], "baobab")) + + def test_default_integration(self): + """run_on_projects=[integration] includes integration projects""" + self.assertFalse( + self.default_matches_project(["integration"], "mozilla-central") + ) + self.assertFalse(self.default_matches_project(["integration"], "baobab")) + + def test_default_release(self): + """run_on_projects=[release] includes release projects""" + self.assertTrue(self.default_matches_project(["release"], "mozilla-central")) + self.assertFalse(self.default_matches_project(["release"], "baobab")) + + def test_default_nothing(self): + """run_on_projects=[] includes nothing""" + self.assertFalse(self.default_matches_project([], "mozilla-central")) + self.assertFalse(self.default_matches_project([], "baobab")) + + def test_default_hg_branch(self): + self.assertTrue(self.default_matches_hg_branch(None, "default")) + self.assertTrue(self.default_matches_hg_branch(None, "GECKOVIEW_62_RELBRANCH")) + + self.assertFalse(self.default_matches_hg_branch([], "default")) + self.assertFalse(self.default_matches_hg_branch([], "GECKOVIEW_62_RELBRANCH")) + + self.assertTrue(self.default_matches_hg_branch(["all"], "default")) + self.assertTrue( + self.default_matches_hg_branch(["all"], "GECKOVIEW_62_RELBRANCH") + ) + + self.assertTrue(self.default_matches_hg_branch(["default"], "default")) + self.assertTrue(self.default_matches_hg_branch([r"default"], "default")) + self.assertFalse( + self.default_matches_hg_branch([r"default"], "GECKOVIEW_62_RELBRANCH") + ) + + self.assertTrue( + self.default_matches_hg_branch( + ["GECKOVIEW_62_RELBRANCH"], "GECKOVIEW_62_RELBRANCH" + ) + ) + self.assertTrue( + self.default_matches_hg_branch( + [r"GECKOVIEW_\d+_RELBRANCH"], "GECKOVIEW_62_RELBRANCH" + ) + ) + self.assertTrue( + self.default_matches_hg_branch( + [r"GECKOVIEW_\d+_RELBRANCH"], "GECKOVIEW_62_RELBRANCH" + ) + ) + self.assertFalse( + self.default_matches_hg_branch([r"GECKOVIEW_\d+_RELBRANCH"], "default") + ) + + def make_task_graph(self): + tasks = { + "a": Task(kind=None, label="a", attributes={}, task={}), + "b": Task(kind=None, label="b", attributes={"at-at": "yep"}, task={}), + "c": Task( + kind=None, label="c", attributes={"run_on_projects": ["try"]}, task={} + ), + } + graph = Graph(nodes=set("abc"), edges=set()) + return TaskGraph(tasks, graph) + + @contextlib.contextmanager + def fake_TryOptionSyntax(self): + orig_TryOptionSyntax = try_option_syntax.TryOptionSyntax + try: + try_option_syntax.TryOptionSyntax = FakeTryOptionSyntax + yield + finally: + try_option_syntax.TryOptionSyntax = orig_TryOptionSyntax + + def test_empty_try(self): + "try_mode = None runs nothing" + tg = self.make_task_graph() + method = target_tasks.get_method("try_tasks") + params = { + "try_mode": None, + "project": "try", + "message": "", + } + # only runs the task with run_on_projects: try + self.assertEqual(method(tg, params, {}), []) + + def test_try_option_syntax(self): + "try_mode = try_option_syntax uses TryOptionSyntax" + tg = self.make_task_graph() + method = target_tasks.get_method("try_tasks") + with self.fake_TryOptionSyntax(): + params = { + "try_mode": "try_option_syntax", + "message": "try: -p all", + } + self.assertEqual(method(tg, params, {}), ["b"]) + + def test_try_task_config(self): + "try_mode = try_task_config uses the try config" + tg = self.make_task_graph() + method = target_tasks.get_method("try_tasks") + params = { + "try_mode": "try_task_config", + "try_task_config": {"tasks": ["a"]}, + } + self.assertEqual(method(tg, params, {}), ["a"]) + + +# tests for specific filters + + +@pytest.mark.parametrize( + "name,params,expected", + ( + pytest.param( + "filter_tests_without_manifests", + { + "task": Task(kind="test", label="a", attributes={}, task={}), + "parameters": None, + }, + True, + id="filter_tests_without_manifests_not_in_attributes", + ), + pytest.param( + "filter_tests_without_manifests", + { + "task": Task( + kind="test", + label="a", + attributes={"test_manifests": ["foo"]}, + task={}, + ), + "parameters": None, + }, + True, + id="filter_tests_without_manifests_has_test_manifests", + ), + pytest.param( + "filter_tests_without_manifests", + { + "task": Task( + kind="build", + label="a", + attributes={"test_manifests": None}, + task={}, + ), + "parameters": None, + }, + True, + id="filter_tests_without_manifests_not_a_test", + ), + pytest.param( + "filter_tests_without_manifests", + { + "task": Task( + kind="test", label="a", attributes={"test_manifests": None}, task={} + ), + "parameters": None, + }, + False, + id="filter_tests_without_manifests_has_no_test_manifests", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("build")], + "mode": "include", + }, + True, + id="filter_regex_simple_include", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("linux(.+)debug")], + "mode": "include", + }, + True, + id="filter_regex_re_include", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("nothing"), re.compile("linux(.+)debug")], + "mode": "include", + }, + True, + id="filter_regex_re_include_multiple", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("build")], + "mode": "exclude", + }, + False, + id="filter_regex_simple_exclude", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("linux(.+)debug")], + "mode": "exclude", + }, + False, + id="filter_regex_re_exclude", + ), + pytest.param( + "filter_by_regex", + { + "task_label": "build-linux64-debug", + "regexes": [re.compile("linux(.+)debug"), re.compile("nothing")], + "mode": "exclude", + }, + False, + id="filter_regex_re_exclude_multiple", + ), + pytest.param( + "filter_unsupported_artifact_builds", + { + "task": Task( + kind="test", + label="a", + attributes={"supports-artifact-builds": False}, + task={}, + ), + "parameters": { + "try_task_config": { + "use-artifact-builds": False, + }, + }, + }, + True, + id="filter_unsupported_artifact_builds_no_artifact_builds", + ), + pytest.param( + "filter_unsupported_artifact_builds", + { + "task": Task( + kind="test", + label="a", + attributes={"supports-artifact-builds": False}, + task={}, + ), + "parameters": { + "try_task_config": { + "use-artifact-builds": True, + }, + }, + }, + False, + id="filter_unsupported_artifact_builds_removed", + ), + pytest.param( + "filter_unsupported_artifact_builds", + { + "task": Task( + kind="test", + label="a", + attributes={"supports-artifact-builds": True}, + task={}, + ), + "parameters": { + "try_task_config": { + "use-artifact-builds": True, + }, + }, + }, + True, + id="filter_unsupported_artifact_builds_not_removed", + ), + pytest.param( + "filter_unsupported_artifact_builds", + { + "task": Task(kind="test", label="a", attributes={}, task={}), + "parameters": { + "try_task_config": { + "use-artifact-builds": True, + }, + }, + }, + True, + id="filter_unsupported_artifact_builds_not_removed", + ), + ), +) +def test_filters(name, params, expected): + func = getattr(target_tasks, name) + assert func(**params) is expected + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py b/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py new file mode 100644 index 0000000000..cdf94ec3e1 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py @@ -0,0 +1,145 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import pprint +import unittest + +import jsone +import slugid +from mozunit import main +from taskgraph.util.time import current_json_time +from taskgraph.util.yaml import load_yaml + +from gecko_taskgraph import GECKO + + +class TestTaskclusterYml(unittest.TestCase): + @property + def taskcluster_yml(self): + return load_yaml(GECKO, ".taskcluster.yml") + + def test_push(self): + context = { + "tasks_for": "hg-push", + "push": { + "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20", + "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c", + "owner": "dustin@mozilla.com", + "pushlog_id": 1556565286, + "pushdate": 112957, + }, + "repository": { + "url": "https://hg.mozilla.org/mozilla-central", + "project": "mozilla-central", + "level": "3", + }, + "ownTaskId": slugid.nice(), + } + rendered = jsone.render(self.taskcluster_yml, context) + pprint.pprint(rendered) + self.assertEqual( + rendered["tasks"][0]["metadata"]["name"], "Gecko Decision Task" + ) + self.assertIn("matrixBody", rendered["tasks"][0]["extra"]["notify"]) + + def test_push_non_mc(self): + context = { + "tasks_for": "hg-push", + "push": { + "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20", + "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c", + "owner": "dustin@mozilla.com", + "pushlog_id": 1556565286, + "pushdate": 112957, + }, + "repository": { + "url": "https://hg.mozilla.org/releases/mozilla-beta", + "project": "mozilla-beta", + "level": "3", + }, + "ownTaskId": slugid.nice(), + } + rendered = jsone.render(self.taskcluster_yml, context) + pprint.pprint(rendered) + self.assertEqual( + rendered["tasks"][0]["metadata"]["name"], "Gecko Decision Task" + ) + self.assertNotIn("matrixBody", rendered["tasks"][0]["extra"]["notify"]) + + def test_cron(self): + context = { + "tasks_for": "cron", + "repository": { + "url": "https://hg.mozilla.org/mozilla-central", + "project": "mozilla-central", + "level": 3, + }, + "push": { + "revision": "e8aebe488b2f2e567940577de25013d00e818f7c", + "base_revision": "54cbb3745cdb9a8aa0a4428d405b3b2e1c7d13c2", + "pushlog_id": -1, + "pushdate": 0, + "owner": "cron", + }, + "cron": { + "task_id": "", + "job_name": "test", + "job_symbol": "T", + "quoted_args": "abc def", + }, + "now": current_json_time(), + "ownTaskId": slugid.nice(), + } + rendered = jsone.render(self.taskcluster_yml, context) + pprint.pprint(rendered) + self.assertEqual( + rendered["tasks"][0]["metadata"]["name"], "Decision Task for cron job test" + ) + + def test_action(self): + context = { + "tasks_for": "action", + "repository": { + "url": "https://hg.mozilla.org/mozilla-central", + "project": "mozilla-central", + "level": 3, + }, + "push": { + "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20", + "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c", + "owner": "dustin@mozilla.com", + "pushlog_id": 1556565286, + "pushdate": 112957, + }, + "action": { + "name": "test-action", + "title": "Test Action", + "description": "Just testing", + "taskGroupId": slugid.nice(), + "symbol": "t", + "repo_scope": "assume:repo:hg.mozilla.org/try:action:generic", + "cb_name": "test_action", + }, + "input": {}, + "parameters": {}, + "now": current_json_time(), + "taskId": slugid.nice(), + "ownTaskId": slugid.nice(), + "clientId": "testing/testing/testing", + } + rendered = jsone.render(self.taskcluster_yml, context) + pprint.pprint(rendered) + self.assertEqual( + rendered["tasks"][0]["metadata"]["name"], "Action: Test Action" + ) + + def test_unknown(self): + context = {"tasks_for": "bitkeeper-push"} + rendered = jsone.render(self.taskcluster_yml, context) + pprint.pprint(rendered) + self.assertEqual(rendered["tasks"], []) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_transforms_job.py b/taskcluster/gecko_taskgraph/test/test_transforms_job.py new file mode 100644 index 0000000000..8bf85dcf62 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_transforms_job.py @@ -0,0 +1,150 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Tests for the 'job' transform subsystem. +""" + + +import os +from copy import deepcopy + +import pytest +from mozunit import main +from taskgraph.config import load_graph_config +from taskgraph.transforms.base import TransformConfig +from taskgraph.util.schema import Schema, validate_schema + +from gecko_taskgraph import GECKO +from gecko_taskgraph.test.conftest import FakeParameters +from gecko_taskgraph.transforms import job +from gecko_taskgraph.transforms.job import run_task # noqa: F401 +from gecko_taskgraph.transforms.job.common import add_cache +from gecko_taskgraph.transforms.task import payload_builders + +here = os.path.abspath(os.path.dirname(__file__)) + + +TASK_DEFAULTS = { + "description": "fake description", + "label": "fake-task-label", + "run": { + "using": "run-task", + }, +} + + +@pytest.fixture(scope="module") +def config(): + graph_config = load_graph_config(os.path.join(GECKO, "taskcluster", "ci")) + params = FakeParameters( + { + "base_repository": "http://hg.example.com", + "head_repository": "http://hg.example.com", + "head_rev": "abcdef", + "level": 1, + "project": "example", + } + ) + return TransformConfig( + "job_test", here, {}, params, {}, graph_config, write_artifacts=False + ) + + +@pytest.fixture() +def transform(monkeypatch, config): + """Run the job transforms on the specified task but return the inputs to + `configure_taskdesc_for_run` without executing it. + + This gives test functions an easy way to generate the inputs required for + many of the `run_using` subsystems. + """ + + def inner(task_input): + task = deepcopy(TASK_DEFAULTS) + task.update(task_input) + frozen_args = [] + + def _configure_taskdesc_for_run(*args): + frozen_args.extend(args) + + monkeypatch.setattr( + job, "configure_taskdesc_for_run", _configure_taskdesc_for_run + ) + + for _ in job.transforms(config, [task]): + # This forces the generator to be evaluated + pass + + return frozen_args + + return inner + + +@pytest.mark.parametrize( + "task", + [ + {"worker-type": "b-linux"}, + {"worker-type": "t-win10-64-hw"}, + ], + ids=lambda t: t["worker-type"], +) +def test_worker_caches(task, transform): + config, job, taskdesc, impl = transform(task) + add_cache(job, taskdesc, "cache1", "/cache1") + add_cache(job, taskdesc, "cache2", "/cache2", skip_untrusted=True) + + if impl not in ("docker-worker", "generic-worker"): + pytest.xfail(f"caches not implemented for '{impl}'") + + key = "caches" if impl == "docker-worker" else "mounts" + assert key in taskdesc["worker"] + assert len(taskdesc["worker"][key]) == 2 + + # Create a new schema object with just the part relevant to caches. + partial_schema = Schema(payload_builders[impl].schema.schema[key]) + validate_schema(partial_schema, taskdesc["worker"][key], "validation error") + + +@pytest.mark.parametrize( + "workerfn", [fn for fn, *_ in job.registry["run-task"].values()] +) +@pytest.mark.parametrize( + "task", + ( + { + "worker-type": "b-linux", + "run": { + "checkout": True, + "comm-checkout": False, + "command": "echo '{output}'", + "command-context": {"output": "hello", "extra": None}, + "run-as-root": False, + "sparse-profile": False, + "tooltool-downloads": False, + }, + }, + ), +) +def test_run_task_command_context(task, transform, workerfn): + config, job_, taskdesc, _ = transform(task) + job_ = deepcopy(job_) + + def assert_cmd(expected): + cmd = taskdesc["worker"]["command"] + while isinstance(cmd, list): + cmd = cmd[-1] + assert cmd == expected + + workerfn(config, job_, taskdesc) + assert_cmd("echo 'hello'") + + job_copy = job_.copy() + del job_copy["run"]["command-context"] + workerfn(config, job_copy, taskdesc) + assert_cmd("echo '{output}'") + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_transforms_test.py b/taskcluster/gecko_taskgraph/test/test_transforms_test.py new file mode 100644 index 0000000000..2b90fed3e7 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_transforms_test.py @@ -0,0 +1,328 @@ +# Any copyright is dedicated to the Public Domain. +# https://creativecommons.org/publicdomain/zero/1.0/ +""" +Tests for the 'tests.py' transforms +""" + +import hashlib +import json +from functools import partial +from pprint import pprint + +import mozunit +import pytest + +from gecko_taskgraph.transforms import test as test_transforms + + +@pytest.fixture +def make_test_task(): + """Create a test task definition with required default values.""" + + def inner(**extra): + task = { + "attributes": {}, + "build-platform": "linux64", + "mozharness": {"extra-options": []}, + "test-platform": "linux64", + "treeherder-symbol": "g(t)", + "try-name": "task", + } + task.update(extra) + return task + + return inner + + +def test_split_variants(monkeypatch, run_full_config_transform, make_test_task): + # mock out variant definitions + monkeypatch.setattr( + test_transforms.variant, + "TEST_VARIANTS", + { + "foo": { + "description": "foo variant", + "suffix": "foo", + "component": "foo bar", + "expiration": "never", + "merge": { + "mozharness": { + "extra-options": [ + "--setpref=foo=1", + ], + }, + }, + }, + "bar": { + "description": "bar variant", + "suffix": "bar", + "component": "foo bar", + "expiration": "never", + "when": { + "$eval": "task['test-platform'][:5] == 'linux'", + }, + "merge": { + "mozharness": { + "extra-options": [ + "--setpref=bar=1", + ], + }, + }, + "replace": {"tier": 2}, + }, + }, + ) + + def make_expected(variant): + """Helper to generate expected tasks.""" + return make_test_task( + **{ + "attributes": {"unittest_variant": variant}, + "description": f"{variant} variant", + "mozharness": { + "extra-options": [f"--setpref={variant}=1"], + }, + "treeherder-symbol": f"g-{variant}(t)", + "variant-suffix": f"-{variant}", + } + ) + + run_split_variants = partial( + run_full_config_transform, test_transforms.variant.split_variants + ) + + # test no variants + input_task = make_test_task( + **{ + "run-without-variant": True, + } + ) + tasks = list(run_split_variants(input_task)) + assert len(tasks) == 1 + assert tasks[0] == input_task + + # test variants are split into expected tasks + input_task = make_test_task( + **{ + "run-without-variant": True, + "variants": ["foo", "bar"], + } + ) + tasks = list(run_split_variants(input_task)) + assert len(tasks) == 3 + assert tasks[0] == make_test_task() + assert tasks[1] == make_expected("foo") + + expected = make_expected("bar") + expected["tier"] = 2 + assert tasks[2] == expected + + # test composite variants + input_task = make_test_task( + **{ + "run-without-variant": True, + "variants": ["foo+bar"], + } + ) + tasks = list(run_split_variants(input_task)) + assert len(tasks) == 2 + assert tasks[1]["attributes"]["unittest_variant"] == "foo+bar" + assert tasks[1]["mozharness"]["extra-options"] == [ + "--setpref=foo=1", + "--setpref=bar=1", + ] + assert tasks[1]["treeherder-symbol"] == "g-foo-bar(t)" + + # test 'when' filter + input_task = make_test_task( + **{ + "run-without-variant": True, + # this should cause task to be filtered out of 'bar' and 'foo+bar' variants + "test-platform": "windows", + "variants": ["foo", "bar", "foo+bar"], + } + ) + tasks = list(run_split_variants(input_task)) + assert len(tasks) == 2 + assert "unittest_variant" not in tasks[0]["attributes"] + assert tasks[1]["attributes"]["unittest_variant"] == "foo" + + # test 'run-without-variants=False' + input_task = make_test_task( + **{ + "run-without-variant": False, + "variants": ["foo"], + } + ) + tasks = list(run_split_variants(input_task)) + assert len(tasks) == 1 + assert tasks[0]["attributes"]["unittest_variant"] == "foo" + + +@pytest.mark.parametrize( + "task,expected", + ( + pytest.param( + { + "attributes": {"unittest_variant": "webrender-sw+1proc"}, + "test-platform": "linux1804-64-clang-trunk-qr/opt", + }, + { + "platform": { + "arch": "64", + "os": { + "name": "linux", + "version": "1804", + }, + }, + "build": { + "type": "opt", + "clang-trunk": True, + }, + "runtime": { + "1proc": True, + "webrender-sw": True, + }, + }, + id="linux", + ), + pytest.param( + { + "attributes": {}, + "test-platform": "linux2204-64-wayland-shippable/opt", + }, + { + "platform": { + "arch": "64", + "display": "wayland", + "os": { + "name": "linux", + "version": "2204", + }, + }, + "build": { + "type": "opt", + "shippable": True, + }, + "runtime": {}, + }, + id="linux wayland shippable", + ), + pytest.param( + { + "attributes": {}, + "test-platform": "android-hw-a51-11-0-arm7-shippable-qr/opt", + }, + { + "platform": { + "arch": "arm7", + "device": "a51", + "os": { + "name": "android", + "version": "11.0", + }, + }, + "build": { + "type": "opt", + "shippable": True, + }, + "runtime": {}, + }, + id="android", + ), + pytest.param( + { + "attributes": {}, + "test-platform": "windows10-64-2004-ref-hw-2017-ccov/debug", + }, + { + "platform": { + "arch": "64", + "machine": "ref-hw-2017", + "os": { + "build": "2004", + "name": "windows", + "version": "10", + }, + }, + "build": { + "type": "debug", + "ccov": True, + }, + "runtime": {}, + }, + id="windows", + ), + ), +) +def test_set_test_setting(run_transform, task, expected): + # add hash to 'expected' + expected["_hash"] = hashlib.sha256( + json.dumps(expected, sort_keys=True).encode("utf-8") + ).hexdigest()[:12] + + task = list(run_transform(test_transforms.other.set_test_setting, task))[0] + assert "test-setting" in task + assert task["test-setting"] == expected + + +def assert_spi_not_disabled(task): + extra_options = task["mozharness"]["extra-options"] + # The pref to enable this gets set outside of this transform, so only + # bother asserting that the pref to disable does not exist. + assert ( + "--setpref=media.peerconnection.mtransport_process=false" not in extra_options + ) + assert "--setpref=network.process.enabled=false" not in extra_options + + +def assert_spi_disabled(task): + extra_options = task["mozharness"]["extra-options"] + assert "--setpref=media.peerconnection.mtransport_process=false" in extra_options + assert "--setpref=media.peerconnection.mtransport_process=true" not in extra_options + assert "--setpref=network.process.enabled=false" in extra_options + assert "--setpref=network.process.enabled=true" not in extra_options + + +@pytest.mark.parametrize( + "task,callback", + ( + pytest.param( + {"attributes": {"unittest_variant": "socketprocess"}}, + assert_spi_not_disabled, + id="socketprocess", + ), + pytest.param( + { + "attributes": {"unittest_variant": "socketprocess_networking"}, + }, + assert_spi_not_disabled, + id="socketprocess_networking", + ), + pytest.param({}, assert_spi_disabled, id="no variant"), + pytest.param( + {"suite": "cppunit", "attributes": {"unittest_variant": "socketprocess"}}, + assert_spi_not_disabled, + id="excluded suite", + ), + pytest.param( + {"attributes": {"unittest_variant": "no-fission+socketprocess"}}, + assert_spi_not_disabled, + id="composite variant", + ), + ), +) +def test_ensure_spi_disabled_on_all_but_spi( + make_test_task, run_transform, task, callback +): + task.setdefault("suite", "mochitest-plain") + task = make_test_task(**task) + task = list( + run_transform(test_transforms.other.ensure_spi_disabled_on_all_but_spi, task) + )[0] + pprint(task) + callback(task) + + +if __name__ == "__main__": + mozunit.main() diff --git a/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py b/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py new file mode 100644 index 0000000000..a37de53378 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py @@ -0,0 +1,430 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import unittest + +from mozunit import main +from taskgraph.graph import Graph +from taskgraph.task import Task +from taskgraph.taskgraph import TaskGraph + +from gecko_taskgraph.try_option_syntax import TryOptionSyntax, parse_message + + +def unittest_task(n, tp, bt="opt"): + return ( + n, + Task( + "test", + n, + { + "unittest_try_name": n, + "test_platform": tp.split("/")[0], + "build_type": bt, + }, + {}, + ), + ) + + +def talos_task(n, tp, bt="opt"): + return ( + n, + Task( + "test", + n, + { + "talos_try_name": n, + "test_platform": tp.split("/")[0], + "build_type": bt, + }, + {}, + ), + ) + + +tasks = { + k: v + for k, v in [ + unittest_task("mochitest-browser-chrome", "linux/opt"), + unittest_task("mochitest-browser-chrome-e10s", "linux64/opt"), + unittest_task("mochitest-chrome", "linux/debug", "debug"), + unittest_task("mochitest-webgl1-core", "linux/debug", "debug"), + unittest_task("mochitest-webgl1-ext", "linux/debug", "debug"), + unittest_task("mochitest-webgl2-core", "linux/debug", "debug"), + unittest_task("mochitest-webgl2-ext", "linux/debug", "debug"), + unittest_task("mochitest-webgl2-deqp", "linux/debug", "debug"), + unittest_task("extra1", "linux", "debug/opt"), + unittest_task("extra2", "win32/opt"), + unittest_task("crashtest-e10s", "linux/other"), + unittest_task("gtest", "linux64/asan"), + talos_task("dromaeojs", "linux64/psan"), + unittest_task("extra3", "linux/opt"), + unittest_task("extra4", "linux64/debug", "debug"), + unittest_task("extra5", "linux/this"), + unittest_task("extra6", "linux/that"), + unittest_task("extra7", "linux/other"), + unittest_task("extra8", "linux64/asan"), + talos_task("extra9", "linux64/psan"), + ] +} + +RIDEALONG_BUILDS = { + "linux": ["linux-ridealong"], + "linux64": ["linux64-ridealong"], +} + +GRAPH_CONFIG = { + "try": {"ridealong-builds": RIDEALONG_BUILDS}, +} + +for r in RIDEALONG_BUILDS.values(): + tasks.update({k: v for k, v in [unittest_task(n + "-test", n) for n in r]}) + +unittest_tasks = {k: v for k, v in tasks.items() if "unittest_try_name" in v.attributes} +talos_tasks = {k: v for k, v in tasks.items() if "talos_try_name" in v.attributes} +graph_with_jobs = TaskGraph(tasks, Graph(set(tasks), set())) + + +class TestTryOptionSyntax(unittest.TestCase): + def test_unknown_args(self): + "unknown arguments are ignored" + parameters = parse_message("try: --doubledash -z extra") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + # equilvant to "try:".. + self.assertEqual(tos.build_types, []) + self.assertEqual(tos.jobs, []) + + def test_apostrophe_in_message(self): + "apostrophe does not break parsing" + parameters = parse_message("Increase spammy log's log level. try: -b do") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["debug", "opt"]) + + def test_b_do(self): + "-b do should produce both build_types" + parameters = parse_message("try: -b do") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["debug", "opt"]) + + def test_b_d(self): + "-b d should produce build_types=['debug']" + parameters = parse_message("try: -b d") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["debug"]) + + def test_b_o(self): + "-b o should produce build_types=['opt']" + parameters = parse_message("try: -b o") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["opt"]) + + def test_build_o(self): + "--build o should produce build_types=['opt']" + parameters = parse_message("try: --build o") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["opt"]) + + def test_b_dx(self): + "-b dx should produce build_types=['debug'], silently ignoring the x" + parameters = parse_message("try: -b dx") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.build_types), ["debug"]) + + def test_j_job(self): + "-j somejob sets jobs=['somejob']" + parameters = parse_message("try: -j somejob") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.jobs), ["somejob"]) + + def test_j_jobs(self): + "-j job1,job2 sets jobs=['job1', 'job2']" + parameters = parse_message("try: -j job1,job2") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.jobs), ["job1", "job2"]) + + def test_j_all(self): + "-j all sets jobs=None" + parameters = parse_message("try: -j all") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.jobs, None) + + def test_j_twice(self): + "-j job1 -j job2 sets jobs=job1, job2" + parameters = parse_message("try: -j job1 -j job2") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.jobs), sorted(["job1", "job2"])) + + def test_p_all(self): + "-p all sets platforms=None" + parameters = parse_message("try: -p all") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.platforms, None) + + def test_p_linux(self): + "-p linux sets platforms=['linux', 'linux-ridealong']" + parameters = parse_message("try: -p linux") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.platforms, ["linux", "linux-ridealong"]) + + def test_p_linux_win32(self): + "-p linux,win32 sets platforms=['linux', 'linux-ridealong', 'win32']" + parameters = parse_message("try: -p linux,win32") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(sorted(tos.platforms), ["linux", "linux-ridealong", "win32"]) + + def test_p_expands_ridealongs(self): + "-p linux,linux64 includes the RIDEALONG_BUILDS" + parameters = parse_message("try: -p linux,linux64") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + platforms = set(["linux"] + RIDEALONG_BUILDS["linux"]) + platforms |= set(["linux64"] + RIDEALONG_BUILDS["linux64"]) + self.assertEqual(sorted(tos.platforms), sorted(platforms)) + + def test_u_none(self): + "-u none sets unittests=[]" + parameters = parse_message("try: -u none") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.unittests, []) + + def test_u_all(self): + "-u all sets unittests=[..whole list..]" + parameters = parse_message("try: -u all") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.unittests, [{"test": t} for t in sorted(unittest_tasks)]) + + def test_u_single(self): + "-u mochitest-webgl1-core sets unittests=[mochitest-webgl1-core]" + parameters = parse_message("try: -u mochitest-webgl1-core") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.unittests, [{"test": "mochitest-webgl1-core"}]) + + def test_u_alias(self): + "-u mochitest-gl sets unittests=[mochitest-webgl*]" + parameters = parse_message("try: -u mochitest-gl") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + tos.unittests, + [ + {"test": t} + for t in [ + "mochitest-webgl1-core", + "mochitest-webgl1-ext", + "mochitest-webgl2-core", + "mochitest-webgl2-deqp", + "mochitest-webgl2-ext", + ] + ], + ) + + def test_u_multi_alias(self): + "-u e10s sets unittests=[all e10s unittests]" + parameters = parse_message("try: -u e10s") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + tos.unittests, [{"test": t} for t in sorted(unittest_tasks) if "e10s" in t] + ) + + def test_u_commas(self): + "-u mochitest-webgl1-core,gtest sets unittests=both" + parameters = parse_message("try: -u mochitest-webgl1-core,gtest") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + tos.unittests, + [ + {"test": "gtest"}, + {"test": "mochitest-webgl1-core"}, + ], + ) + + def test_u_chunks(self): + "-u gtest-3,gtest-4 selects the third and fourth chunk of gtest" + parameters = parse_message("try: -u gtest-3,gtest-4") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + sorted(tos.unittests), + sorted( + [ + {"test": "gtest", "only_chunks": set("34")}, + ] + ), + ) + + def test_u_platform(self): + "-u gtest[linux] selects the linux platform for gtest" + parameters = parse_message("try: -u gtest[linux]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + sorted(tos.unittests), + sorted( + [ + {"test": "gtest", "platforms": ["linux"]}, + ] + ), + ) + + def test_u_platforms(self): + "-u gtest[linux,win32] selects the linux and win32 platforms for gtest" + parameters = parse_message("try: -u gtest[linux,win32]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + sorted(tos.unittests), + sorted( + [ + {"test": "gtest", "platforms": ["linux", "win32"]}, + ] + ), + ) + + def test_u_platforms_pretty(self): + """-u gtest[Ubuntu] selects the linux, linux64 and linux64-asan + platforms for gtest""" + parameters = parse_message("try: -u gtest[Ubuntu]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + sorted(tos.unittests), + sorted( + [ + { + "test": "gtest", + "platforms": [ + "linux32", + "linux64", + "linux64-asan", + "linux1804-64", + "linux1804-64-asan", + ], + }, + ] + ), + ) + + def test_u_platforms_negated(self): + "-u gtest[-linux] selects all platforms but linux for gtest" + parameters = parse_message("try: -u gtest[-linux]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + all_platforms = {x.attributes["test_platform"] for x in unittest_tasks.values()} + self.assertEqual( + sorted(tos.unittests[0]["platforms"]), + sorted(x for x in all_platforms if x != "linux"), + ) + + def test_u_platforms_negated_pretty(self): + "-u gtest[Ubuntu,-x64] selects just linux for gtest" + parameters = parse_message("try: -u gtest[Ubuntu,-x64]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + sorted(tos.unittests), + sorted( + [ + {"test": "gtest", "platforms": ["linux32"]}, + ] + ), + ) + + def test_u_chunks_platforms(self): + "-u gtest-1[linux,win32] selects the linux and win32 platforms for chunk 1 of gtest" + parameters = parse_message("try: -u gtest-1[linux,win32]") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual( + tos.unittests, + [ + { + "test": "gtest", + "platforms": ["linux", "win32"], + "only_chunks": set("1"), + }, + ], + ) + + def test_t_none(self): + "-t none sets talos=[]" + parameters = parse_message("try: -t none") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.talos, []) + + def test_t_all(self): + "-t all sets talos=[..whole list..]" + parameters = parse_message("try: -t all") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.talos, [{"test": t} for t in sorted(talos_tasks)]) + + def test_t_single(self): + "-t mochitest-webgl sets talos=[mochitest-webgl]" + parameters = parse_message("try: -t mochitest-webgl") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.talos, [{"test": "mochitest-webgl"}]) + + # -t shares an implementation with -u, so it's not tested heavily + + def test_trigger_tests(self): + "--rebuild 10 sets trigger_tests" + parameters = parse_message("try: --rebuild 10") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.trigger_tests, 10) + + def test_talos_trigger_tests(self): + "--rebuild-talos 10 sets talos_trigger_tests" + parameters = parse_message("try: --rebuild-talos 10") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.talos_trigger_tests, 10) + + def test_interactive(self): + "--interactive sets interactive" + parameters = parse_message("try: --interactive") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.interactive, True) + + def test_all_email(self): + "--all-emails sets notifications" + parameters = parse_message("try: --all-emails") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.notifications, "all") + + def test_fail_email(self): + "--failure-emails sets notifications" + parameters = parse_message("try: --failure-emails") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.notifications, "failure") + + def test_no_email(self): + "no email settings don't set notifications" + parameters = parse_message("try:") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.notifications, None) + + def test_setenv(self): + "--setenv VAR=value adds a environment variables setting to env" + parameters = parse_message("try: --setenv VAR1=value1 --setenv VAR2=value2") + assert parameters["try_task_config"]["env"] == { + "VAR1": "value1", + "VAR2": "value2", + } + + def test_profile(self): + "--gecko-profile sets profile to true" + parameters = parse_message("try: --gecko-profile") + assert parameters["try_task_config"]["gecko-profile"] is True + + def test_tag(self): + "--tag TAG sets tag to TAG value" + parameters = parse_message("try: --tag tagName") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertEqual(tos.tag, "tagName") + + def test_no_retry(self): + "--no-retry sets no_retry to true" + parameters = parse_message("try: --no-retry") + tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG) + self.assertTrue(tos.no_retry) + + def test_artifact(self): + "--artifact sets artifact to true" + parameters = parse_message("try: --artifact") + assert parameters["try_task_config"]["use-artifact-builds"] is True + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_attributes.py b/taskcluster/gecko_taskgraph/test/test_util_attributes.py new file mode 100644 index 0000000000..26181cb8bf --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_attributes.py @@ -0,0 +1,99 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import unittest + +from mozunit import main +from taskgraph.util.attributes import attrmatch + +from gecko_taskgraph.util.attributes import match_run_on_projects + + +class Attrmatch(unittest.TestCase): + def test_trivial_match(self): + """Given no conditions, anything matches""" + self.assertTrue(attrmatch({})) + + def test_missing_attribute(self): + """If a filtering attribute is not present, no match""" + self.assertFalse(attrmatch({}, someattr=10)) + + def test_literal_attribute(self): + """Literal attributes must match exactly""" + self.assertTrue(attrmatch({"att": 10}, att=10)) + self.assertFalse(attrmatch({"att": 10}, att=20)) + + def test_set_attribute(self): + """Set attributes require set membership""" + self.assertTrue(attrmatch({"att": 10}, att={9, 10})) + self.assertFalse(attrmatch({"att": 10}, att={19, 20})) + + def test_callable_attribute(self): + """Callable attributes are called and any False causes the match to fail""" + self.assertTrue(attrmatch({"att": 10}, att=lambda val: True)) + self.assertFalse(attrmatch({"att": 10}, att=lambda val: False)) + + def even(val): + return val % 2 == 0 + + self.assertTrue(attrmatch({"att": 10}, att=even)) + self.assertFalse(attrmatch({"att": 11}, att=even)) + + def test_all_matches_required(self): + """If only one attribute does not match, the result is False""" + self.assertFalse(attrmatch({"a": 1}, a=1, b=2, c=3)) + self.assertFalse(attrmatch({"a": 1, "b": 2}, a=1, b=2, c=3)) + self.assertTrue(attrmatch({"a": 1, "b": 2, "c": 3}, a=1, b=2, c=3)) + + +class MatchRunOnProjects(unittest.TestCase): + def test_empty(self): + self.assertFalse(match_run_on_projects("birch", [])) + + def test_all(self): + self.assertTrue(match_run_on_projects("birch", ["all"])) + self.assertTrue(match_run_on_projects("larch", ["all"])) + self.assertTrue(match_run_on_projects("autoland", ["all"])) + self.assertTrue(match_run_on_projects("mozilla-central", ["all"])) + self.assertTrue(match_run_on_projects("mozilla-beta", ["all"])) + self.assertTrue(match_run_on_projects("mozilla-release", ["all"])) + + def test_release(self): + self.assertFalse(match_run_on_projects("birch", ["release"])) + self.assertFalse(match_run_on_projects("larch", ["release"])) + self.assertFalse(match_run_on_projects("autoland", ["release"])) + self.assertTrue(match_run_on_projects("mozilla-central", ["release"])) + self.assertTrue(match_run_on_projects("mozilla-beta", ["release"])) + self.assertTrue(match_run_on_projects("mozilla-release", ["release"])) + + def test_integration(self): + self.assertFalse(match_run_on_projects("birch", ["integration"])) + self.assertFalse(match_run_on_projects("larch", ["integration"])) + self.assertTrue(match_run_on_projects("autoland", ["integration"])) + self.assertFalse(match_run_on_projects("mozilla-central", ["integration"])) + self.assertFalse(match_run_on_projects("mozilla-beta", ["integration"])) + self.assertFalse(match_run_on_projects("mozilla-integration", ["integration"])) + + def test_combo(self): + self.assertTrue(match_run_on_projects("birch", ["release", "birch", "maple"])) + self.assertFalse(match_run_on_projects("larch", ["release", "birch", "maple"])) + self.assertTrue(match_run_on_projects("maple", ["release", "birch", "maple"])) + self.assertFalse( + match_run_on_projects("autoland", ["release", "birch", "maple"]) + ) + self.assertTrue( + match_run_on_projects("mozilla-central", ["release", "birch", "maple"]) + ) + self.assertTrue( + match_run_on_projects("mozilla-beta", ["release", "birch", "maple"]) + ) + self.assertTrue( + match_run_on_projects("mozilla-release", ["release", "birch", "maple"]) + ) + self.assertTrue(match_run_on_projects("birch", ["birch", "trunk"])) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_backstop.py b/taskcluster/gecko_taskgraph/test/test_util_backstop.py new file mode 100644 index 0000000000..af9aabd5af --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_backstop.py @@ -0,0 +1,155 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from datetime import datetime +from textwrap import dedent +from time import mktime + +import pytest +from mozunit import main +from taskgraph.util.taskcluster import get_artifact_url, get_index_url, get_task_url + +from gecko_taskgraph.util.backstop import ( + BACKSTOP_INDEX, + BACKSTOP_PUSH_INTERVAL, + BACKSTOP_TIME_INTERVAL, + is_backstop, +) + +LAST_BACKSTOP_ID = 0 +LAST_BACKSTOP_PUSHDATE = mktime(datetime.now().timetuple()) +DEFAULT_RESPONSES = { + "index": { + "status": 200, + "json": {"taskId": LAST_BACKSTOP_ID}, + }, + "artifact": { + "status": 200, + "body": dedent( + """ + pushdate: {} + """.format( + LAST_BACKSTOP_PUSHDATE + ) + ), + }, + "status": { + "status": 200, + "json": {"status": {"state": "complete"}}, + }, +} + + +@pytest.fixture +def params(): + return { + "branch": "integration/autoland", + "head_repository": "https://hg.mozilla.org/integration/autoland", + "head_rev": "abcdef", + "project": "autoland", + "pushdate": LAST_BACKSTOP_PUSHDATE + 1, + "pushlog_id": LAST_BACKSTOP_ID + 1, + } + + +@pytest.mark.parametrize( + "response_args,extra_params,expected", + ( + pytest.param( + { + "index": {"status": 404}, + }, + {"pushlog_id": 1}, + True, + id="no previous backstop", + ), + pytest.param( + { + "index": DEFAULT_RESPONSES["index"], + "status": DEFAULT_RESPONSES["status"], + "artifact": {"status": 404}, + }, + {"pushlog_id": 1}, + False, + id="previous backstop not finished", + ), + pytest.param( + DEFAULT_RESPONSES, + { + "pushlog_id": LAST_BACKSTOP_ID + 1, + "pushdate": LAST_BACKSTOP_PUSHDATE + 1, + }, + False, + id="not a backstop", + ), + pytest.param( + {}, + { + "pushlog_id": BACKSTOP_PUSH_INTERVAL, + }, + True, + id="backstop interval", + ), + pytest.param( + DEFAULT_RESPONSES, + { + "pushdate": LAST_BACKSTOP_PUSHDATE + (BACKSTOP_TIME_INTERVAL * 60), + }, + True, + id="time elapsed", + ), + pytest.param( + {}, + { + "project": "try", + "pushlog_id": BACKSTOP_PUSH_INTERVAL, + }, + False, + id="try not a backstop", + ), + pytest.param( + {}, + { + "project": "mozilla-central", + }, + True, + id="release branches always a backstop", + ), + pytest.param( + { + "index": DEFAULT_RESPONSES["index"], + "status": { + "status": 200, + "json": {"status": {"state": "failed"}}, + }, + }, + {}, + True, + id="last backstop failed", + ), + ), +) +def test_is_backstop(responses, params, response_args, extra_params, expected): + urls = { + "index": get_index_url( + BACKSTOP_INDEX.format( + **{"trust-domain": "gecko", "project": params["project"]} + ) + ), + "artifact": get_artifact_url(LAST_BACKSTOP_ID, "public/parameters.yml"), + "status": get_task_url(LAST_BACKSTOP_ID) + "/status", + } + + for key in ("index", "status", "artifact"): + if key in response_args: + print(urls[key]) + responses.add(responses.GET, urls[key], **response_args[key]) + + params.update(extra_params) + assert is_backstop(params) is expected + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_bugbug.py b/taskcluster/gecko_taskgraph/test/test_util_bugbug.py new file mode 100644 index 0000000000..7e8865ddde --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_bugbug.py @@ -0,0 +1,57 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import mozunit + +from gecko_taskgraph.util.bugbug import BUGBUG_BASE_URL, push_schedules + + +def test_group_translation(responses): + branch = ("integration/autoland",) + rev = "abcdef" + query = f"/push/{branch}/{rev}/schedules" + url = BUGBUG_BASE_URL + query + + responses.add( + responses.GET, + url, + json={ + "groups": { + "dom/indexedDB": 1, + "testing/web-platform/tests/IndexedDB": 1, + "testing/web-platform/mozilla/tests/IndexedDB": 1, + }, + "config_groups": { + "dom/indexedDB": ["label1", "label2"], + "testing/web-platform/tests/IndexedDB": ["label3"], + "testing/web-platform/mozilla/tests/IndexedDB": ["label4"], + }, + }, + status=200, + ) + + assert len(push_schedules) == 0 + data = push_schedules(branch, rev) + print(data) + assert sorted(data["groups"]) == [ + "/IndexedDB", + "/_mozilla/IndexedDB", + "dom/indexedDB", + ] + assert data["config_groups"] == { + "dom/indexedDB": ["label1", "label2"], + "/IndexedDB": ["label3"], + "/_mozilla/IndexedDB": ["label4"], + } + assert len(push_schedules) == 1 + + # Value is memoized. + responses.reset() + push_schedules(branch, rev) + assert len(push_schedules) == 1 + + +if __name__ == "__main__": + mozunit.main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_chunking.py b/taskcluster/gecko_taskgraph/test/test_util_chunking.py new file mode 100644 index 0000000000..99434af042 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_chunking.py @@ -0,0 +1,403 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import re +from itertools import combinations + +import pytest +from mozunit import main + +from gecko_taskgraph.util import chunking + +pytestmark = pytest.mark.slow + + +@pytest.fixture(scope="module") +def mock_manifest_runtimes(): + """Deterministically produce a list of simulated manifest runtimes. + + Args: + manifests (list): list of manifests against which simulated manifest + runtimes would be paired up to. + + Returns: + dict of manifest data paired with a float value representing runtime. + """ + + def inner(manifests): + manifests = sorted(manifests) + # Generate deterministic runtime data. + runtimes = [(i / 10) ** (i / 10) for i in range(len(manifests))] + return dict(zip(manifests, runtimes)) + + return inner + + +@pytest.fixture(scope="module") +def unchunked_manifests(): + """Produce a list of unchunked manifests to be consumed by test method. + + Args: + length (int, optional): number of path elements to keep. + cutoff (int, optional): number of generated test paths to remove + from the test set if user wants to limit the number of paths. + + Returns: + list: list of test paths. + """ + data = ["blueberry", "nashi", "peach", "watermelon"] + + def inner(suite, length=2, cutoff=0): + if "web-platform" in suite: + suffix = "" + prefix = "/" + elif "reftest" in suite: + suffix = ".list" + prefix = "" + else: + suffix = ".ini" + prefix = "" + return [prefix + "/".join(p) + suffix for p in combinations(data, length)][ + cutoff: + ] + + return inner + + +@pytest.fixture(scope="module") +def mock_task_definition(): + """Builds a mock task definition for use in testing. + + Args: + os_name (str): represents the os. + os_version (str): represents the os version + bits (int): software bits. + build_type (str): opt or debug. + build_attrs (list, optional): specify build attribute(s) + variants (list, optional): specify runtime variant(s) + + Returns: + dict: mocked task definition. + """ + + def inner(os_name, os_version, bits, build_type, build_attrs=None, variants=None): + setting = { + "platform": { + "arch": str(bits), + "os": { + "name": os_name, + "version": os_version, + }, + }, + "build": { + "type": build_type, + }, + "runtime": {}, + } + + # Optionally set build attributes and runtime variants. + if build_attrs: + if isinstance(build_attrs, str): + build_attrs = [build_attrs] + for attr in build_attrs: + setting["build"][attr] = True + + if variants: + if isinstance(variants, str): + variants = [variants] + for variant in variants: + setting["runtime"][variant] = True + return {"test-name": "foo", "test-setting": setting} + + return inner + + +@pytest.fixture(scope="module") +def mock_mozinfo(): + """Returns a mocked mozinfo object, similar to guess_mozinfo_from_task(). + + Args: + os (str): typically one of 'win, linux, mac, android'. + processor (str): processor architecture. + asan (bool, optional): addressanitizer build. + bits (int, optional): defaults to 64. + ccov (bool, optional): code coverage build. + debug (bool, optional): debug type build. + fission (bool, optional): process fission. + headless (bool, optional): headless browser testing without displays. + tsan (bool, optional): threadsanitizer build. + + Returns: + dict: Dictionary mimickign the results from guess_mozinfo_from_task. + """ + + def inner( + os, + processor, + asan=False, + bits=64, + ccov=False, + debug=False, + fission=False, + headless=False, + tsan=False, + ): + return { + "os": os, + "processor": processor, + "toolkit": "", + "asan": asan, + "bits": bits, + "ccov": ccov, + "debug": debug, + "e10s": True, + "fission": fission, + "headless": headless, + "tsan": tsan, + "appname": "firefox", + "condprof": False, + } + + return inner + + +@pytest.mark.parametrize( + "params,exception", + [ + [("win", "7", 32, "opt"), None], + [("win", "10", 64, "opt"), None], + [("linux", "1804", 64, "debug"), None], + [("macosx", "1015", 64, "debug"), None], + [("macosx", "1100", 64, "opt"), None], + [("android", "", 64, "debug"), None], + [("and", "", 64, "debug"), ValueError], + [("", "", 64, "opt"), ValueError], + [("linux", "1804", 64, "opt", ["ccov"]), None], + [("linux", "1804", 64, "opt", ["asan"]), None], + [("win", "10", 64, "opt", ["tsan"]), None], + [("mac", "1100", 64, "opt", ["ccov"]), None], + [("android", "", 64, "opt", None, ["fission"]), None], + [("win", "10", "aarch64", "opt"), None], + ], +) +def test_guess_mozinfo_from_task(params, exception, mock_task_definition): + """Tests the mozinfo guessing process.""" + # Set up a mocked task object. + task = mock_task_definition(*params) + + if exception: + with pytest.raises(exception): + result = chunking.guess_mozinfo_from_task(task) + else: + expected_toolkits = { + "android": "android", + "linux": "gtk", + "mac": "cocoa", + "win": "windows", + } + result = chunking.guess_mozinfo_from_task(task) + setting = task["test-setting"] + + assert str(result["bits"]) in setting["platform"]["arch"] + assert result["os"] in ("android", "linux", "mac", "win") + assert result["os"] in setting["platform"]["os"]["name"] + assert result["toolkit"] == expected_toolkits[result["os"]] + + # Ensure the outcome of special build variants being present match what + # guess_mozinfo_from_task method returns for these attributes. + assert ("asan" in setting["build"]) == result["asan"] + assert ("tsan" in setting["build"]) == result["tsan"] + assert ("ccov" in setting["build"]) == result["ccov"] + + # Ensure runtime variants match + assert ("fission" in setting["runtime"]) == result["fission"] + assert ("1proc" in setting["runtime"]) != result["e10s"] + + +@pytest.mark.parametrize("platform", ["unix", "windows", "android"]) +@pytest.mark.parametrize( + "suite", ["crashtest", "reftest", "web-platform-tests", "xpcshell"] +) +def test_get_runtimes(platform, suite): + """Tests that runtime information is returned for known good configurations.""" + assert chunking.get_runtimes(platform, suite) + + +@pytest.mark.parametrize( + "platform,suite,exception", + [ + ("nonexistent_platform", "nonexistent_suite", KeyError), + ("unix", "nonexistent_suite", KeyError), + ("unix", "", TypeError), + ("", "", TypeError), + ("", "nonexistent_suite", TypeError), + ], +) +def test_get_runtimes_invalid(platform, suite, exception): + """Ensure get_runtimes() method raises an exception if improper request is made.""" + with pytest.raises(exception): + chunking.get_runtimes(platform, suite) + + +@pytest.mark.parametrize( + "suite", + [ + "web-platform-tests", + "web-platform-tests-reftest", + "web-platform-tests-wdspec", + "web-platform-tests-crashtest", + ], +) +@pytest.mark.parametrize("chunks", [1, 3, 6, 20]) +def test_mock_chunk_manifests_wpt(unchunked_manifests, suite, chunks): + """Tests web-platform-tests and its subsuites chunking process.""" + # Setup. + manifests = unchunked_manifests(suite) + + # Generate the expected results, by generating list of indices that each + # manifest should go into and then appending each item to that index. + # This method is intentionally different from the way chunking.py performs + # chunking for cross-checking. + expected = [[] for _ in range(chunks)] + indexed = zip(manifests, list(range(0, chunks)) * len(manifests)) + for i in indexed: + expected[i[1]].append(i[0]) + + # Call the method under test on unchunked manifests. + chunked_manifests = chunking.chunk_manifests(suite, "unix", chunks, manifests) + + # Assertions and end test. + assert chunked_manifests + if chunks > len(manifests): + # If chunk count exceeds number of manifests, not all chunks will have + # manifests. + with pytest.raises(AssertionError): + assert all(chunked_manifests) + else: + assert all(chunked_manifests) + minimum = min(len(c) for c in chunked_manifests) + maximum = max(len(c) for c in chunked_manifests) + assert maximum - minimum <= 1 + assert expected == chunked_manifests + + +@pytest.mark.parametrize( + "suite", + [ + "mochitest-devtools-chrome", + "mochitest-browser-chrome", + "mochitest-plain", + "mochitest-chrome", + "xpcshell", + ], +) +@pytest.mark.parametrize("chunks", [1, 3, 6, 20]) +def test_mock_chunk_manifests( + mock_manifest_runtimes, unchunked_manifests, suite, chunks +): + """Tests non-WPT tests and its subsuites chunking process.""" + # Setup. + manifests = unchunked_manifests(suite) + + # Call the method under test on unchunked manifests. + chunked_manifests = chunking.chunk_manifests(suite, "unix", chunks, manifests) + + # Assertions and end test. + assert chunked_manifests + if chunks > len(manifests): + # If chunk count exceeds number of manifests, not all chunks will have + # manifests. + with pytest.raises(AssertionError): + assert all(chunked_manifests) + else: + assert all(chunked_manifests) + + +@pytest.mark.parametrize( + "suite", + [ + "web-platform-tests", + "web-platform-tests-reftest", + "xpcshell", + "mochitest-plain", + "mochitest-devtools-chrome", + "mochitest-browser-chrome", + "mochitest-chrome", + ], +) +@pytest.mark.parametrize( + "platform", + [ + ("mac", "x86_64"), + ("win", "x86_64"), + ("win", "x86"), + ("win", "aarch64"), + ("linux", "x86_64"), + ("linux", "x86"), + ], +) +def test_get_manifests(suite, platform, mock_mozinfo): + """Tests the DefaultLoader class' ability to load manifests.""" + mozinfo = mock_mozinfo(*platform) + + loader = chunking.DefaultLoader([]) + manifests = loader.get_manifests(suite, frozenset(mozinfo.items())) + + assert manifests + assert manifests["active"] + if "web-platform" in suite: + assert manifests["skipped"] == [] + else: + assert manifests["skipped"] + + items = manifests["active"] + if suite == "xpcshell": + assert all([re.search(r"xpcshell(.*)?.ini", m) for m in items]) + if "mochitest" in suite: + assert all([re.search(r"(mochitest|chrome|browser).*.ini", m) for m in items]) + if "web-platform" in suite: + assert all([m.startswith("/") and m.count("/") <= 4 for m in items]) + + +@pytest.mark.parametrize( + "suite", + [ + "mochitest-devtools-chrome", + "mochitest-browser-chrome", + "mochitest-plain", + "mochitest-chrome", + "web-platform-tests", + "web-platform-tests-reftest", + "xpcshell", + ], +) +@pytest.mark.parametrize( + "platform", + [ + ("mac", "x86_64"), + ("win", "x86_64"), + ("linux", "x86_64"), + ], +) +@pytest.mark.parametrize("chunks", [1, 3, 6, 20]) +def test_chunk_manifests(suite, platform, chunks, mock_mozinfo): + """Tests chunking with real manifests.""" + mozinfo = mock_mozinfo(*platform) + + loader = chunking.DefaultLoader([]) + manifests = loader.get_manifests(suite, frozenset(mozinfo.items())) + + chunked_manifests = chunking.chunk_manifests( + suite, platform, chunks, manifests["active"] + ) + + # Assertions and end test. + assert chunked_manifests + assert len(chunked_manifests) == chunks + assert all(chunked_manifests) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_docker.py b/taskcluster/gecko_taskgraph/test/test_util_docker.py new file mode 100644 index 0000000000..49c01738fe --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_docker.py @@ -0,0 +1,255 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import os +import shutil +import stat +import tarfile +import tempfile +import unittest +from unittest import mock + +import taskcluster_urls as liburls +from mozunit import MockedOpen, main + +from gecko_taskgraph.util import docker + +MODE_STANDARD = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH + + +@mock.patch.dict("os.environ", {"TASKCLUSTER_ROOT_URL": liburls.test_root_url()}) +class TestDocker(unittest.TestCase): + def test_generate_context_hash(self): + tmpdir = tempfile.mkdtemp() + try: + os.makedirs(os.path.join(tmpdir, "docker", "my-image")) + p = os.path.join(tmpdir, "docker", "my-image", "Dockerfile") + with open(p, "w") as f: + f.write("FROM node\nADD a-file\n") + os.chmod(p, MODE_STANDARD) + p = os.path.join(tmpdir, "docker", "my-image", "a-file") + with open(p, "w") as f: + f.write("data\n") + os.chmod(p, MODE_STANDARD) + self.assertIn( + docker.generate_context_hash( + tmpdir, + os.path.join(tmpdir, "docker/my-image"), + "my-image", + {}, + ), + ( + "680532a33c845e3b4f8ea8a7bd697da579b647f28c29f7a0a71e51e6cca33983", + "cc02f943ae87b283749369fa9c4f6a74639c27a7b9972c99de58e5d9fb3a98ae", + ), + ) + finally: + shutil.rmtree(tmpdir) + + def test_docker_image_explicit_registry(self): + files = {} + files[f"{docker.IMAGE_DIR}/myimage/REGISTRY"] = "cool-images" + files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3" + files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..." + with MockedOpen(files): + self.assertEqual( + docker.docker_image("myimage"), "cool-images/myimage@sha256:434..." + ) + + def test_docker_image_explicit_registry_by_tag(self): + files = {} + files[f"{docker.IMAGE_DIR}/myimage/REGISTRY"] = "myreg" + files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3" + files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..." + with MockedOpen(files): + self.assertEqual( + docker.docker_image("myimage", by_tag=True), "myreg/myimage:1.2.3" + ) + + def test_docker_image_default_registry(self): + files = {} + files[f"{docker.IMAGE_DIR}/REGISTRY"] = "mozilla" + files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3" + files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..." + with MockedOpen(files): + self.assertEqual( + docker.docker_image("myimage"), "mozilla/myimage@sha256:434..." + ) + + def test_docker_image_default_registry_by_tag(self): + files = {} + files[f"{docker.IMAGE_DIR}/REGISTRY"] = "mozilla" + files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3" + files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..." + with MockedOpen(files): + self.assertEqual( + docker.docker_image("myimage", by_tag=True), "mozilla/myimage:1.2.3" + ) + + def test_create_context_tar_basic(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test_image") + os.mkdir(d) + with open(os.path.join(d, "Dockerfile"), "a"): + pass + os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD) + + with open(os.path.join(d, "extra"), "a"): + pass + os.chmod(os.path.join(d, "extra"), MODE_STANDARD) + + tp = os.path.join(tmp, "tar") + h = docker.create_context_tar(tmp, d, tp, "my_image", {}) + self.assertIn( + h, + ( + "eae3ad00936085eb3e5958912f79fb06ee8e14a91f7157c5f38625f7ddacb9c7", + "9ff54ee091c4f346e94e809b03efae5aa49a5c1db152f9f633682cfa005f7422", + ), + ) + + # File prefix should be "my_image" + with tarfile.open(tp, "r:gz") as tf: + self.assertEqual( + tf.getnames(), + [ + "Dockerfile", + "extra", + ], + ) + finally: + shutil.rmtree(tmp) + + def test_create_context_topsrcdir_files(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test-image") + os.mkdir(d) + with open(os.path.join(d, "Dockerfile"), "wb") as fh: + fh.write(b"# %include extra/file0\n") + os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD) + + extra = os.path.join(tmp, "extra") + os.mkdir(extra) + with open(os.path.join(extra, "file0"), "a"): + pass + os.chmod(os.path.join(extra, "file0"), MODE_STANDARD) + + tp = os.path.join(tmp, "tar") + h = docker.create_context_tar(tmp, d, tp, "test_image", {}) + self.assertIn( + h, + ( + "49dc3827530cd344d7bcc52e1fdd4aefc632568cf442cffd3dd9633a58f271bf", + "8f8e3dd2b712003cd12bb39e5a84fc2a7c06e891cf481613a52bf3db472c4ca9", + ), + ) + + with tarfile.open(tp, "r:gz") as tf: + self.assertEqual( + tf.getnames(), + [ + "Dockerfile", + "topsrcdir/extra/file0", + ], + ) + finally: + shutil.rmtree(tmp) + + def test_create_context_absolute_path(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test-image") + os.mkdir(d) + + # Absolute paths in %include syntax are not allowed. + with open(os.path.join(d, "Dockerfile"), "wb") as fh: + fh.write(b"# %include /etc/shadow\n") + + with self.assertRaisesRegexp(Exception, "cannot be absolute"): + docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {}) + finally: + shutil.rmtree(tmp) + + def test_create_context_outside_topsrcdir(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test-image") + os.mkdir(d) + + with open(os.path.join(d, "Dockerfile"), "wb") as fh: + fh.write(b"# %include foo/../../../etc/shadow\n") + + with self.assertRaisesRegexp(Exception, "path outside topsrcdir"): + docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {}) + finally: + shutil.rmtree(tmp) + + def test_create_context_missing_extra(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test-image") + os.mkdir(d) + + with open(os.path.join(d, "Dockerfile"), "wb") as fh: + fh.write(b"# %include does/not/exist\n") + + with self.assertRaisesRegexp(Exception, "path does not exist"): + docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {}) + finally: + shutil.rmtree(tmp) + + def test_create_context_extra_directory(self): + tmp = tempfile.mkdtemp() + try: + d = os.path.join(tmp, "test-image") + os.mkdir(d) + + with open(os.path.join(d, "Dockerfile"), "wb") as fh: + fh.write(b"# %include extra\n") + fh.write(b"# %include file0\n") + os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD) + + extra = os.path.join(tmp, "extra") + os.mkdir(extra) + for i in range(3): + p = os.path.join(extra, "file%d" % i) + with open(p, "wb") as fh: + fh.write(b"file%d" % i) + os.chmod(p, MODE_STANDARD) + + with open(os.path.join(tmp, "file0"), "a"): + pass + os.chmod(os.path.join(tmp, "file0"), MODE_STANDARD) + + tp = os.path.join(tmp, "tar") + h = docker.create_context_tar(tmp, d, tp, "my_image", {}) + + self.assertIn( + h, + ( + "a392f23cd6606ae43116390a4d0113354cff1e688a41d46f48b0fb25e90baa13", + "02325bdc508c2e941959170beeb840f6bb91d0675cb8095783a7db7301d136b2", + ), + ) + + with tarfile.open(tp, "r:gz") as tf: + self.assertEqual( + tf.getnames(), + [ + "Dockerfile", + "topsrcdir/extra/file0", + "topsrcdir/extra/file1", + "topsrcdir/extra/file2", + "topsrcdir/file0", + ], + ) + finally: + shutil.rmtree(tmp) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_partials.py b/taskcluster/gecko_taskgraph/test/test_util_partials.py new file mode 100644 index 0000000000..3630d7b0ec --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_partials.py @@ -0,0 +1,128 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import unittest +from unittest import mock + +from mozunit import main + +from gecko_taskgraph.util import partials + +release_blob = { + "fileUrls": { + "release-localtest": { + "completes": { + "*": "%OS_FTP%/%LOCALE%/firefox-92.0.1.complete.mar", + } + } + }, + "platforms": { + "WINNT_x86_64-msvc": { + "locales": { + "en-US": { + "buildID": "20210922161155", + } + } + } + }, +} + + +def nightly_blob(release): + return { + "platforms": { + "WINNT_x86_64-msvc": { + "locales": { + "en-US": { + "buildID": release[-14:], + "completes": [{"fileUrl": release}], + } + } + } + } + } + + +class TestReleaseHistory(unittest.TestCase): + @mock.patch("gecko_taskgraph.util.partials.get_release_builds") + @mock.patch("gecko_taskgraph.util.partials.get_sorted_releases") + def test_populate_release_history(self, get_sorted_releases, get_release_builds): + self.assertEqual( + partials.populate_release_history( + "Firefox", "mozilla-release", partial_updates={} + ), + {}, + ) + get_sorted_releases.assert_not_called() + get_release_builds.assert_not_called() + + def patched_get_sorted_releases(product, branch): + assert branch == "mozilla-central" + return [ + "Firefox-mozilla-central-nightly-20211003201113", + "Firefox-mozilla-central-nightly-20211003100640", + "Firefox-mozilla-central-nightly-20211002213629", + "Firefox-mozilla-central-nightly-20211002095048", + "Firefox-mozilla-central-nightly-20211001214601", + "Firefox-mozilla-central-nightly-20211001093323", + ] + + def patched_get_release_builds(release, branch): + if branch == "mozilla-central": + return nightly_blob(release) + if branch == "mozilla-release": + return release_blob + + get_sorted_releases.side_effect = patched_get_sorted_releases + get_release_builds.side_effect = patched_get_release_builds + + self.assertEqual( + partials.populate_release_history( + "Firefox", + "mozilla-release", + partial_updates={"92.0.1": {"buildNumber": 1}}, + ), + { + "WINNT_x86_64-msvc": { + "en-US": { + "target-92.0.1.partial.mar": { + "buildid": "20210922161155", + "mar_url": "win64/en-US/firefox-92.0.1.complete.mar", + "previousVersion": "92.0.1", + "previousBuildNumber": 1, + "product": "Firefox", + } + } + } + }, + ) + self.assertEqual( + partials.populate_release_history("Firefox", "mozilla-central"), + { + "WINNT_x86_64-msvc": { + "en-US": { + "target.partial-1.mar": { + "buildid": "20211003201113", + "mar_url": "Firefox-mozilla-central-nightly-20211003201113", + }, + "target.partial-2.mar": { + "buildid": "20211003100640", + "mar_url": "Firefox-mozilla-central-nightly-20211003100640", + }, + "target.partial-3.mar": { + "buildid": "20211002213629", + "mar_url": "Firefox-mozilla-central-nightly-20211002213629", + }, + "target.partial-4.mar": { + "buildid": "20211002095048", + "mar_url": "Firefox-mozilla-central-nightly-20211002095048", + }, + } + } + }, + ) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py b/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py new file mode 100644 index 0000000000..993521b830 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py @@ -0,0 +1,76 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import unittest + +from mozunit import main +from taskgraph.graph import Graph +from taskgraph.task import Task +from taskgraph.taskgraph import TaskGraph + +from gecko_taskgraph.decision import full_task_graph_to_runnable_jobs + + +class TestRunnableJobs(unittest.TestCase): + + tasks = [ + { + "kind": "build", + "label": "a", + "attributes": {}, + "task": { + "extra": {"treeherder": {"symbol": "B"}}, + }, + }, + { + "kind": "test", + "label": "b", + "attributes": {}, + "task": { + "extra": { + "treeherder": { + "collection": {"opt": True}, + "groupName": "Some group", + "groupSymbol": "GS", + "machine": {"platform": "linux64"}, + "symbol": "t", + } + }, + }, + }, + ] + + def make_taskgraph(self, tasks): + label_to_taskid = {k: k + "-tid" for k in tasks} + for label, task_id in label_to_taskid.items(): + tasks[label].task_id = task_id + graph = Graph(nodes=set(tasks), edges=set()) + taskgraph = TaskGraph(tasks, graph) + return taskgraph, label_to_taskid + + def test_taskgraph_to_runnable_jobs(self): + tg, label_to_taskid = self.make_taskgraph( + {t["label"]: Task(**t) for t in self.tasks[:]} + ) + + res = full_task_graph_to_runnable_jobs(tg.to_json()) + + self.assertEqual( + res, + { + "a": {"symbol": "B"}, + "b": { + "collection": {"opt": True}, + "groupName": "Some group", + "groupSymbol": "GS", + "symbol": "t", + "platform": "linux64", + }, + }, + ) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_templates.py b/taskcluster/gecko_taskgraph/test/test_util_templates.py new file mode 100644 index 0000000000..edfb13a277 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_templates.py @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import unittest + +import mozunit + +from gecko_taskgraph.util.templates import merge, merge_to + + +class MergeTest(unittest.TestCase): + def test_merge_to_dicts(self): + source = {"a": 1, "b": 2} + dest = {"b": "20", "c": 30} + expected = { + "a": 1, # source only + "b": 2, # source overrides dest + "c": 30, # dest only + } + self.assertEqual(merge_to(source, dest), expected) + self.assertEqual(dest, expected) + + def test_merge_to_lists(self): + source = {"x": [3, 4]} + dest = {"x": [1, 2]} + expected = {"x": [1, 2, 3, 4]} # dest first + self.assertEqual(merge_to(source, dest), expected) + self.assertEqual(dest, expected) + + def test_merge_diff_types(self): + source = {"x": [1, 2]} + dest = {"x": "abc"} + expected = {"x": [1, 2]} # source wins + self.assertEqual(merge_to(source, dest), expected) + self.assertEqual(dest, expected) + + def test_merge(self): + first = {"a": 1, "b": 2, "d": 11} + second = {"b": 20, "c": 30} + third = {"c": 300, "d": 400} + expected = { + "a": 1, + "b": 20, + "c": 300, + "d": 400, + } + self.assertEqual(merge(first, second, third), expected) + + # inputs haven't changed.. + self.assertEqual(first, {"a": 1, "b": 2, "d": 11}) + self.assertEqual(second, {"b": 20, "c": 30}) + self.assertEqual(third, {"c": 300, "d": 400}) + + def test_merge_by(self): + source = { + "x": "abc", + "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}, + } + dest = {"y": {"by-foo": {"purple": "rain", "default": ["x", "y", "z"]}}} + expected = { + "x": "abc", + "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}, + } # source wins + self.assertEqual(merge_to(source, dest), expected) + self.assertEqual(dest, expected) + + def test_merge_multiple_by(self): + source = {"x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}} + dest = {"x": {"by-bar": {"purple": "rain", "default": ["x", "y", "z"]}}} + expected = { + "x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}} + } # source wins + self.assertEqual(merge_to(source, dest), expected) + + +if __name__ == "__main__": + mozunit.main() diff --git a/taskcluster/gecko_taskgraph/test/test_util_verify.py b/taskcluster/gecko_taskgraph/test/test_util_verify.py new file mode 100644 index 0000000000..e2f774a315 --- /dev/null +++ b/taskcluster/gecko_taskgraph/test/test_util_verify.py @@ -0,0 +1,149 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +There are some basic tests run as part of the Decision task to make sure +documentation exists for taskgraph functionality. +These functions are defined in gecko_taskgraph.generator and call +gecko_taskgraph.util.verify.verify_docs with different parameters to do the +actual checking. +""" + + +import os.path + +import pytest +from mozunit import main + +import gecko_taskgraph.util.verify +from gecko_taskgraph import GECKO +from gecko_taskgraph.util.verify import DocPaths, verify_docs + +FF_DOCS_BASE = os.path.join(GECKO, "taskcluster", "docs") +EXTRA_DOCS_BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), "docs")) + + +@pytest.fixture +def mock_single_doc_path(monkeypatch): + """Set a single path containing documentation""" + mocked_documentation_paths = DocPaths() + mocked_documentation_paths.add(FF_DOCS_BASE) + monkeypatch.setattr( + gecko_taskgraph.util.verify, "documentation_paths", mocked_documentation_paths + ) + + +@pytest.fixture +def mock_two_doc_paths(monkeypatch): + """Set two paths containing documentation""" + mocked_documentation_paths = DocPaths() + mocked_documentation_paths.add(FF_DOCS_BASE) + mocked_documentation_paths.add(EXTRA_DOCS_BASE) + monkeypatch.setattr( + gecko_taskgraph.util.verify, "documentation_paths", mocked_documentation_paths + ) + + +@pytest.mark.usefixtures("mock_single_doc_path") +class PyTestSingleDocPath: + """ + Taskcluster documentation for Firefox is in a single directory. Check the tests + running at build time to make sure documentation exists, actually work themselves. + """ + + def test_heading(self): + """ + Look for a headings in filename matching identifiers. This is used when making sure + documentation exists for kinds and attributes. + """ + verify_docs( + filename="kinds.rst", + identifiers=["build", "packages", "toolchain"], + appearing_as="heading", + ) + with pytest.raises(Exception, match="missing from doc file"): + verify_docs( + filename="kinds.rst", + identifiers=["build", "packages", "badvalue"], + appearing_as="heading", + ) + + def test_inline_literal(self): + """ + Look for inline-literals in filename. Used when checking documentation for decision + task parameters and run-using functions. + """ + verify_docs( + filename="parameters.rst", + identifiers=["base_repository", "head_repository", "owner"], + appearing_as="inline-literal", + ) + with pytest.raises(Exception, match="missing from doc file"): + verify_docs( + filename="parameters.rst", + identifiers=["base_repository", "head_repository", "badvalue"], + appearing_as="inline-literal", + ) + + +@pytest.mark.usefixtures("mock_two_doc_paths") +class PyTestTwoDocPaths: + """ + Thunderbird extends Firefox's taskgraph with additional kinds. The documentation + for Thunderbird kinds are in its repository, and documentation_paths will have + two places to look for files. Run the same tests as for a single documentation + path, and cover additional possible scenarios. + """ + + def test_heading(self): + """ + Look for a headings in filename matching identifiers. This is used when + making sure documentation exists for kinds and attributes. + The first test looks for headings that are all within the first doc path, + the second test is new and has a heading found in the second path. + The final check has a identifier that will not match and should + produce an error. + """ + verify_docs( + filename="kinds.rst", + identifiers=["build", "packages", "toolchain"], + appearing_as="heading", + ) + verify_docs( + filename="kinds.rst", + identifiers=["build", "packages", "newkind"], + appearing_as="heading", + ) + with pytest.raises(Exception, match="missing from doc file"): + verify_docs( + filename="kinds.rst", + identifiers=["build", "packages", "badvalue"], + appearing_as="heading", + ) + + def test_inline_literal(self): + """ + Look for inline-literals in filename. Used when checking documentation for decision + task parameters and run-using functions. As with the heading tests, + the second check looks for an identifier in the added documentation path. + """ + verify_docs( + filename="parameters.rst", + identifiers=["base_repository", "head_repository", "owner"], + appearing_as="inline-literal", + ) + verify_docs( + filename="parameters.rst", + identifiers=["base_repository", "head_repository", "newparameter"], + appearing_as="inline-literal", + ) + with pytest.raises(Exception, match="missing from doc file"): + verify_docs( + filename="parameters.rst", + identifiers=["base_repository", "head_repository", "badvalue"], + appearing_as="inline-literal", + ) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/gecko_taskgraph/transforms/__init__.py b/taskcluster/gecko_taskgraph/transforms/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/taskcluster/gecko_taskgraph/transforms/artifact.py b/taskcluster/gecko_taskgraph/transforms/artifact.py new file mode 100644 index 0000000000..559148f7b4 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/artifact.py @@ -0,0 +1,116 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Apply different expiration dates to different artifacts based on a manifest file (artifacts.yml) +""" +import logging +import os +import sys + +import yaml +from taskgraph.transforms.base import TransformSequence +from yaml import YAMLError + +from gecko_taskgraph.transforms.job.common import get_expiration +from gecko_taskgraph.util.workertypes import worker_type_implementation + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +def read_artifact_manifest(manifest_path): + """Read the artifacts.yml manifest file and return it.""" + # logger.info(f"The current directory is {os.getcwd()}") + try: + with open(manifest_path, "r") as ymlf: + yml = yaml.safe_load(ymlf.read()) + return yml + except YAMLError as ye: + err = 'Failed to parse manifest "{manifest_path}". Invalid Yaml:' + err += ye + raise SystemExit(err) + except FileNotFoundError: + err = f'Failed to load manifest "{manifest_path}". File not found' + raise SystemExit(err) + except PermissionError: + err = f'Failed to load manifest "{manifest_path}". Permission Error' + raise SystemExit(err) + + +@transforms.add +def set_artifact_expiration(config, jobs): + """Set the expiration for certain artifacts based on a manifest file.""" + """--- + win: + - build_resources.json: short + + linux: + - target.crashreporter-symbols-full.tar.zst: medium + """ + transform_dir = os.path.dirname(__file__) + manifest = read_artifact_manifest(os.path.join(transform_dir, "artifacts.yml")) + + for job in jobs: + try: + platform = job["attributes"]["build_platform"] + except KeyError: + err = "Tried to get build_platfrom for job, but it does not exist. Exiting." + raise SystemExit(err) + if "worker" in job: + if "env" in job["worker"]: + if isinstance(job["worker"]["env"], dict): + job["worker"]["env"]["MOZ_ARTIFACT_PLATFORM"] = platform + else: + raise SystemExit( + f"Expected env to be a dict, but it was {type(job['worker']['env'])}" + ) + if "artifacts" in job["worker"]: + plat = platform.lower() + if "plain" in plat or "ccov" in plat or "rusttest" in plat: + art_dict = None + elif ( + plat == "toolchain-wasm32-wasi-compiler-rt-trunk" + or plat == "toolchain-linux64-x64-compiler-rt-trunk" + or plat == "toolchain-linux64-x86-compiler-rt-trunk" + or plat == "android-geckoview-docs" + ): + art_dict = None + elif plat.startswith("win"): + art_dict = manifest["win"] + elif plat.startswith("linux"): + art_dict = manifest["linux"] + elif plat.startswith("mac"): + art_dict = manifest["macos"] + elif plat.startswith("android"): + art_dict = manifest["android"] + else: + print( + 'The platform name "{plat}" didn\'t start with', + '"win", "mac", "android", or "linux".', + file=sys.stderr, + ) + art_dict = None + worker_implementation, _ = worker_type_implementation( + config.graph_config, config.params, job["worker-type"] + ) + if worker_implementation == "docker-worker": + artifact_dest = "/builds/worker/cidata/{}" + else: + artifact_dest = "cidata/{}" + + if art_dict is not None: + for art_name in art_dict.keys(): + # The 'artifacts' key of a job is a list at this stage. + # So, must append a new dict to the list + expiry_policy = art_dict[art_name] + expires = get_expiration(config, policy=expiry_policy) + new_art = { + "name": f"public/cidata/{art_name}", + "path": artifact_dest.format(art_name), + "type": "file", + "expires-after": expires, + } + job["worker"]["artifacts"].append(new_art) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/artifacts.yml b/taskcluster/gecko_taskgraph/transforms/artifacts.yml new file mode 100644 index 0000000000..b41c657283 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/artifacts.yml @@ -0,0 +1,16 @@ +--- +win: + target.crashreporter-symbols-full.tar.zst: shortest + sccache.log: shortest + +linux: + target.crashreporter-symbols-full.tar.zst: shortest + sccache.log: shortest + +macos: + target.crashreporter-symbols-full.tar.zst: shortest + sccache.log: shortest + +android: + target.crashreporter-symbols-full.tar.zst: shortest + sccache.log: shortest diff --git a/taskcluster/gecko_taskgraph/transforms/attribution.py b/taskcluster/gecko_taskgraph/transforms/attribution.py new file mode 100644 index 0000000000..935c274c03 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/attribution.py @@ -0,0 +1,32 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def stub_installer(config, jobs): + """Not all windows builds come with a stub installer (only win32, and not + on esr), so conditionally add it here based on our dependency's + stub-installer attribute.""" + for job in jobs: + dep_name, dep_label = next(iter(job["dependencies"].items())) + dep_task = config.kind_dependencies_tasks[dep_label] + if dep_task.attributes.get("stub-installer"): + locale = job["attributes"].get("locale") + if locale: + artifact = f"{locale}/target.stub-installer.exe" + else: + artifact = "target.stub-installer.exe" + job["fetches"][dep_name].append(artifact) + job["run"]["command"] += [ + "--input", + "/builds/worker/fetches/target.stub-installer.exe", + ] + job["attributes"]["release_artifacts"].append( + "public/build/target.stub-installer.exe" + ) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/balrog_submit.py b/taskcluster/gecko_taskgraph/transforms/balrog_submit.py new file mode 100644 index 0000000000..067600f0cb --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/balrog_submit.py @@ -0,0 +1,138 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the per-locale balrog task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import replace_group +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job + +balrog_description_schema = schema.extend( + { + # unique label to describe this balrog task, defaults to balrog-{dep.label} + Optional("label"): str, + Optional( + "update-no-wnp", + description="Whether the parallel `-No-WNP` blob should be updated as well.", + ): optionally_keyed_by("release-type", bool), + # treeherder is allowed here to override any defaults we use for beetmover. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + Optional("attributes"): task_description_schema["attributes"], + # Shipping product / phase + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + + +transforms = TransformSequence() +transforms.add_validate(balrog_description_schema) + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by platform, etc.""" + fields = [ + "update-no-wnp", + ] + for job in jobs: + label = job.get("dependent-task", object).__dict__.get("label", "?no-label?") + for field in fields: + resolve_keyed_by( + item=job, + field=field, + item_name=label, + **{ + "project": config.params["project"], + "release-type": config.params["release_type"], + }, + ) + yield job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "c-Up(N)") + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault( + "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1) + ) + treeherder.setdefault("kind", "build") + + attributes = copy_attributes_from_dependent_job(dep_job) + + treeherder_job_symbol = dep_job.task["extra"]["treeherder"]["symbol"] + treeherder["symbol"] = replace_group(treeherder_job_symbol, "c-Up") + + if dep_job.attributes.get("locale"): + attributes["locale"] = dep_job.attributes.get("locale") + + label = job["label"] + + description = ( + "Balrog submission for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "beetmover", + "paths": ["public/manifest.json"], + } + ] + + dependencies = {"beetmover": dep_job.label} + for kind_dep in config.kind_dependencies_tasks.values(): + if ( + kind_dep.kind == "startup-test" + and kind_dep.attributes["build_platform"] + == attributes.get("build_platform") + and kind_dep.attributes["build_type"] == attributes.get("build_type") + and kind_dep.attributes.get("shipping_product") + == job.get("shipping-product") + ): + dependencies["startup-test"] = kind_dep.label + + task = { + "label": label, + "description": description, + "worker-type": "balrog", + "worker": { + "implementation": "balrog", + "upstream-artifacts": upstream_artifacts, + "balrog-action": "v2-submit-locale", + "suffixes": ["", "-No-WNP"] if job.get("update-no-wnp") else [""], + }, + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "shipping-phase": job.get("shipping-phase", "promote"), + "shipping-product": job.get("shipping-product"), + } + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py b/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py new file mode 100644 index 0000000000..6b06758f69 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +from mozilla_version.gecko import GeckoVersion +from mozrelease.balrog import generate_update_properties +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.yaml import load_yaml + +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +@transforms.add +def generate_update_line(config, jobs): + """Resolve fields that can be keyed by platform, etc.""" + release_config = get_release_config(config) + for job in jobs: + config_file = job.pop("whats-new-config") + update_config = load_yaml(config_file) + + product = job["shipping-product"] + if product == "devedition": + product = "firefox" + job["worker"]["update-line"] = {} + for blob_type, suffix in [("wnp", ""), ("no-wnp", "-No-WNP")]: + context = { + "release-type": config.params["release_type"], + "product": product, + "version": GeckoVersion.parse(release_config["appVersion"]), + "blob-type": blob_type, + "build-id": config.params["moz_build_date"], + } + job["worker"]["update-line"][suffix] = generate_update_properties( + context, update_config + ) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover.py b/taskcluster/gecko_taskgraph/transforms/beetmover.py new file mode 100644 index 0000000000..93818707dd --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover.py @@ -0,0 +1,165 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import replace_group +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +transforms = TransformSequence() + +beetmover_description_schema = schema.extend( + { + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Optional("label"): str, + # treeherder is allowed here to override any defaults we use for beetmover. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + # locale is passed only for l10n beetmoving + Optional("locale"): str, + Required("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("attributes"): task_description_schema["attributes"], + } +) + + +transforms.add_validate(beetmover_description_schema) + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = job.get("treeherder", {}) + treeherder.setdefault( + "symbol", replace_group(dep_job.task["extra"]["treeherder"]["symbol"], "BM") + ) + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault( + "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1) + ) + treeherder.setdefault("kind", "build") + label = job["label"] + description = ( + "Beetmover submission for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + dependencies = {dep_job.kind: dep_job.label} + + # XXX release snap-repackage has a variable number of dependencies, depending on how many + # "post-beetmover-dummy" jobs there are in the graph. + if dep_job.kind != "release-snap-repackage" and len(dep_job.dependencies) > 1: + raise NotImplementedError( + "Can't beetmove a signing task with multiple dependencies" + ) + signing_dependencies = dep_job.dependencies + dependencies.update(signing_dependencies) + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + + if job.get("locale"): + attributes["locale"] = job["locale"] + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "shipping-phase": job["shipping-phase"], + } + + yield task + + +def craft_release_properties(config, job): + params = config.params + build_platform = job["attributes"]["build_platform"] + build_platform = build_platform.replace("-shippable", "") + if build_platform.endswith("-source"): + build_platform = build_platform.replace("-source", "-release") + + # XXX This should be explicitly set via build attributes or something + if "android" in job["label"] or "fennec" in job["label"]: + app_name = "Fennec" + elif config.graph_config["trust-domain"] == "comm": + app_name = "Thunderbird" + else: + # XXX Even DevEdition is called Firefox + app_name = "Firefox" + + return { + "app-name": app_name, + "app-version": params["app_version"], + "branch": params["project"], + "build-id": params["moz_build_date"], + "hash-type": "sha512", + "platform": build_platform, + } + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + valid_beetmover_job = len(job["dependencies"]) == 2 and any( + ["signing" in j for j in job["dependencies"]] + ) + # XXX release snap-repackage has a variable number of dependencies, depending on how many + # "post-beetmover-dummy" jobs there are in the graph. + if "-snap-" not in job["label"] and not valid_beetmover_job: + raise NotImplementedError("Beetmover must have two dependencies.") + + locale = job["attributes"].get("locale") + platform = job["attributes"]["build_platform"] + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform, locale + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform, locale=locale + ), + } + + if locale: + worker["locale"] = locale + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py b/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py new file mode 100644 index 0000000000..8c56f1a968 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py @@ -0,0 +1,114 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from itertools import islice + +from taskgraph import MAX_DEPENDENCIES +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.platforms import architecture +from gecko_taskgraph.util.scriptworker import ( + generate_artifact_registry_gcs_sources, + get_beetmover_apt_repo_scope, + get_beetmover_repo_action_scope, +) + +transforms = TransformSequence() + + +@transforms.add +def beetmover_apt(config, tasks): + product = ( + "firefox" + if not config.params["release_type"] # try + or config.params["release_type"] == "nightly" + else config.params["release_product"] + ) + filtered_tasks = filter_beetmover_apt_tasks(tasks, product) + # There are too many beetmover-repackage dependencies for a single task + # and we hit the taskgraph dependencies limit. + # To work around this limitation, we chunk the would be task + # into tasks dependendent on, at most, half of MAX_DEPENDENCIES. + batches = batched(filtered_tasks, MAX_DEPENDENCIES // 2) + for index, batch in enumerate(batches): + dependencies = {} + gcs_sources = [] + for task in batch: + dep = task["primary-dependency"] + dependencies[dep.label] = dep.label + gcs_sources.extend(generate_artifact_registry_gcs_sources(dep)) + description = f"Batch {index + 1} of beetmover APT submissions for the {config.params['release_type']} .deb packages" + platform = "firefox-release/opt" + treeherder = { + "platform": platform, + "tier": 1, + "kind": "other", + "symbol": f"BM-apt(batch-{index + 1})", + } + apt_repo_scope = get_beetmover_apt_repo_scope(config) + repo_action_scope = get_beetmover_repo_action_scope(config) + attributes = { + "required_signoffs": ["mar-signing"], + "shippable": True, + "shipping_product": product, + } + task = { + "label": f"{config.kind}-{index + 1}-{platform}", + "description": description, + "worker-type": "beetmover", + "treeherder": treeherder, + "scopes": [apt_repo_scope, repo_action_scope], + "attributes": attributes, + "shipping-phase": "ship", + "shipping-product": product, + "dependencies": dependencies, + } + worker = { + "implementation": "beetmover-import-from-gcs-to-artifact-registry", + "product": product, + "gcs-sources": gcs_sources, + } + task["worker"] = worker + yield task + + +def batched(iterable, n): + "Batch data into tuples of length n. The last batch may be shorter." + # batched('ABCDEFG', 3) --> ABC DEF G + if n < 1: + raise ValueError("n must be at least one") + it = iter(iterable) + batch = tuple(islice(it, n)) + while batch: + yield batch + batch = tuple(islice(it, n)) + + +def filter_beetmover_apt_tasks(tasks, product): + return (task for task in tasks if filter_beetmover_apt_task(task, product)) + + +def filter_beetmover_apt_task(task, product): + # We only create beetmover-apt tasks for l10n beetmover-repackage tasks that + # beetmove langpack .deb packages. The langpack .deb packages support all + # architectures, so we generate them only on x86_64 tasks. + return ( + is_x86_64_l10n_task(task) or is_not_l10n_task(task) + ) and is_task_for_product(task, product) + + +def is_x86_64_l10n_task(task): + dep = task["primary-dependency"] + locale = dep.attributes.get("locale") + return locale and architecture(dep.attributes["build_platform"]) == "x86_64" + + +def is_not_l10n_task(task): + dep = task["primary-dependency"] + locale = dep.attributes.get("locale") + return not locale + + +def is_task_for_product(task, product): + dep = task["primary-dependency"] + return dep.attributes.get("shipping_product") == product diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py new file mode 100644 index 0000000000..f595854a80 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py @@ -0,0 +1,133 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the checksums signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import replace_group +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +beetmover_checksums_description_schema = schema.extend( + { + Required("attributes"): {str: object}, + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("locale"): str, + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_checksums_description_schema) + + +@transforms.add +def make_beetmover_checksums_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = job.get("treeherder", {}) + treeherder.setdefault( + "symbol", + replace_group(dep_job.task["extra"]["treeherder"]["symbol"], "BMcs"), + ) + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault( + "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1) + ) + treeherder.setdefault("kind", "build") + + label = job["label"] + build_platform = attributes.get("build_platform") + + description = ( + "Beetmover submission of checksums for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=build_platform, + build_type=attributes.get("build_type"), + ) + ) + + extra = {} + if "devedition" in build_platform: + extra["product"] = "devedition" + else: + extra["product"] = "firefox" + + dependencies = {dep_job.kind: dep_job.label} + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + + if dep_job.attributes.get("locale"): + treeherder["symbol"] = "BMcs({})".format(dep_job.attributes.get("locale")) + attributes["locale"] = dep_job.attributes.get("locale") + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "extra": extra, + } + + if "shipping-phase" in job: + task["shipping-phase"] = job["shipping-phase"] + + if "shipping-product" in job: + task["shipping-product"] = job["shipping-product"] + + yield task + + +@transforms.add +def make_beetmover_checksums_worker(config, jobs): + for job in jobs: + locale = job["attributes"].get("locale") + platform = job["attributes"]["build_platform"] + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform, locale + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform, locale=locale + ), + } + + if locale: + worker["locale"] = locale + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py new file mode 100644 index 0000000000..9c2b49b6c5 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py @@ -0,0 +1,139 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform release-beetmover-source-checksums into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job + +beetmover_checksums_description_schema = schema.extend( + { + Optional("label"): str, + Optional("extra"): object, + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + } +) + + +transforms = TransformSequence() +transforms.add_validate(beetmover_checksums_description_schema) + + +@transforms.add +def make_beetmover_checksums_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + build_platform = attributes.get("build_platform") + if not build_platform: + raise Exception("Cannot find build platform!") + repack_id = dep_job.task.get("extra", {}).get("repack_id") + if not repack_id: + raise Exception("Cannot find repack id!") + + label = dep_job.label.replace("beetmover-", "beetmover-checksums-") + description = ( + "Beetmove checksums for repack_id '{repack_id}' for build '" + "{build_platform}/{build_type}'".format( + repack_id=repack_id, + build_platform=build_platform, + build_type=attributes.get("build_type"), + ) + ) + + extra = {} + extra["partner_path"] = dep_job.task["payload"]["upstreamArtifacts"][0][ + "locale" + ] + extra["repack_id"] = repack_id + + dependencies = {dep_job.kind: dep_job.label} + for k, v in dep_job.dependencies.items(): + if k.startswith("beetmover"): + dependencies[k] = v + + attributes = copy_attributes_from_dependent_job(dep_job) + + task = { + "label": label, + "description": description, + "worker-type": "{}/{}".format( + dep_job.task["provisionerId"], + dep_job.task["workerType"], + ), + "scopes": dep_job.task["scopes"], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "extra": extra, + } + + if "shipping-phase" in job: + task["shipping-phase"] = job["shipping-phase"] + + if "shipping-product" in job: + task["shipping-product"] = job["shipping-product"] + + yield task + + +def generate_upstream_artifacts(refs, partner_path): + # Until bug 1331141 is fixed, if you are adding any new artifacts here that + # need to be transfered to S3, please be aware you also need to follow-up + # with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/. + # See example in bug 1348286 + common_paths = [ + "public/target.checksums", + ] + + upstream_artifacts = [ + { + "taskId": {"task-reference": refs["beetmover"]}, + "taskType": "signing", + "paths": common_paths, + "locale": f"beetmover-checksums/{partner_path}", + } + ] + + return upstream_artifacts + + +@transforms.add +def make_beetmover_checksums_worker(config, jobs): + for job in jobs: + valid_beetmover_job = len(job["dependencies"]) == 1 + if not valid_beetmover_job: + raise NotImplementedError("Beetmover checksums must have one dependency.") + + refs = { + "beetmover": None, + } + for dependency in job["dependencies"].keys(): + if dependency.endswith("beetmover"): + refs["beetmover"] = f"<{dependency}>" + if None in refs.values(): + raise NotImplementedError( + "Beetmover checksums must have a beetmover dependency!" + ) + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_upstream_artifacts( + refs, + job["extra"]["partner_path"], + ), + "partner-public": True, + } + + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py b/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py new file mode 100644 index 0000000000..6eee5954e3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py @@ -0,0 +1,166 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + + +from copy import deepcopy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import ( + craft_release_properties as beetmover_craft_release_properties, +) +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.declarative_artifacts import ( + get_geckoview_artifact_id, + get_geckoview_artifact_map, + get_geckoview_upstream_artifacts, +) + +beetmover_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Required("run-on-projects"): task_description_schema["run-on-projects"], + Required("run-on-hg-branches"): task_description_schema["run-on-hg-branches"], + Optional("bucket-scope"): optionally_keyed_by("release-level", str), + Optional("shipping-phase"): optionally_keyed_by( + "project", task_description_schema["shipping-phase"] + ), + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("attributes"): task_description_schema["attributes"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_description_schema) + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "run-on-hg-branches", + item_name=job["label"], + project=config.params["project"], + ) + resolve_keyed_by( + job, + "shipping-phase", + item_name=job["label"], + project=config.params["project"], + ) + resolve_keyed_by( + job, + "bucket-scope", + item_name=job["label"], + **{"release-level": release_level(config.params["project"])}, + ) + yield job + + +@transforms.add +def split_maven_packages(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + for package in attributes["maven_packages"]: + package_job = deepcopy(job) + package_job["maven-package"] = package + yield package_job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + + treeherder = job.get("treeherder", {}) + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault("tier", 2) + treeherder.setdefault("kind", "build") + package = job["maven-package"] + treeherder.setdefault("symbol", f"BM-{package}") + label = job["label"] + description = ( + "Beetmover submission for geckoview" + "{build_platform}/{build_type}'".format( + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + dependencies = deepcopy(dep_job.dependencies) + dependencies[dep_job.kind] = dep_job.label + + if job.get("locale"): + attributes["locale"] = job["locale"] + + attributes["run_on_hg_branches"] = job["run-on-hg-branches"] + + task = { + "label": f"{package}-{label}", + "description": description, + "worker-type": "beetmover", + "scopes": [ + job["bucket-scope"], + "project:releng:beetmover:action:push-to-maven", + ], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": job["run-on-projects"], + "treeherder": treeherder, + "shipping-phase": job["shipping-phase"], + "maven-package": package, + } + + yield task + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + job["worker"] = { + "artifact-map": get_geckoview_artifact_map(config, job), + "implementation": "beetmover-maven", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": get_geckoview_upstream_artifacts( + config, job, job["maven-package"] + ), + } + del job["maven-package"] + + yield job + + +def craft_release_properties(config, job): + release_properties = beetmover_craft_release_properties(config, job) + + release_properties["artifact-id"] = get_geckoview_artifact_id( + config, + job["attributes"]["build_platform"], + job["maven-package"], + job["attributes"].get("update-channel"), + ) + release_properties["app-name"] = "geckoview" + + return release_properties diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py new file mode 100644 index 0000000000..9318ed29d4 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py @@ -0,0 +1,128 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform release-beetmover-langpack-checksums into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import inherit_treeherder_from_dep +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +beetmover_checksums_description_schema = schema.extend( + { + Required("attributes"): {str: object}, + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("locale"): str, + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_checksums_description_schema) + + +@transforms.add +def make_beetmover_checksums_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault( + "symbol", "BMcslang(N{})".format(attributes.get("l10n_chunk", "")) + ) + + label = job["label"] + build_platform = attributes.get("build_platform") + + description = "Beetmover submission of checksums for langpack files" + + extra = {} + if "devedition" in build_platform: + extra["product"] = "devedition" + else: + extra["product"] = "firefox" + + dependencies = {dep_job.kind: dep_job.label} + for k, v in dep_job.dependencies.items(): + if k.startswith("beetmover"): + dependencies[k] = v + + attributes = copy_attributes_from_dependent_job(dep_job) + if "chunk_locales" in dep_job.attributes: + attributes["chunk_locales"] = dep_job.attributes["chunk_locales"] + attributes.update(job.get("attributes", {})) + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "extra": extra, + } + + if "shipping-phase" in job: + task["shipping-phase"] = job["shipping-phase"] + + if "shipping-product" in job: + task["shipping-product"] = job["shipping-product"] + + yield task + + +@transforms.add +def make_beetmover_checksums_worker(config, jobs): + for job in jobs: + valid_beetmover_job = len(job["dependencies"]) == 1 + if not valid_beetmover_job: + raise NotImplementedError("Beetmover checksums must have one dependency.") + + locales = job["attributes"].get("chunk_locales") + platform = job["attributes"]["build_platform"] + + refs = { + "beetmover": None, + } + for dependency in job["dependencies"].keys(): + if dependency.startswith("release-beetmover"): + refs["beetmover"] = f"<{dependency}>" + if None in refs.values(): + raise NotImplementedError( + "Beetmover checksums must have a beetmover dependency!" + ) + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform, locales + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform, locale=locales + ), + } + + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py b/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py new file mode 100644 index 0000000000..b6307d93cf --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py @@ -0,0 +1,93 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover-push-to-release task into a task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, taskref_or_string +from voluptuous import Optional, Required + +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.scriptworker import ( + add_scope_prefix, + get_beetmover_bucket_scope, +) + +beetmover_push_to_release_description_schema = Schema( + { + Required("name"): str, + Required("product"): str, + Required("treeherder-platform"): str, + Optional("attributes"): {str: object}, + Optional("job-from"): task_description_schema["job-from"], + Optional("run"): {str: object}, + Optional("run-on-projects"): task_description_schema["run-on-projects"], + Optional("dependencies"): {str: taskref_or_string}, + Optional("index"): {str: str}, + Optional("routes"): [str], + Required("shipping-phase"): task_description_schema["shipping-phase"], + Required("shipping-product"): task_description_schema["shipping-product"], + Optional("extra"): task_description_schema["extra"], + Optional("worker"): { + Optional("max-run-time"): int, + }, + } +) + + +transforms = TransformSequence() +transforms.add_validate(beetmover_push_to_release_description_schema) + + +@transforms.add +def make_beetmover_push_to_release_description(config, jobs): + for job in jobs: + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "Rel(BM-C)") + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + treeherder.setdefault("platform", job["treeherder-platform"]) + + label = job["name"] + description = "Beetmover push to release for '{product}'".format( + product=job["product"] + ) + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = add_scope_prefix(config, "beetmover:action:push-to-releases") + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "product": job["product"], + "dependencies": job["dependencies"], + "attributes": job.get("attributes", {}), + "run-on-projects": job.get("run-on-projects"), + "treeherder": treeherder, + "shipping-phase": job.get("shipping-phase", "push"), + "shipping-product": job.get("shipping-product"), + "routes": job.get("routes", []), + "extra": job.get("extra", {}), + "worker": job.get("worker", {}), + } + + yield task + + +@transforms.add +def make_beetmover_push_to_release_worker(config, jobs): + for job in jobs: + worker = { + "implementation": "beetmover-push-to-release", + "product": job["product"], + } + if job.get("worker", {}).get("max-run-time"): + worker["max-run-time"] = job["worker"]["max-run-time"] + job["worker"] = worker + del job["product"] + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py new file mode 100644 index 0000000000..a1ce911b9f --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py @@ -0,0 +1,327 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_prefix +from taskgraph.util.treeherder import inherit_treeherder_from_dep, replace_group +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.multi_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.partials import ( + get_balrog_platform_name, + get_partials_artifacts_from_params, + get_partials_info_from_params, +) +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_partials_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +logger = logging.getLogger(__name__) + + +beetmover_description_schema = schema.extend( + { + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Required("label"): str, + # treeherder is allowed here to override any defaults we use for beetmover. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + Optional("attributes"): task_description_schema["attributes"], + # locale is passed only for l10n beetmoving + Optional("locale"): str, + Required("shipping-phase"): task_description_schema["shipping-phase"], + # Optional until we fix asan (run_on_projects?) + Optional("shipping-product"): task_description_schema["shipping-product"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_description_schema) + + +def get_task_by_suffix(tasks, suffix): + """ + Given tasks, returns the key to the task with provided suffix + Raises exception if more than one task is found + + Args: + tasks (Dict): Map of labels to tasks + suffix (str): Suffix for the desired task + + Returns + str: The key to the desired task + """ + labels = [] + for label in tasks.keys(): + if label.endswith(suffix): + labels.append(label) + if len(labels) > 1: + raise Exception( + f"There should only be a single task with suffix: {suffix} - found {len(labels)}" + ) + return labels[0] + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = inherit_treeherder_from_dep(job, dep_job) + upstream_symbol = dep_job.task["extra"]["treeherder"]["symbol"] + if "build" in job["dependent-tasks"]: + upstream_symbol = job["dependent-tasks"]["build"].task["extra"][ + "treeherder" + ]["symbol"] + treeherder.setdefault("symbol", replace_group(upstream_symbol, "BMR")) + label = job["label"] + description = ( + "Beetmover submission for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + upstream_deps = job["dependent-tasks"] + + signing_name = "build-signing" + build_name = "build" + repackage_name = "repackage" + repackage_signing_name = "repackage-signing" + msi_signing_name = "repackage-signing-msi" + msix_signing_name = "repackage-signing-shippable-l10n-msix" + mar_signing_name = "mar-signing" + attribution_name = "attribution" + repackage_deb_name = "repackage-deb" + if job.get("locale"): + signing_name = "shippable-l10n-signing" + build_name = "shippable-l10n" + repackage_name = "repackage-l10n" + repackage_signing_name = "repackage-signing-l10n" + mar_signing_name = "mar-signing-l10n" + attribution_name = "attribution-l10n" + repackage_deb_name = "repackage-deb-l10n" + + # The upstream "signing" task for macosx is either *-mac-signing or *-mac-notarization + if attributes.get("build_platform", "").startswith("macosx"): + # We use the signing task on level 1 and notarization on level 3 + if int(config.params.get("level", 0)) < 3: + signing_name = get_task_by_suffix(upstream_deps, "-mac-signing") + else: + signing_name = get_task_by_suffix(upstream_deps, "-mac-notarization") + if not signing_name: + raise Exception("Could not find upstream kind for mac signing.") + + dependencies = { + "build": upstream_deps[build_name], + "repackage": upstream_deps[repackage_name], + "signing": upstream_deps[signing_name], + "mar-signing": upstream_deps[mar_signing_name], + } + if "partials-signing" in upstream_deps: + dependencies["partials-signing"] = upstream_deps["partials-signing"] + if msi_signing_name in upstream_deps: + dependencies[msi_signing_name] = upstream_deps[msi_signing_name] + if msix_signing_name in upstream_deps: + dependencies[msix_signing_name] = upstream_deps[msix_signing_name] + if repackage_signing_name in upstream_deps: + dependencies["repackage-signing"] = upstream_deps[repackage_signing_name] + if attribution_name in upstream_deps: + dependencies[attribution_name] = upstream_deps[attribution_name] + if repackage_deb_name in upstream_deps: + dependencies[repackage_deb_name] = upstream_deps[repackage_deb_name] + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + if job.get("locale"): + attributes["locale"] = job["locale"] + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "shipping-phase": job["shipping-phase"], + "shipping-product": job.get("shipping-product"), + } + + yield task + + +def generate_partials_upstream_artifacts(job, artifacts, platform, locale=None): + artifact_prefix = get_artifact_prefix(job) + if locale and locale != "en-US": + artifact_prefix = f"{artifact_prefix}/{locale}" + + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "signing", + "paths": [f"{artifact_prefix}/{path}" for path, _ in artifacts], + "locale": locale or "en-US", + } + ] + + return upstream_artifacts + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + locale = job["attributes"].get("locale") + platform = job["attributes"]["build_platform"] + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform, locale + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform, locale=locale + ), + } + + if locale: + worker["locale"] = locale + job["worker"] = worker + + yield job + + +@transforms.add +def strip_unwanted_langpacks_from_worker(config, jobs): + """Strips out langpacks where we didn't sign them. + + This explicitly deletes langpacks from upstream artifacts and from artifact-maps. + Due to limitations in declarative artifacts, doing this was our easiest way right now. + """ + ALWAYS_OK_PLATFORMS = {"linux64-shippable", "linux64-devedition"} + OSX_OK_PLATFORMS = {"macosx64-shippable", "macosx64-devedition"} + for job in jobs: + platform = job["attributes"].get("build_platform") + if platform in ALWAYS_OK_PLATFORMS: + # No need to strip anything + yield job + continue + + for map in job["worker"].get("artifact-map", [])[:]: + if not any([path.endswith("target.langpack.xpi") for path in map["paths"]]): + continue + if map["locale"] == "ja-JP-mac": + # This locale should only exist on mac + assert platform in OSX_OK_PLATFORMS + continue + # map[paths] is being modified while iterating, so we need to resolve the + # ".keys()" iterator up front by throwing it into a list. + for path in list(map["paths"].keys()): + if path.endswith("target.langpack.xpi"): + del map["paths"][path] + if map["paths"] == {}: + job["worker"]["artifact-map"].remove(map) + + for artifact in job["worker"].get("upstream-artifacts", []): + if not any( + [path.endswith("target.langpack.xpi") for path in artifact["paths"]] + ): + continue + if artifact["locale"] == "ja-JP-mac": + # This locale should only exist on mac + assert platform in OSX_OK_PLATFORMS + continue + artifact["paths"] = [ + path + for path in artifact["paths"] + if not path.endswith("target.langpack.xpi") + ] + if artifact["paths"] == []: + job["worker"]["upstream-artifacts"].remove(artifact) + + yield job + + +@transforms.add +def make_partials_artifacts(config, jobs): + for job in jobs: + locale = job["attributes"].get("locale") + if not locale: + locale = "en-US" + + platform = job["attributes"]["build_platform"] + + if "partials-signing" not in job["dependencies"]: + yield job + continue + + balrog_platform = get_balrog_platform_name(platform) + artifacts = get_partials_artifacts_from_params( + config.params.get("release_history"), balrog_platform, locale + ) + + upstream_artifacts = generate_partials_upstream_artifacts( + job, artifacts, balrog_platform, locale + ) + + job["worker"]["upstream-artifacts"].extend(upstream_artifacts) + + extra = list() + + partials_info = get_partials_info_from_params( + config.params.get("release_history"), balrog_platform, locale + ) + + job["worker"]["artifact-map"].extend( + generate_beetmover_partials_artifact_map( + config, job, partials_info, platform=platform, locale=locale + ) + ) + + for artifact in partials_info: + artifact_extra = { + "locale": locale, + "artifact_name": artifact, + "buildid": partials_info[artifact]["buildid"], + "platform": balrog_platform, + } + for rel_attr in ("previousBuildNumber", "previousVersion"): + if partials_info[artifact].get(rel_attr): + artifact_extra[rel_attr] = partials_info[artifact][rel_attr] + extra.append(artifact_extra) + + job.setdefault("extra", {}) + job["extra"]["partials"] = extra + + yield job + + +@transforms.add +def convert_deps(config, jobs): + for job in jobs: + job["dependencies"] = { + name: dep_job.label for name, dep_job in job["dependencies"].items() + } + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py new file mode 100644 index 0000000000..da2a41ccb3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py @@ -0,0 +1,44 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the signing task into an actual task description. +""" + + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import join_symbol + +transforms = TransformSequence() + + +@transforms.add +def make_beetmover_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + locale = dep_job.attributes.get("locale") + if not locale: + yield job + continue + + group = "BMR" + + # add the locale code + symbol = locale + + treeherder = { + "symbol": join_symbol(group, symbol), + } + + beet_description = { + "label": job["label"], + "primary-dependency": dep_job, + "dependent-tasks": job["dependent-tasks"], + "attributes": job["attributes"], + "treeherder": treeherder, + "locale": locale, + "shipping-phase": job["shipping-phase"], + "shipping-product": job["shipping-product"], + } + yield beet_description diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py new file mode 100644 index 0000000000..40dc370f33 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py @@ -0,0 +1,326 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +import logging +from copy import deepcopy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.partners import get_ftp_platform, get_partner_config_by_kind +from gecko_taskgraph.util.scriptworker import ( + add_scope_prefix, + get_beetmover_bucket_scope, +) + +logger = logging.getLogger(__name__) + + +beetmover_description_schema = schema.extend( + { + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Optional("label"): str, + Required("partner-bucket-scope"): optionally_keyed_by("release-level", str), + Required("partner-public-path"): Any(None, str), + Required("partner-private-path"): Any(None, str), + Optional("extra"): object, + Required("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("priority"): task_description_schema["priority"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_description_schema) + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "partner-bucket-scope", + item_name=job["label"], + **{"release-level": release_level(config.params["project"])}, + ) + yield job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + repack_id = dep_job.task.get("extra", {}).get("repack_id") + if not repack_id: + raise Exception("Cannot find repack id!") + + attributes = dep_job.attributes + build_platform = attributes.get("build_platform") + if not build_platform: + raise Exception("Cannot find build platform!") + + label = dep_job.label.replace("repackage-signing-l10n", "beetmover-") + label = dep_job.label.replace("repackage-signing-", "beetmover-") + label = label.replace("repackage-", "beetmover-") + label = label.replace("chunking-dummy-", "beetmover-") + description = ( + "Beetmover submission for repack_id '{repack_id}' for build '" + "{build_platform}/{build_type}'".format( + repack_id=repack_id, + build_platform=build_platform, + build_type=attributes.get("build_type"), + ) + ) + + dependencies = {} + + base_label = "release-partner-repack" + if "eme" in config.kind: + base_label = "release-eme-free-repack" + dependencies["build"] = f"{base_label}-{build_platform}" + if "macosx" in build_platform or "win" in build_platform: + dependencies["repackage"] = "{}-repackage-{}-{}".format( + base_label, build_platform, repack_id.replace("/", "-") + ) + dependencies["repackage-signing"] = "{}-repackage-signing-{}-{}".format( + base_label, build_platform, repack_id.replace("/", "-") + ) + + attributes = copy_attributes_from_dependent_job(dep_job) + + task = { + "label": label, + "description": description, + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "shipping-phase": job["shipping-phase"], + "shipping-product": job.get("shipping-product"), + "partner-private-path": job["partner-private-path"], + "partner-public-path": job["partner-public-path"], + "partner-bucket-scope": job["partner-bucket-scope"], + "extra": { + "repack_id": repack_id, + }, + } + # we may have reduced the priority for partner jobs, otherwise task.py will set it + if job.get("priority"): + task["priority"] = job["priority"] + + yield task + + +def populate_scopes_and_worker_type(config, job, bucket_scope, partner_public=False): + action_scope = add_scope_prefix(config, "beetmover:action:push-to-partner") + + task = deepcopy(job) + task["scopes"] = [bucket_scope, action_scope] + task["worker-type"] = "beetmover" + task["partner_public"] = partner_public + if partner_public: + task["label"] = "{}-public".format(task["label"]) + return task + + +@transforms.add +def split_public_and_private(config, jobs): + public_bucket_scope = get_beetmover_bucket_scope(config) + partner_config = get_partner_config_by_kind(config, config.kind) + + for job in jobs: + partner_bucket_scope = add_scope_prefix(config, job["partner-bucket-scope"]) + partner, subpartner, _ = job["extra"]["repack_id"].split("/") + + if partner_config[partner][subpartner].get("upload_to_candidates"): + # public + yield populate_scopes_and_worker_type( + config, job, public_bucket_scope, partner_public=True + ) + else: + # private + yield populate_scopes_and_worker_type( + config, job, partner_bucket_scope, partner_public=False + ) + + +def generate_upstream_artifacts( + job, + build_task_ref, + repackage_task_ref, + repackage_signing_task_ref, + platform, + repack_id, + partner_path, + repack_stub_installer=False, +): + + upstream_artifacts = [] + artifact_prefix = get_artifact_prefix(job) + + if "linux" in platform: + upstream_artifacts.append( + { + "taskId": {"task-reference": build_task_ref}, + "taskType": "build", + "paths": [f"{artifact_prefix}/{repack_id}/target.tar.bz2"], + "locale": partner_path, + } + ) + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [f"{artifact_prefix}/{repack_id}/target.tar.bz2.asc"], + "locale": partner_path, + } + ) + elif "macosx" in platform: + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_task_ref}, + "taskType": "repackage", + "paths": [f"{artifact_prefix}/{repack_id}/target.dmg"], + "locale": partner_path, + } + ) + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [f"{artifact_prefix}/{repack_id}/target.dmg.asc"], + "locale": partner_path, + } + ) + elif "win" in platform: + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [f"{artifact_prefix}/{repack_id}/target.installer.exe"], + "locale": partner_path, + } + ) + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [f"{artifact_prefix}/{repack_id}/target.installer.exe.asc"], + "locale": partner_path, + } + ) + if platform.startswith("win32") and repack_stub_installer: + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [ + "{}/{}/target.stub-installer.exe".format( + artifact_prefix, repack_id + ) + ], + "locale": partner_path, + } + ) + upstream_artifacts.append( + { + "taskId": {"task-reference": repackage_signing_task_ref}, + "taskType": "repackage", + "paths": [ + "{}/{}/target.stub-installer.exe.asc".format( + artifact_prefix, repack_id + ) + ], + "locale": partner_path, + } + ) + + if not upstream_artifacts: + raise Exception("Couldn't find any upstream artifacts.") + + return upstream_artifacts + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + platform = job["attributes"]["build_platform"] + repack_id = job["extra"]["repack_id"] + partner, subpartner, locale = job["extra"]["repack_id"].split("/") + partner_config = get_partner_config_by_kind(config, config.kind) + repack_stub_installer = partner_config[partner][subpartner].get( + "repack_stub_installer" + ) + build_task = None + repackage_task = None + repackage_signing_task = None + + for dependency in job["dependencies"].keys(): + if "repackage-signing" in dependency: + repackage_signing_task = dependency + elif "repackage" in dependency: + repackage_task = dependency + else: + build_task = "build" + + build_task_ref = "<" + str(build_task) + ">" + repackage_task_ref = "<" + str(repackage_task) + ">" + repackage_signing_task_ref = "<" + str(repackage_signing_task) + ">" + + # generate the partner path; we'll send this to beetmover as the "locale" + ftp_platform = get_ftp_platform(platform) + repl_dict = { + "build_number": config.params["build_number"], + "locale": locale, + "partner": partner, + "platform": ftp_platform, + "release_partner_build_number": config.params[ + "release_partner_build_number" + ], + "subpartner": subpartner, + "version": config.params["version"], + } + partner_public = job["partner_public"] + if partner_public: + partner_path_key = "partner-public-path" + else: + partner_path_key = "partner-private-path" + # Kinds can set these to None + if not job[partner_path_key]: + continue + partner_path = job[partner_path_key].format(**repl_dict) + del job["partner_public"] + del job["partner-private-path"] + del job["partner-public-path"] + del job["partner-bucket-scope"] + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_upstream_artifacts( + job, + build_task_ref, + repackage_task_ref, + repackage_signing_task_ref, + platform, + repack_id, + partner_path, + repack_stub_installer, + ), + "partner-public": partner_public, + } + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py b/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py new file mode 100644 index 0000000000..40f5132cc1 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the snap beetmover kind into an actual task description. +""" + + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def leave_snap_repackage_dependencies_only(config, jobs): + for job in jobs: + # XXX: We delete the build dependency because, unlike the other beetmover + # tasks, source doesn't depend on any build task at all. This hack should + # go away when we rewrite beetmover transforms to allow more flexibility in deps + + job["dependencies"] = { + key: value + for key, value in job["dependencies"].items() + if key == "release-snap-repackage" + } + + job["worker"]["upstream-artifacts"] = [ + upstream_artifact + for upstream_artifact in job["worker"]["upstream-artifacts"] + if upstream_artifact["taskId"]["task-reference"] + == "" + ] + + yield job + + +@transforms.add +def set_custom_treeherder_job_name(config, jobs): + for job in jobs: + job.get("treeherder", {})["symbol"] = "Snap(BM)" + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_source.py b/taskcluster/gecko_taskgraph/transforms/beetmover_source.py new file mode 100644 index 0000000000..573f684a98 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_source.py @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover-source task to also append `build` as dependency +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def remove_build_dependency_in_beetmover_source(config, jobs): + for job in jobs: + # XXX: We delete the build dependency because, unlike the other beetmover + # tasks, source doesn't depend on any build task at all. This hack should + # go away when we rewrite beetmover transforms to allow more flexibility in deps + # Essentially, we should use multi_dep for beetmover. + for depname in job["dependencies"]: + if "signing" not in depname: + del job["dependencies"][depname] + break + else: + raise Exception("Can't find build dep in beetmover source!") + + all_upstream_artifacts = job["worker"]["upstream-artifacts"] + upstream_artifacts_without_build = [ + upstream_artifact + for upstream_artifact in all_upstream_artifacts + if upstream_artifact["taskId"]["task-reference"] != f"<{depname}>" + ] + job["worker"]["upstream-artifacts"] = upstream_artifacts_without_build + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py new file mode 100644 index 0000000000..bcaa889903 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py @@ -0,0 +1,137 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform release-beetmover-source-checksums into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +beetmover_checksums_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("locale"): str, + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("attributes"): task_description_schema["attributes"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_checksums_description_schema) + + +@transforms.add +def make_beetmover_checksums_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "BMcss(N)") + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + + label = job["label"] + build_platform = attributes.get("build_platform") + + description = "Beetmover submission of checksums for source file" + + extra = {} + if "devedition" in build_platform: + extra["product"] = "devedition" + else: + extra["product"] = "firefox" + + dependencies = {dep_job.kind: dep_job.label} + for k, v in dep_job.dependencies.items(): + if k.startswith("beetmover"): + dependencies[k] = v + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "extra": extra, + } + + if "shipping-phase" in job: + task["shipping-phase"] = job["shipping-phase"] + + if "shipping-product" in job: + task["shipping-product"] = job["shipping-product"] + + yield task + + +@transforms.add +def make_beetmover_checksums_worker(config, jobs): + for job in jobs: + valid_beetmover_job = len(job["dependencies"]) == 2 + if not valid_beetmover_job: + raise NotImplementedError("Beetmover checksums must have two dependencies.") + + locale = job["attributes"].get("locale") + platform = job["attributes"]["build_platform"] + + refs = { + "beetmover": None, + "signing": None, + } + for dependency in job["dependencies"].keys(): + if dependency.startswith("beetmover"): + refs["beetmover"] = f"<{dependency}>" + else: + refs["signing"] = f"<{dependency}>" + if None in refs.values(): + raise NotImplementedError( + "Beetmover checksums must have a beetmover and signing dependency!" + ) + + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform, locale + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform + ), + } + + if locale: + worker["locale"] = locale + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/bootstrap.py b/taskcluster/gecko_taskgraph/transforms/bootstrap.py new file mode 100644 index 0000000000..e4537cab01 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bootstrap.py @@ -0,0 +1,132 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema +from voluptuous import Any, Optional, Required + +transforms = TransformSequence() + +bootstrap_schema = Schema( + { + # Name of the bootstrap task. + Required("name"): str, + # Name of the docker image. Ideally, we'd also have tasks for mac and windows, + # but we unfortunately don't have workers barebones enough for such testing + # to be satisfactory. + Required("image"): Any(str, {"in-tree": str}), + # Initialization commands. + Required("pre-commands"): [str], + # relative path (from config.path) to the file task was defined in + Optional("job-from"): str, + } +) + + +transforms.add_validate(bootstrap_schema) + + +@transforms.add +def bootstrap_tasks(config, tasks): + for task in tasks: + name = task.pop("name") + image = task.pop("image") + pre_commands = task.pop("pre-commands") + + head_repo = config.params["head_repository"] + head_rev = config.params["head_rev"] + + # Get all the non macos/windows local toolchains (the only ones bootstrap can use), + # and use them as dependencies for the tasks we create, so that they don't start + # before any potential toolchain task that would be triggered on the same push + # (which would lead to bootstrap failing). + dependencies = { + name: name + for name, task in config.kind_dependencies_tasks.items() + if task.attributes.get("local-toolchain") + and not name.startswith(("toolchain-macos", "toolchain-win")) + } + # We don't test the artifacts variants, or js, because they are essentially subsets. + # Mobile and browser are different enough to warrant testing them separately. + for app in ("browser", "mobile_android"): + commands = pre_commands + [ + # MOZ_AUTOMATION changes the behavior, and we want something closer to user + # machines. + "unset MOZ_AUTOMATION", + f"curl -O {head_repo}/raw-file/{head_rev}/python/mozboot/bin/bootstrap.py", + f"python3 bootstrap.py --no-interactive --application-choice {app}", + "cd mozilla-unified", + # After bootstrap, configure should go through without its own auto-bootstrap. + "./mach configure --disable-bootstrap", + # Then a build should go through too. + "./mach build", + ] + + os_specific = [] + if app == "mobile_android": + os_specific += ["android*"] + for os, filename in ( + ("debian", "debian.py"), + ("ubuntu", "debian.py"), + ("fedora", "centosfedora.py"), + ("rockylinux", "centosfedora.py"), + ("opensuse", "opensuse.py"), + ("gentoo", "gentoo.py"), + ("archlinux", "archlinux.py"), + ("voidlinux", "void.py"), + ): + if name.startswith(os): + os_specific.append(filename) + break + else: + raise Exception(f"Missing OS specific bootstrap file for {name}") + + taskdesc = { + "label": f"{config.kind}-{name}-{app}", + "description": f"Bootstrap {app} build on {name}", + "always-target": True, + "scopes": [], + "treeherder": { + "symbol": f"Boot({name})", + "platform": { + "browser": "linux64/opt", + "mobile_android": "android-5-0-armv7/opt", + }[app], + "kind": "other", + "tier": 2, + }, + "run-on-projects": ["trunk"], + "worker-type": "b-linux-gcp", + "worker": { + "implementation": "docker-worker", + "docker-image": image, + "os": "linux", + "env": { + "GECKO_HEAD_REPOSITORY": head_repo, + "GECKO_HEAD_REV": head_rev, + "MACH_NO_TERMINAL_FOOTER": "1", + "MOZ_SCM_LEVEL": config.params["level"], + }, + "command": ["sh", "-c", "-x", "-e", " && ".join(commands)], + "max-run-time": 7200, + }, + "dependencies": dependencies, + "optimization": { + "skip-unless-changed": [ + "python/mozboot/bin/bootstrap.py", + "python/mozboot/mozboot/base.py", + "python/mozboot/mozboot/bootstrap.py", + "python/mozboot/mozboot/linux_common.py", + "python/mozboot/mozboot/mach_commands.py", + "python/mozboot/mozboot/mozconfig.py", + "python/mozboot/mozboot/rust.py", + "python/mozboot/mozboot/sccache.py", + "python/mozboot/mozboot/util.py", + ] + + [f"python/mozboot/mozboot/{f}" for f in os_specific] + }, + } + + yield taskdesc diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py b/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py new file mode 100644 index 0000000000..38f1aa136a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py @@ -0,0 +1,108 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add from parameters.yml into bouncer submission tasks. +""" + + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.transforms.bouncer_submission import craft_bouncer_product_name +from gecko_taskgraph.transforms.bouncer_submission_partners import ( + craft_partner_bouncer_product_name, +) +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.partners import get_partners_to_be_published +from gecko_taskgraph.util.scriptworker import get_release_config + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])}, + ) + resolve_keyed_by( + job, + "scopes", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])}, + ) + resolve_keyed_by( + job, + "bouncer-products-per-alias", + item_name=job["name"], + **{"release-type": config.params["release_type"]}, + ) + if "partner-bouncer-products-per-alias" in job: + resolve_keyed_by( + job, + "partner-bouncer-products-per-alias", + item_name=job["name"], + **{"release-type": config.params["release_type"]}, + ) + + job["worker"]["entries"] = craft_bouncer_entries(config, job) + + del job["bouncer-products-per-alias"] + if "partner-bouncer-products-per-alias" in job: + del job["partner-bouncer-products-per-alias"] + + if job["worker"]["entries"]: + yield job + else: + logger.warn( + 'No bouncer entries defined in bouncer submission task for "{}". \ +Job deleted.'.format( + job["name"] + ) + ) + + +def craft_bouncer_entries(config, job): + release_config = get_release_config(config) + + product = job["shipping-product"] + current_version = release_config["version"] + bouncer_products_per_alias = job["bouncer-products-per-alias"] + + entries = { + bouncer_alias: craft_bouncer_product_name( + product, + bouncer_product, + current_version, + ) + for bouncer_alias, bouncer_product in bouncer_products_per_alias.items() + } + + partner_bouncer_products_per_alias = job.get("partner-bouncer-products-per-alias") + if partner_bouncer_products_per_alias: + partners = get_partners_to_be_published(config) + for partner, sub_config_name, _ in partners: + entries.update( + { + bouncer_alias.replace( + "PARTNER", f"{partner}-{sub_config_name}" + ): craft_partner_bouncer_product_name( + product, + bouncer_product, + current_version, + partner, + sub_config_name, + ) + for bouncer_alias, bouncer_product in partner_bouncer_products_per_alias.items() # NOQA: E501 + } + ) + + return entries diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_check.py b/taskcluster/gecko_taskgraph/transforms/bouncer_check.py new file mode 100644 index 0000000000..9261ef9463 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bouncer_check.py @@ -0,0 +1,111 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import json +import logging +from pipes import quote as shell_quote + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def add_command(config, jobs): + for job in jobs: + command = [ + "python", + "testing/mozharness/scripts/release/bouncer_check.py", + ] + job["run"].update( + { + "using": "mach", + "mach": command, + } + ) + yield job + + +@transforms.add +def add_previous_versions(config, jobs): + release_config = get_release_config(config) + if not release_config.get("partial_versions"): + for job in jobs: + yield job + else: + extra_params = [] + for partial in release_config["partial_versions"].split(","): + extra_params.append( + "--previous-version={}".format(partial.split("build")[0].strip()) + ) + + for job in jobs: + job["run"]["mach"].extend(extra_params) + yield job + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by project, etc.""" + fields = [ + "run.config", + "run.product-field", + "run.extra-config", + ] + + release_config = get_release_config(config) + version = release_config["version"] + + for job in jobs: + for field in fields: + resolve_keyed_by( + item=job, + field=field, + item_name=job["name"], + **{ + "project": config.params["project"], + "release-level": release_level(config.params["project"]), + "release-type": config.params["release_type"], + }, + ) + + for cfg in job["run"]["config"]: + job["run"]["mach"].extend(["--config", cfg]) + + if config.kind == "cron-bouncer-check": + job["run"]["mach"].extend( + [ + "--product-field={}".format(job["run"]["product-field"]), + "--products-url={}".format(job["run"]["products-url"]), + ] + ) + del job["run"]["product-field"] + del job["run"]["products-url"] + elif config.kind == "release-bouncer-check": + job["run"]["mach"].append(f"--version={version}") + + del job["run"]["config"] + + if "extra-config" in job["run"]: + env = job["worker"].setdefault("env", {}) + env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps( + job["run"]["extra-config"], sort_keys=True + ) + del job["run"]["extra-config"] + + yield job + + +@transforms.add +def command_to_string(config, jobs): + """Convert command to string to make it work properly with run-task""" + for job in jobs: + job["run"]["mach"] = " ".join(map(shell_quote, job["run"]["mach"])) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py b/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py new file mode 100644 index 0000000000..e755b73c27 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +logger = logging.getLogger(__name__) + + +transforms = TransformSequence() + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + resolve_keyed_by( + job, "worker-type", item_name=job["name"], project=config.params["project"] + ) + resolve_keyed_by( + job, "scopes", item_name=job["name"], project=config.params["project"] + ) + resolve_keyed_by( + job, + "bouncer-products", + item_name=job["name"], + project=config.params["project"], + ) + + job["worker"]["bouncer-products"] = job["bouncer-products"] + + del job["bouncer-products"] + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py b/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py new file mode 100644 index 0000000000..d6320a9312 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py @@ -0,0 +1,335 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add from parameters.yml into bouncer submission tasks. +""" + + +import copy +import logging + +import attr +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.transforms.l10n import parse_locales_file +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +logger = logging.getLogger(__name__) + + +FTP_PLATFORMS_PER_BOUNCER_PLATFORM = { + "linux": "linux-i686", + "linux64": "linux-x86_64", + "osx": "mac", + "win": "win32", + "win64": "win64", + "win64-aarch64": "win64-aarch64", +} + +# :lang is interpolated by bouncer at runtime +CANDIDATES_PATH_TEMPLATE = "/{ftp_product}/candidates/{version}-candidates/build{build_number}/\ +{update_folder}{ftp_platform}/:lang/{file}" +RELEASES_PATH_TEMPLATE = "/{ftp_product}/releases/{version}/\ +{update_folder}{ftp_platform}/:lang/{file}" + + +CONFIG_PER_BOUNCER_PRODUCT = { + "complete-mar": { + "name_postfix": "-Complete", + "path_template": RELEASES_PATH_TEMPLATE, + "file_names": { + "default": "{product}-{version}.complete.mar", + }, + }, + "complete-mar-candidates": { + "name_postfix": "build{build_number}-Complete", + "path_template": CANDIDATES_PATH_TEMPLATE, + "file_names": { + "default": "{product}-{version}.complete.mar", + }, + }, + "installer": { + "path_template": RELEASES_PATH_TEMPLATE, + "file_names": { + "linux": "{product}-{version}.tar.bz2", + "linux64": "{product}-{version}.tar.bz2", + "osx": "{pretty_product}%20{version}.dmg", + "win": "{pretty_product}%20Setup%20{version}.exe", + "win64": "{pretty_product}%20Setup%20{version}.exe", + "win64-aarch64": "{pretty_product}%20Setup%20{version}.exe", + }, + }, + "partial-mar": { + "name_postfix": "-Partial-{previous_version}", + "path_template": RELEASES_PATH_TEMPLATE, + "file_names": { + "default": "{product}-{previous_version}-{version}.partial.mar", + }, + }, + "partial-mar-candidates": { + "name_postfix": "build{build_number}-Partial-{previous_version}build{previous_build}", + "path_template": CANDIDATES_PATH_TEMPLATE, + "file_names": { + "default": "{product}-{previous_version}-{version}.partial.mar", + }, + }, + "stub-installer": { + "name_postfix": "-stub", + # We currently have a sole win32 stub installer that is to be used + # in all windows platforms to toggle between full installers + "path_template": RELEASES_PATH_TEMPLATE.replace("{ftp_platform}", "win32"), + "file_names": { + "win": "{pretty_product}%20Installer.exe", + "win64": "{pretty_product}%20Installer.exe", + "win64-aarch64": "{pretty_product}%20Installer.exe", + }, + }, + "msi": { + "name_postfix": "-msi-SSL", + "path_template": RELEASES_PATH_TEMPLATE, + "file_names": { + "win": "{pretty_product}%20Setup%20{version}.msi", + "win64": "{pretty_product}%20Setup%20{version}.msi", + }, + }, + "msix": { + "name_postfix": "-msix-SSL", + "path_template": RELEASES_PATH_TEMPLATE.replace(":lang", "multi"), + "file_names": { + "win": "{pretty_product}%20Setup%20{version}.msix", + "win64": "{pretty_product}%20Setup%20{version}.msix", + }, + }, + "pkg": { + "name_postfix": "-pkg-SSL", + "path_template": RELEASES_PATH_TEMPLATE, + "file_names": { + "osx": "{pretty_product}%20{version}.pkg", + }, + }, + "langpack": { + "name_postfix": "-langpack-SSL", + "path_template": RELEASES_PATH_TEMPLATE.replace(":lang", "xpi"), + "file_names": {"default": ":lang.xpi"}, + }, +} +CONFIG_PER_BOUNCER_PRODUCT["installer-ssl"] = copy.deepcopy( + CONFIG_PER_BOUNCER_PRODUCT["installer"] +) +CONFIG_PER_BOUNCER_PRODUCT["installer-ssl"]["name_postfix"] = "-SSL" + +transforms = TransformSequence() + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + resolve_keyed_by( + job, + "scopes", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + resolve_keyed_by( + job, + "bouncer-products", + item_name=job["name"], + **{"release-type": config.params["release_type"]} + ) + + # No need to filter out ja-JP-mac, we need to upload both; but we do + # need to filter out the platforms they come with + all_locales = sorted( + locale + for locale in parse_locales_file(job["locales-file"]).keys() + if locale not in ("linux", "win32", "osx") + ) + + job["worker"]["locales"] = all_locales + job["worker"]["entries"] = craft_bouncer_entries(config, job) + + del job["locales-file"] + del job["bouncer-platforms"] + del job["bouncer-products"] + + if job["worker"]["entries"]: + yield job + else: + logger.warn( + 'No bouncer entries defined in bouncer submission task for "{}". \ +Job deleted.'.format( + job["name"] + ) + ) + + +def craft_bouncer_entries(config, job): + release_config = get_release_config(config) + + product = job["shipping-product"] + bouncer_platforms = job["bouncer-platforms"] + + current_version = release_config["version"] + current_build_number = release_config["build_number"] + + bouncer_products = job["bouncer-products"] + previous_versions_string = release_config.get("partial_versions", None) + if previous_versions_string: + previous_versions = previous_versions_string.split(", ") + else: + logger.warn( + 'No partials defined! Bouncer submission task won\'t send any \ +partial-related entry for "{}"'.format( + job["name"] + ) + ) + bouncer_products = [ + bouncer_product + for bouncer_product in bouncer_products + if "partial" not in bouncer_product + ] + previous_versions = [None] + + project = config.params["project"] + + return { + craft_bouncer_product_name( + product, + bouncer_product, + current_version, + current_build_number, + previous_version, + ): { + "options": { + "add_locales": False if "msix" in bouncer_product else True, + "ssl_only": craft_ssl_only(bouncer_product, project), + }, + "paths_per_bouncer_platform": craft_paths_per_bouncer_platform( + product, + bouncer_product, + bouncer_platforms, + current_version, + current_build_number, + previous_version, + ), + } + for bouncer_product in bouncer_products + for previous_version in previous_versions + } + + +def craft_paths_per_bouncer_platform( + product, + bouncer_product, + bouncer_platforms, + current_version, + current_build_number, + previous_version=None, +): + paths_per_bouncer_platform = {} + for bouncer_platform in bouncer_platforms: + file_names_per_platform = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product][ + "file_names" + ] + file_name_template = file_names_per_platform.get( + bouncer_platform, file_names_per_platform.get("default", None) + ) + if not file_name_template: + # Some bouncer product like stub-installer are only meant to be on Windows. + # Thus no default value is defined there + continue + + file_name_product = _craft_filename_product(product) + file_name = file_name_template.format( + product=file_name_product, + pretty_product=file_name_product.capitalize(), + version=current_version, + previous_version=split_build_data(previous_version)[0], + ) + + path_template = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]["path_template"] + file_relative_location = path_template.format( + ftp_product=_craft_ftp_product(product), + version=current_version, + build_number=current_build_number, + update_folder="update/" if "-mar" in bouncer_product else "", + ftp_platform=FTP_PLATFORMS_PER_BOUNCER_PLATFORM[bouncer_platform], + file=file_name, + ) + + paths_per_bouncer_platform[bouncer_platform] = file_relative_location + + return paths_per_bouncer_platform + + +def _craft_ftp_product(product): + return product.lower() + + +def _craft_filename_product(product): + return "firefox" if product == "devedition" else product + + +@attr.s +class InvalidSubstitution: + error = attr.ib(type=str) + + def __str__(self): + raise Exception("Partial is being processed, but no previous version defined.") + + +def craft_bouncer_product_name( + product, + bouncer_product, + current_version, + current_build_number=None, + previous_version=None, +): + if previous_version is None: + previous_version = previous_build = InvalidSubstitution( + "Partial is being processed, but no previous version defined." + ) + else: + previous_version, previous_build = split_build_data(previous_version) + postfix = ( + CONFIG_PER_BOUNCER_PRODUCT[bouncer_product] + .get("name_postfix", "") + .format( + build_number=current_build_number, + previous_version=previous_version, + previous_build=previous_build, + ) + ) + + return "{product}-{version}{postfix}".format( + product=product.capitalize(), version=current_version, postfix=postfix + ) + + +def craft_ssl_only(bouncer_product, project): + # XXX ESR is the only channel where we force serve the installer over SSL + if "-esr" in project and bouncer_product == "installer": + return True + + return bouncer_product not in ( + "complete-mar", + "complete-mar-candidates", + "installer", + "partial-mar", + "partial-mar-candidates", + ) + + +def split_build_data(version): + if version and "build" in version: + return version.split("build") + return version, InvalidSubstitution("k") diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py b/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py new file mode 100644 index 0000000000..0f298cb120 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py @@ -0,0 +1,193 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add from parameters.yml into bouncer submission tasks. +""" + + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.transforms.bouncer_submission import ( + CONFIG_PER_BOUNCER_PRODUCT as CONFIG_PER_BOUNCER_PRODUCT_VANILLA, +) +from gecko_taskgraph.transforms.bouncer_submission import ( + FTP_PLATFORMS_PER_BOUNCER_PLATFORM, + _craft_filename_product, + _craft_ftp_product, +) +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.partners import ( + check_if_partners_enabled, + get_partners_to_be_published, +) +from gecko_taskgraph.util.scriptworker import get_release_config + +logger = logging.getLogger(__name__) + + +PARTNER_PLATFORMS_TO_BOUNCER = { + "linux-shippable": "linux", + "linux64-shippable": "linux64", + "macosx64-shippable": "osx", + "win32-shippable": "win", + "win64-shippable": "win64", + "win64-aarch64-shippable": "win64-aarch64", +} + +# :lang is interpolated by bouncer at runtime +RELEASES_PARTNERS_PATH_TEMPLATE = "/{ftp_product}/releases/partners/{partner}/{sub_config}/\ +{version}/{ftp_platform}/:lang/{file}" + +CONFIG_PER_BOUNCER_PRODUCT = { + "installer": { + "name_postfix": "-{partner}-{sub_config}", + "path_template": RELEASES_PARTNERS_PATH_TEMPLATE, + "file_names": CONFIG_PER_BOUNCER_PRODUCT_VANILLA["installer"]["file_names"], + }, + "stub-installer": { + "name_postfix": "-{partner}-{sub_config}-stub", + # We currently have a sole win32 stub installer that is to be used + # in all windows platforms to toggle between full installers + "path_template": RELEASES_PARTNERS_PATH_TEMPLATE.replace( + "{ftp_platform}", "win32" + ), + "file_names": CONFIG_PER_BOUNCER_PRODUCT_VANILLA["stub-installer"][ + "file_names" + ], + }, +} + +transforms = TransformSequence() +transforms.add(check_if_partners_enabled) + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + resolve_keyed_by( + job, + "scopes", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + resolve_keyed_by( + job, + "bouncer-products", + item_name=job["name"], + **{"release-type": config.params["release_type"]} + ) + + # the schema requires at least one locale but this will not be used + job["worker"]["locales"] = ["fake"] + job["worker"]["entries"] = craft_bouncer_entries(config, job) + + del job["locales-file"] + del job["bouncer-platforms"] + del job["bouncer-products"] + + if job["worker"]["entries"]: + yield job + + +def craft_bouncer_entries(config, job): + release_config = get_release_config(config) + + product = job["shipping-product"] + current_version = release_config["version"] + bouncer_products = job["bouncer-products"] + + partners = get_partners_to_be_published(config) + entries = {} + for partner, sub_config_name, platforms in partners: + platforms = [PARTNER_PLATFORMS_TO_BOUNCER[p] for p in platforms] + entries.update( + { + craft_partner_bouncer_product_name( + product, bouncer_product, current_version, partner, sub_config_name + ): { + "options": { + "add_locales": False, # partners may use different sets of locales + "ssl_only": craft_ssl_only(bouncer_product), + }, + "paths_per_bouncer_platform": craft_paths_per_bouncer_platform( + product, + bouncer_product, + platforms, + current_version, + partner, + sub_config_name, + ), + } + for bouncer_product in bouncer_products + } + ) + return entries + + +def craft_paths_per_bouncer_platform( + product, bouncer_product, bouncer_platforms, current_version, partner, sub_config +): + paths_per_bouncer_platform = {} + for bouncer_platform in bouncer_platforms: + file_names_per_platform = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product][ + "file_names" + ] + file_name_template = file_names_per_platform.get( + bouncer_platform, file_names_per_platform.get("default", None) + ) + if not file_name_template: + # Some bouncer product like stub-installer are only meant to be on Windows. + # Thus no default value is defined there + continue + + file_name_product = _craft_filename_product(product) + file_name = file_name_template.format( + product=file_name_product, + pretty_product=file_name_product.capitalize(), + version=current_version, + ) + + path_template = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]["path_template"] + file_relative_location = path_template.format( + ftp_product=_craft_ftp_product(product), + version=current_version, + ftp_platform=FTP_PLATFORMS_PER_BOUNCER_PLATFORM[bouncer_platform], + partner=partner, + sub_config=sub_config, + file=file_name, + ) + + paths_per_bouncer_platform[bouncer_platform] = file_relative_location + + return paths_per_bouncer_platform + + +def craft_partner_bouncer_product_name( + product, bouncer_product, current_version, partner, sub_config +): + postfix = ( + CONFIG_PER_BOUNCER_PRODUCT[bouncer_product] + .get("name_postfix", "") + .format( + partner=partner, + sub_config=sub_config, + ) + ) + + return "{product}-{version}{postfix}".format( + product=product.capitalize(), version=current_version, postfix=postfix + ) + + +def craft_ssl_only(bouncer_product): + return bouncer_product == "stub-installer" diff --git a/taskcluster/gecko_taskgraph/transforms/build.py b/taskcluster/gecko_taskgraph/transforms/build.py new file mode 100644 index 0000000000..94a4d71b0b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build.py @@ -0,0 +1,238 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Apply some defaults and minor modifications to the jobs defined in the build +kind. +""" +import logging + +from mozbuild.artifact_builds import JOB_CHOICES as ARTIFACT_JOBS +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by +from taskgraph.util.treeherder import add_suffix + +from gecko_taskgraph.util.attributes import RELEASE_PROJECTS, is_try, release_level +from gecko_taskgraph.util.workertypes import worker_type_implementation + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def set_defaults(config, jobs): + """Set defaults, including those that differ per worker implementation""" + for job in jobs: + job["treeherder"].setdefault("kind", "build") + job["treeherder"].setdefault("tier", 1) + _, worker_os = worker_type_implementation( + config.graph_config, config.params, job["worker-type"] + ) + worker = job.setdefault("worker", {}) + worker.setdefault("env", {}) + worker["chain-of-trust"] = True + if worker_os == "linux": + worker.setdefault("docker-image", {"in-tree": "debian11-amd64-build"}) + + yield job + + +@transforms.add +def stub_installer(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "stub-installer", + item_name=job["name"], + project=config.params["project"], + **{ + "release-type": config.params["release_type"], + }, + ) + job.setdefault("attributes", {}) + if job.get("stub-installer"): + job["attributes"]["stub-installer"] = job["stub-installer"] + job["worker"]["env"].update({"USE_STUB_INSTALLER": "1"}) + if "stub-installer" in job: + del job["stub-installer"] + yield job + + +@transforms.add +def resolve_shipping_product(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "shipping-product", + item_name=job["name"], + **{ + "release-type": config.params["release_type"], + }, + ) + yield job + + +@transforms.add +def update_channel(config, jobs): + keys = [ + "run.update-channel", + "run.mar-channel-id", + "run.accepted-mar-channel-ids", + ] + for job in jobs: + job["worker"].setdefault("env", {}) + for key in keys: + resolve_keyed_by( + job, + key, + item_name=job["name"], + **{ + "project": config.params["project"], + "release-type": config.params["release_type"], + }, + ) + update_channel = job["run"].pop("update-channel", None) + if update_channel: + job["run"].setdefault("extra-config", {})["update_channel"] = update_channel + job["attributes"]["update-channel"] = update_channel + mar_channel_id = job["run"].pop("mar-channel-id", None) + if mar_channel_id: + job["attributes"]["mar-channel-id"] = mar_channel_id + job["worker"]["env"]["MAR_CHANNEL_ID"] = mar_channel_id + accepted_mar_channel_ids = job["run"].pop("accepted-mar-channel-ids", None) + if accepted_mar_channel_ids: + job["attributes"]["accepted-mar-channel-ids"] = accepted_mar_channel_ids + job["worker"]["env"]["ACCEPTED_MAR_CHANNEL_IDS"] = accepted_mar_channel_ids + + yield job + + +@transforms.add +def mozconfig(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "run.mozconfig-variant", + item_name=job["name"], + **{ + "release-type": config.params["release_type"], + }, + ) + mozconfig_variant = job["run"].pop("mozconfig-variant", None) + if mozconfig_variant: + job["run"].setdefault("extra-config", {})[ + "mozconfig_variant" + ] = mozconfig_variant + yield job + + +@transforms.add +def use_artifact(config, jobs): + if is_try(config.params): + use_artifact = config.params["try_task_config"].get( + "use-artifact-builds", False + ) + else: + use_artifact = False + for job in jobs: + if ( + config.kind == "build" + and use_artifact + and job.get("index", {}).get("job-name") in ARTIFACT_JOBS + # If tests aren't packaged, then we are not able to rebuild all the packages + and job["worker"]["env"].get("MOZ_AUTOMATION_PACKAGE_TESTS") == "1" + ): + job["treeherder"]["symbol"] = add_suffix(job["treeherder"]["symbol"], "a") + job["worker"]["env"]["USE_ARTIFACT"] = "1" + job["attributes"]["artifact-build"] = True + yield job + + +@transforms.add +def use_profile_data(config, jobs): + for job in jobs: + use_pgo = job.pop("use-pgo", False) + disable_pgo = config.params["try_task_config"].get("disable-pgo", False) + artifact_build = job["attributes"].get("artifact-build") + if not use_pgo or disable_pgo or artifact_build: + yield job + continue + + # If use_pgo is True, the task uses the generate-profile task of the + # same name. Otherwise a task can specify a specific generate-profile + # task to use in the use_pgo field. + if use_pgo is True: + name = job["name"] + else: + name = use_pgo + dependencies = f"generate-profile-{name}" + job.setdefault("dependencies", {})["generate-profile"] = dependencies + job.setdefault("fetches", {})["generate-profile"] = ["profdata.tar.xz"] + job["worker"]["env"].update({"TASKCLUSTER_PGO_PROFILE_USE": "1"}) + + _, worker_os = worker_type_implementation( + config.graph_config, config.params, job["worker-type"] + ) + if worker_os == "linux": + # LTO linkage needs more open files than the default from run-task. + job["worker"]["env"].update({"MOZ_LIMIT_NOFILE": "8192"}) + + if job.get("use-sccache"): + raise Exception( + "use-sccache is incompatible with use-pgo in {}".format(job["name"]) + ) + + yield job + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "use-sccache", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])}, + ) + yield job + + +@transforms.add +def enable_full_crashsymbols(config, jobs): + """Enable full crashsymbols on jobs with + 'enable-full-crashsymbols' set to True and on release branches, or + on try""" + branches = RELEASE_PROJECTS | { + "toolchains", + "try", + } + for job in jobs: + enable_full_crashsymbols = job["attributes"].get("enable-full-crashsymbols") + if enable_full_crashsymbols and config.params["project"] in branches: + logger.debug("Enabling full symbol generation for %s", job["name"]) + job["worker"]["env"]["MOZ_ENABLE_FULL_SYMBOLS"] = "1" + else: + logger.debug("Disabling full symbol generation for %s", job["name"]) + job["attributes"].pop("enable-full-crashsymbols", None) + yield job + + +@transforms.add +def set_expiry(config, jobs): + for job in jobs: + attributes = job["attributes"] + if ( + "shippable" in attributes + and attributes["shippable"] + and config.kind + in { + "build", + } + ): + expiration_policy = "long" + else: + expiration_policy = "medium" + + job["expiration-policy"] = expiration_policy + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/build_attrs.py b/taskcluster/gecko_taskgraph/transforms/build_attrs.py new file mode 100644 index 0000000000..9cda71718a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build_attrs.py @@ -0,0 +1,50 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.platforms import platform_family + +transforms = TransformSequence() + + +@transforms.add +def set_build_attributes(config, jobs): + """ + Set the build_platform and build_type attributes based on the job name. + Although not all jobs using this transform are actual "builds", the try + option syntax treats them as such, and this arranges the attributes + appropriately for that purpose. + """ + for job in jobs: + build_platform, build_type = job["name"].split("/") + + # pgo builds are represented as a different platform, type opt + if build_type == "pgo": + build_platform = build_platform + "-pgo" + build_type = "opt" + + attributes = job.setdefault("attributes", {}) + attributes.update( + { + "build_platform": build_platform, + "build_type": build_type, + } + ) + + yield job + + +@transforms.add +def set_schedules_optimization(config, jobs): + """Set the `skip-unless-affected` optimization based on the build platform.""" + for job in jobs: + # don't add skip-unless-schedules if there's already a when defined + if "when" in job: + yield job + continue + + build_platform = job["attributes"]["build_platform"] + job.setdefault("optimization", {"build": [platform_family(build_platform)]}) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py b/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py new file mode 100644 index 0000000000..61df2111d2 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py @@ -0,0 +1,78 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import copy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_prefix + +from gecko_taskgraph.util.declarative_artifacts import get_geckoview_upstream_artifacts + +transforms = TransformSequence() + + +MOZ_ANDROID_FAT_AAR_ENV_MAP = { + "android-arm-shippable": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A", + "android-arm-shippable-lite": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A", + "android-aarch64-shippable": "MOZ_ANDROID_FAT_AAR_ARM64_V8A", + "android-aarch64-shippable-lite": "MOZ_ANDROID_FAT_AAR_ARM64_V8A", + "android-x86-shippable": "MOZ_ANDROID_FAT_AAR_X86", + "android-x86-shippable-lite": "MOZ_ANDROID_FAT_AAR_X86", + "android-x86_64-shippable": "MOZ_ANDROID_FAT_AAR_X86_64", + "android-x86_64-shippable-lite": "MOZ_ANDROID_FAT_AAR_X86_64", + "android-arm-opt": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A", + "android-aarch64-opt": "MOZ_ANDROID_FAT_AAR_ARM64_V8A", + "android-x86-opt": "MOZ_ANDROID_FAT_AAR_X86", + "android-x86_64-opt": "MOZ_ANDROID_FAT_AAR_X86_64", +} + + +@transforms.add +def set_fetches_and_locations(config, jobs): + """Set defaults, including those that differ per worker implementation""" + for job in jobs: + dependencies = copy.deepcopy(job["dependencies"]) + + for platform, label in dependencies.items(): + job["dependencies"] = {"build": label} + + aar_location = _get_aar_location(config, job, platform) + prefix = get_artifact_prefix(job) + if not prefix.endswith("/"): + prefix = prefix + "/" + if aar_location.startswith(prefix): + aar_location = aar_location[len(prefix) :] + + job.setdefault("fetches", {}).setdefault(platform, []).append( + { + "artifact": aar_location, + "extract": False, + } + ) + + aar_file_name = aar_location.split("/")[-1] + env_var = MOZ_ANDROID_FAT_AAR_ENV_MAP[platform] + job["worker"]["env"][env_var] = aar_file_name + + job["dependencies"] = dependencies + + yield job + + +def _get_aar_location(config, job, platform): + artifacts_locations = [] + + for package in job["attributes"]["maven_packages"]: + artifacts_locations += get_geckoview_upstream_artifacts( + config, job, package, platform=platform + ) + + aar_locations = [ + path for path in artifacts_locations[0]["paths"] if path.endswith(".aar") + ] + if len(aar_locations) != 1: + raise ValueError(f"Only a single AAR must be given. Got: {aar_locations}") + + return aar_locations[0] diff --git a/taskcluster/gecko_taskgraph/transforms/build_lints.py b/taskcluster/gecko_taskgraph/transforms/build_lints.py new file mode 100644 index 0000000000..d1bd276059 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build_lints.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Apply some defaults and minor modifications to the jobs defined in the build +kind. +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def check_mozharness_perfherder_options(config, jobs): + """Verify that multiple jobs don't use the same perfherder bucket. + + Build jobs record perfherder metrics by default. Perfherder metrics go + to a bucket derived by the platform by default. The name can further be + customized by the presence of "extra options" either defined in + mozharness sub-configs or in an environment variable. + + This linter tries to verify that no 2 jobs will send Perfherder metrics + to the same bucket by looking for jobs not defining extra options when + their platform or mozharness config are otherwise similar. + """ + + SEEN_CONFIGS = {} + + for job in jobs: + if job["run"]["using"] != "mozharness": + yield job + continue + + worker = job.get("worker", {}) + + platform = job["treeherder"]["platform"] + primary_config = job["run"]["config"][0] + options = worker.get("env", {}).get("PERFHERDER_EXTRA_OPTIONS") + shippable = job.get("attributes", {}).get("shippable", False) + + # This isn't strictly necessary. But the Perfherder code looking at the + # values we care about is only active on builds. So it doesn't make + # sense to run this linter elsewhere. + assert primary_config.startswith("builds/") + + key = (platform, primary_config, shippable, options) + + if key in SEEN_CONFIGS: + raise Exception( + "Non-unique Perfherder data collection for jobs %s-%s and %s: " + "set PERFHERDER_EXTRA_OPTIONS in worker environment variables " + "or use different mozconfigs" + % (config.kind, job["name"], SEEN_CONFIGS[key]) + ) + + SEEN_CONFIGS[key] = "{}-{}".format(config.kind, job["name"]) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/build_signing.py b/taskcluster/gecko_taskgraph/transforms/build_signing.py new file mode 100644 index 0000000000..36f39f0b56 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/build_signing.py @@ -0,0 +1,71 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the signing task into an actual task description. +""" + + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.signed_artifacts import ( + generate_specifications_of_artifacts_to_sign, +) + +transforms = TransformSequence() + + +@transforms.add +def add_signed_routes(config, jobs): + """Add routes corresponding to the routes of the build task + this corresponds to, with .signed inserted, for all gecko.v2 routes""" + + for job in jobs: + dep_job = job["primary-dependency"] + enable_signing_routes = job.pop("enable-signing-routes", True) + + job["routes"] = [] + if dep_job.attributes.get("shippable") and enable_signing_routes: + for dep_route in dep_job.task.get("routes", []): + if not dep_route.startswith("index.gecko.v2"): + continue + branch = dep_route.split(".")[3] + rest = ".".join(dep_route.split(".")[4:]) + job["routes"].append(f"index.gecko.v2.{branch}.signed.{rest}") + + yield job + + +@transforms.add +def define_upstream_artifacts(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + upstream_artifact_task = job.pop("upstream-artifact-task", dep_job) + + job["attributes"] = copy_attributes_from_dependent_job(dep_job) + + artifacts_specifications = generate_specifications_of_artifacts_to_sign( + config, + job, + keep_locale_template=False, + kind=config.kind, + dep_kind=upstream_artifact_task.kind, + ) + + task_ref = f"<{upstream_artifact_task.kind}>" + task_type = "build" + if "notarization" in upstream_artifact_task.kind: + task_type = "scriptworker" + + job["upstream-artifacts"] = [ + { + "taskId": {"task-reference": task_ref}, + "taskType": task_type, + "paths": spec["artifacts"], + "formats": spec["formats"], + } + for spec in artifacts_specifications + ] + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/cached_tasks.py b/taskcluster/gecko_taskgraph/transforms/cached_tasks.py new file mode 100644 index 0000000000..bb7e6e6778 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/cached_tasks.py @@ -0,0 +1,101 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from collections import deque + +import taskgraph +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.cached_tasks import add_optimization + +transforms = TransformSequence() + + +def order_tasks(config, tasks): + """Iterate image tasks in an order where parent tasks come first.""" + kind_prefix = config.kind + "-" + + pending = deque(tasks) + task_labels = {task["label"] for task in pending} + emitted = set() + while True: + try: + task = pending.popleft() + except IndexError: + break + parents = { + task + for task in task.get("dependencies", {}).values() + if task.startswith(kind_prefix) + } + if parents and not emitted.issuperset(parents & task_labels): + pending.append(task) + continue + emitted.add(task["label"]) + yield task + + +def format_task_digest(cached_task): + return "/".join( + [ + cached_task["type"], + cached_task["name"], + cached_task["digest"], + ] + ) + + +@transforms.add +def cache_task(config, tasks): + if taskgraph.fast: + for task in tasks: + yield task + return + + digests = {} + for task in config.kind_dependencies_tasks.values(): + if ( + "cached_task" in task.attributes + and task.attributes["cached_task"] is not False + ): + digests[task.label] = format_task_digest(task.attributes["cached_task"]) + + for task in order_tasks(config, tasks): + cache = task.pop("cache", None) + if cache is None: + yield task + continue + + dependency_digests = [] + for p in task.get("dependencies", {}).values(): + if p in digests: + dependency_digests.append(digests[p]) + elif config.params["project"] == "toolchains": + # The toolchains repository uses non-cached toolchain artifacts. Allow + # tasks to use them. + cache = None + break + else: + raise Exception( + "Cached task {} has uncached parent task: {}".format( + task["label"], p + ) + ) + + if cache is None: + yield task + continue + + digest_data = cache["digest-data"] + sorted(dependency_digests) + add_optimization( + config, + task, + cache_type=cache["type"], + cache_name=cache["name"], + digest_data=digest_data, + ) + digests[task["label"]] = format_task_digest(task["attributes"]["cached_task"]) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/chunk_partners.py b/taskcluster/gecko_taskgraph/transforms/chunk_partners.py new file mode 100644 index 0000000000..ed74cc6232 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/chunk_partners.py @@ -0,0 +1,75 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Chunk the partner repack tasks by subpartner and locale +""" + + +import copy + +from mozbuild.chunkify import chunkify +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.partners import ( + apply_partner_priority, + get_repack_ids_by_platform, +) + +transforms = TransformSequence() +transforms.add(apply_partner_priority) + + +@transforms.add +def chunk_partners(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + build_platform = dep_job.attributes["build_platform"] + repack_id = dep_job.task.get("extra", {}).get("repack_id") + repack_ids = dep_job.task.get("extra", {}).get("repack_ids") + copy_repack_ids = job.pop("copy-repack-ids", False) + + if copy_repack_ids: + assert repack_ids, "dep_job {} doesn't have repack_ids!".format( + dep_job.label + ) + job.setdefault("extra", {})["repack_ids"] = repack_ids + yield job + # first downstream of the repack task, no chunking or fanout has been done yet + elif not any([repack_id, repack_ids]): + platform_repack_ids = get_repack_ids_by_platform(config, build_platform) + # we chunk mac signing + if config.kind in ( + "release-partner-repack-signing", + "release-eme-free-repack-signing", + "release-eme-free-repack-mac-signing", + "release-partner-repack-mac-signing", + ): + repacks_per_chunk = job.get("repacks-per-chunk") + chunks, remainder = divmod(len(platform_repack_ids), repacks_per_chunk) + if remainder: + chunks = int(chunks + 1) + for this_chunk in range(1, chunks + 1): + chunk = chunkify(platform_repack_ids, this_chunk, chunks) + partner_job = copy.deepcopy(job) + partner_job.setdefault("extra", {}).setdefault("repack_ids", chunk) + partner_job["extra"]["repack_suffix"] = str(this_chunk) + yield partner_job + # linux and windows we fan out immediately to one task per partner-sub_partner-locale + else: + for repack_id in platform_repack_ids: + partner_job = copy.deepcopy(job) # don't overwrite dict values here + partner_job.setdefault("extra", {}) + partner_job["extra"]["repack_id"] = repack_id + yield partner_job + # fan out chunked mac signing for repackage + elif repack_ids: + for repack_id in repack_ids: + partner_job = copy.deepcopy(job) + partner_job.setdefault("extra", {}).setdefault("repack_id", repack_id) + yield partner_job + # otherwise we've fully fanned out already, continue by passing repack_id on + else: + partner_job = copy.deepcopy(job) + partner_job.setdefault("extra", {}).setdefault("repack_id", repack_id) + yield partner_job diff --git a/taskcluster/gecko_taskgraph/transforms/code_review.py b/taskcluster/gecko_taskgraph/transforms/code_review.py new file mode 100644 index 0000000000..d644e17d0e --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/code_review.py @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add soft dependencies and configuration to code-review tasks. +""" + + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_dependencies(config, jobs): + for job in jobs: + job.setdefault("soft-dependencies", []) + job["soft-dependencies"] += [ + dep_task.label + for dep_task in config.kind_dependencies_tasks.values() + if dep_task.attributes.get("code-review") is True + ] + yield job + + +@transforms.add +def add_phabricator_config(config, jobs): + for job in jobs: + diff = config.params.get("phabricator_diff") + if diff is not None: + code_review = job.setdefault("extra", {}).setdefault("code-review", {}) + code_review["phabricator-diff"] = diff + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/condprof.py b/taskcluster/gecko_taskgraph/transforms/condprof.py new file mode 100644 index 0000000000..34cf7e7dd3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/condprof.py @@ -0,0 +1,85 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This transform constructs tasks generate conditioned profiles from +the condprof/kind.yml file +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema +from voluptuous import Optional + +from gecko_taskgraph.transforms.job import job_description_schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.copy_task import copy_task + +diff_description_schema = Schema( + { + # default is settled, but add 'full' to get both + Optional("scenarios"): [str], + Optional("description"): task_description_schema["description"], + Optional("dependencies"): task_description_schema["dependencies"], + Optional("fetches"): job_description_schema["fetches"], + Optional("index"): task_description_schema["index"], + Optional("job-from"): str, + Optional("name"): str, + Optional("run"): job_description_schema["run"], + Optional("run-on-projects"): task_description_schema["run-on-projects"], + Optional("scopes"): task_description_schema["scopes"], + Optional("treeherder"): task_description_schema["treeherder"], + Optional("worker"): job_description_schema["worker"], + Optional("worker-type"): task_description_schema["worker-type"], + } +) + +transforms = TransformSequence() +transforms.add_validate(diff_description_schema) + + +@transforms.add +def generate_scenarios(config, tasks): + for task in tasks: + cmds = task["run"]["command"] + symbol = task["treeherder"]["symbol"].split(")")[0] + index = task["index"] + jobname = index["job-name"] + label = task["name"] + run_as_root = task["run"].get("run-as-root", False) + + for scenario in set(task["scenarios"]): + extra_args = "" + if scenario == "settled": + extra_args = " --force-new " + + tcmd = cmds.replace("${EXTRA_ARGS}", extra_args) + tcmd = tcmd.replace("${SCENARIO}", scenario) + + index["job-name"] = "%s-%s" % (jobname, scenario) + + taskdesc = { + "name": "%s-%s" % (label, scenario), + "description": task["description"], + "treeherder": { + "symbol": "%s-%s)" % (symbol, scenario), + "platform": task["treeherder"]["platform"], + "kind": task["treeherder"]["kind"], + "tier": task["treeherder"]["tier"], + }, + "worker-type": copy_task(task["worker-type"]), + "worker": copy_task(task["worker"]), + "index": copy_task(index), + "run": { + "using": "run-task", + "cwd": task["run"]["cwd"], + "checkout": task["run"]["checkout"], + "tooltool-downloads": copy_task(task["run"]["tooltool-downloads"]), + "command": tcmd, + "run-as-root": run_as_root, + }, + "run-on-projects": copy_task(task["run-on-projects"]), + "scopes": copy_task(task["scopes"]), + "dependencies": copy_task(task["dependencies"]), + "fetches": copy_task(task["fetches"]), + } + yield taskdesc diff --git a/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py b/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py new file mode 100644 index 0000000000..281dd5938f --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job + +transforms = TransformSequence() + + +@transforms.add +def copy_attributes(config, jobs): + for job in jobs: + job.setdefault("attributes", {}) + job["attributes"].update( + copy_attributes_from_dependent_job(job["primary-dependency"]) + ) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/cross_channel.py b/taskcluster/gecko_taskgraph/transforms/cross_channel.py new file mode 100644 index 0000000000..bf6d3a3a4f --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/cross_channel.py @@ -0,0 +1,44 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Build a command to run `mach l10n-cross-channel`. +""" + + +from pipes import quote as shell_quote + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + for item in ["ssh-key-secret", "run.actions"]: + resolve_keyed_by(job, item, item, **{"level": str(config.params["level"])}) + yield job + + +@transforms.add +def build_command(config, jobs): + for job in jobs: + command = [ + "l10n-cross-channel", + "-o", + "/builds/worker/artifacts/outgoing.diff", + "--attempts", + "5", + ] + ssh_key_secret = job.pop("ssh-key-secret") + if ssh_key_secret: + command.extend(["--ssh-secret", ssh_key_secret]) + job.setdefault("scopes", []).append(f"secrets:get:{ssh_key_secret}") + + command.extend(job["run"].pop("actions", [])) + job.setdefault("run", {}).update( + {"using": "mach", "mach": " ".join(map(shell_quote, command))} + ) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/diffoscope.py b/taskcluster/gecko_taskgraph/transforms/diffoscope.py new file mode 100644 index 0000000000..b74dc5bb8f --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/diffoscope.py @@ -0,0 +1,172 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This transform construct tasks to perform diffs between builds, as +defined in kind.yml +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema +from taskgraph.util.taskcluster import get_artifact_path +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.transforms.task import task_description_schema + +index_or_string = Any( + str, + {Required("index-search"): str}, +) + +diff_description_schema = Schema( + { + # Name of the diff task. + Required("name"): str, + # Treeherder tier. + Required("tier"): int, + # Treeherder symbol. + Required("symbol"): str, + # relative path (from config.path) to the file the task was defined in. + Optional("job-from"): str, + # Original and new builds to compare. + Required("original"): index_or_string, + Required("new"): index_or_string, + # Arguments to pass to diffoscope, used for job-defaults in + # taskcluster/ci/diffoscope/kind.yml + Optional("args"): str, + # Extra arguments to pass to diffoscope, that can be set per job. + Optional("extra-args"): str, + # Fail the task when differences are detected. + Optional("fail-on-diff"): bool, + # What artifact to check the differences of. Defaults to target.tar.bz2 + # for Linux, target.dmg for Mac, target.zip for Windows, target.apk for + # Android. + Optional("artifact"): str, + # Whether to unpack first. Diffoscope can normally work without unpacking, + # but when one needs to --exclude some contents, that doesn't work out well + # if said content is packed (e.g. in omni.ja). + Optional("unpack"): bool, + # Commands to run before performing the diff. + Optional("pre-diff-commands"): [str], + # Only run the task on a set of projects/branches. + Optional("run-on-projects"): task_description_schema["run-on-projects"], + Optional("optimization"): task_description_schema["optimization"], + } +) + +transforms = TransformSequence() +transforms.add_validate(diff_description_schema) + + +@transforms.add +def fill_template(config, tasks): + dummy_tasks = {} + + for task in tasks: + name = task["name"] + + deps = {} + urls = {} + previous_artifact = None + artifact = task.get("artifact") + for k in ("original", "new"): + value = task[k] + if isinstance(value, str): + deps[k] = value + dep_name = k + os_hint = value + else: + index = value["index-search"] + if index not in dummy_tasks: + dummy_tasks[index] = { + "label": "index-search-" + index, + "description": index, + "worker-type": "invalid/always-optimized", + "run": { + "using": "always-optimized", + }, + "optimization": { + "index-search": [index], + }, + } + yield dummy_tasks[index] + deps[index] = "index-search-" + index + dep_name = index + os_hint = index.split(".")[-1] + if artifact: + pass + elif "linux" in os_hint: + artifact = "target.tar.bz2" + elif "macosx" in os_hint: + artifact = "target.dmg" + elif "android" in os_hint: + artifact = "target.apk" + elif "win" in os_hint: + artifact = "target.zip" + else: + raise Exception(f"Cannot figure out the OS for {value!r}") + if previous_artifact is not None and previous_artifact != artifact: + raise Exception("Cannot compare builds from different OSes") + urls[k] = { + "artifact-reference": "<{}/{}>".format( + dep_name, get_artifact_path(task, artifact) + ), + } + previous_artifact = artifact + + taskdesc = { + "label": "diff-" + name, + "description": name, + "treeherder": { + "symbol": task["symbol"], + "platform": "diff/opt", + "kind": "other", + "tier": task["tier"], + }, + "worker-type": "b-linux-gcp", + "worker": { + "docker-image": {"in-tree": "diffoscope"}, + "artifacts": [ + { + "type": "file", + "path": f"/builds/worker/{f}", + "name": f"public/{f}", + } + for f in ( + "diff.html", + "diff.txt", + ) + ], + "env": { + "ORIG_URL": urls["original"], + "NEW_URL": urls["new"], + "DIFFOSCOPE_ARGS": " ".join( + task[k] for k in ("args", "extra-args") if k in task + ), + "PRE_DIFF": "; ".join(task.get("pre-diff-commands", [])), + }, + "max-run-time": 1800, + }, + "run": { + "using": "run-task", + "checkout": task.get("unpack", False), + "command": "/builds/worker/bin/get_and_diffoscope{}{}".format( + " --unpack" if task.get("unpack") else "", + " --fail" if task.get("fail-on-diff") else "", + ), + }, + "dependencies": deps, + "optimization": task.get("optimization"), + } + if "run-on-projects" in task: + taskdesc["run-on-projects"] = task["run-on-projects"] + + if artifact.endswith(".dmg"): + taskdesc.setdefault("fetches", {}).setdefault("toolchain", []).extend( + [ + "linux64-cctools-port", + "linux64-libdmg", + ] + ) + + yield taskdesc diff --git a/taskcluster/gecko_taskgraph/transforms/docker_image.py b/taskcluster/gecko_taskgraph/transforms/docker_image.py new file mode 100644 index 0000000000..0ccf83bf38 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/docker_image.py @@ -0,0 +1,209 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging +import os +import re + +import mozpack.path as mozpath +import taskgraph +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema +from voluptuous import Optional, Required + +from gecko_taskgraph.util.docker import ( + create_context_tar, + generate_context_hash, + image_path, +) + +from .. import GECKO +from .task import task_description_schema + +logger = logging.getLogger(__name__) + +CONTEXTS_DIR = "docker-contexts" + +DIGEST_RE = re.compile("^[0-9a-f]{64}$") + +IMAGE_BUILDER_IMAGE = ( + "mozillareleases/image_builder:5.0.0" + "@sha256:" + "e510a9a9b80385f71c112d61b2f2053da625aff2b6d430411ac42e424c58953f" +) + +transforms = TransformSequence() + +docker_image_schema = Schema( + { + # Name of the docker image. + Required("name"): str, + # Name of the parent docker image. + Optional("parent"): str, + # Treeherder symbol. + Required("symbol"): str, + # relative path (from config.path) to the file the docker image was defined + # in. + Optional("job-from"): str, + # Arguments to use for the Dockerfile. + Optional("args"): {str: str}, + # Name of the docker image definition under taskcluster/docker, when + # different from the docker image name. + Optional("definition"): str, + # List of package tasks this docker image depends on. + Optional("packages"): [str], + Optional( + "index", + description="information for indexing this build so its artifacts can be discovered", + ): task_description_schema["index"], + Optional( + "cache", + description="Whether this image should be cached based on inputs.", + ): bool, + } +) + + +transforms.add_validate(docker_image_schema) + + +@transforms.add +def fill_template(config, tasks): + if not taskgraph.fast and config.write_artifacts: + if not os.path.isdir(CONTEXTS_DIR): + os.makedirs(CONTEXTS_DIR) + + for task in tasks: + image_name = task.pop("name") + job_symbol = task.pop("symbol") + args = task.pop("args", {}) + packages = task.pop("packages", []) + parent = task.pop("parent", None) + + for p in packages: + if f"packages-{p}" not in config.kind_dependencies_tasks: + raise Exception( + "Missing package job for {}-{}: {}".format( + config.kind, image_name, p + ) + ) + + if not taskgraph.fast: + context_path = mozpath.relpath(image_path(image_name), GECKO) + if config.write_artifacts: + context_file = os.path.join(CONTEXTS_DIR, f"{image_name}.tar.gz") + logger.info(f"Writing {context_file} for docker image {image_name}") + context_hash = create_context_tar( + GECKO, context_path, context_file, image_name, args + ) + else: + context_hash = generate_context_hash( + GECKO, context_path, image_name, args + ) + else: + if config.write_artifacts: + raise Exception("Can't write artifacts if `taskgraph.fast` is set.") + context_hash = "0" * 40 + digest_data = [context_hash] + digest_data += [json.dumps(args, sort_keys=True)] + + description = "Build the docker image {} for use by dependent tasks".format( + image_name + ) + + args["DOCKER_IMAGE_PACKAGES"] = " ".join(f"<{p}>" for p in packages) + + # Adjust the zstandard compression level based on the execution level. + # We use faster compression for level 1 because we care more about + # end-to-end times. We use slower/better compression for other levels + # because images are read more often and it is worth the trade-off to + # burn more CPU once to reduce image size. + zstd_level = "3" if int(config.params["level"]) == 1 else "10" + + # include some information that is useful in reconstructing this task + # from JSON + taskdesc = { + "label": f"{config.kind}-{image_name}", + "description": description, + "attributes": { + "image_name": image_name, + "artifact_prefix": "public", + }, + "expiration-policy": "long", + "scopes": [], + "treeherder": { + "symbol": job_symbol, + "platform": "taskcluster-images/opt", + "kind": "other", + "tier": 1, + }, + "run-on-projects": [], + "worker-type": "images-gcp", + "worker": { + "implementation": "docker-worker", + "os": "linux", + "artifacts": [ + { + "type": "file", + "path": "/workspace/image.tar.zst", + "name": "public/image.tar.zst", + } + ], + "env": { + "CONTEXT_TASK_ID": {"task-reference": ""}, + "CONTEXT_PATH": "public/docker-contexts/{}.tar.gz".format( + image_name + ), + "HASH": context_hash, + "PROJECT": config.params["project"], + "IMAGE_NAME": image_name, + "DOCKER_IMAGE_ZSTD_LEVEL": zstd_level, + "DOCKER_BUILD_ARGS": {"task-reference": json.dumps(args)}, + "GECKO_BASE_REPOSITORY": config.params["base_repository"], + "GECKO_HEAD_REPOSITORY": config.params["head_repository"], + "GECKO_HEAD_REV": config.params["head_rev"], + }, + "chain-of-trust": True, + "max-run-time": 7200, + # FIXME: We aren't currently propagating the exit code + }, + } + # Retry for 'funsize-update-generator' if exit status code is -1 + if image_name in ["funsize-update-generator"]: + taskdesc["worker"]["retry-exit-status"] = [-1] + + worker = taskdesc["worker"] + + if image_name == "image_builder": + worker["docker-image"] = IMAGE_BUILDER_IMAGE + digest_data.append(f"image-builder-image:{IMAGE_BUILDER_IMAGE}") + else: + worker["docker-image"] = {"in-tree": "image_builder"} + deps = taskdesc.setdefault("dependencies", {}) + deps["docker-image"] = f"{config.kind}-image_builder" + + if packages: + deps = taskdesc.setdefault("dependencies", {}) + for p in sorted(packages): + deps[p] = f"packages-{p}" + + if parent: + deps = taskdesc.setdefault("dependencies", {}) + deps["parent"] = f"{config.kind}-{parent}" + worker["env"]["PARENT_TASK_ID"] = { + "task-reference": "", + } + if "index" in task: + taskdesc["index"] = task["index"] + + if task.get("cache", True) and not taskgraph.fast: + taskdesc["cache"] = { + "type": "docker-images.v2", + "name": image_name, + "digest-data": digest_data, + } + + yield taskdesc diff --git a/taskcluster/gecko_taskgraph/transforms/fetch.py b/taskcluster/gecko_taskgraph/transforms/fetch.py new file mode 100644 index 0000000000..b51362a905 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/fetch.py @@ -0,0 +1,387 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Support for running tasks that download remote content and re-export +# it as task artifacts. + + +import os +import re + +import attr +import taskgraph +from mozbuild.shellutil import quote as shell_quote +from mozpack import path as mozpath +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, validate_schema +from taskgraph.util.treeherder import join_symbol +from voluptuous import Any, Extra, Optional, Required + +import gecko_taskgraph + +from ..util.cached_tasks import add_optimization + +CACHE_TYPE = "content.v1" + +FETCH_SCHEMA = Schema( + { + # Name of the task. + Required("name"): str, + # Relative path (from config.path) to the file the task was defined + # in. + Optional("job-from"): str, + # Description of the task. + Required("description"): str, + Optional( + "fetch-alias", + description="An alias that can be used instead of the real fetch job name in " + "fetch stanzas for jobs.", + ): str, + Optional( + "artifact-prefix", + description="The prefix of the taskcluster artifact being uploaded. " + "Defaults to `public/`; if it starts with something other than " + "`public/` the artifact will require scopes to access.", + ): str, + Optional("attributes"): {str: object}, + Required("fetch"): { + Required("type"): str, + Extra: object, + }, + } +) + + +# define a collection of payload builders, depending on the worker implementation +fetch_builders = {} + + +@attr.s(frozen=True) +class FetchBuilder: + schema = attr.ib(type=Schema) + builder = attr.ib() + + +def fetch_builder(name, schema): + schema = Schema({Required("type"): name}).extend(schema) + + def wrap(func): + fetch_builders[name] = FetchBuilder(schema, func) + return func + + return wrap + + +transforms = TransformSequence() +transforms.add_validate(FETCH_SCHEMA) + + +@transforms.add +def process_fetch_job(config, jobs): + # Converts fetch-url entries to the job schema. + for job in jobs: + typ = job["fetch"]["type"] + name = job["name"] + fetch = job.pop("fetch") + + if typ not in fetch_builders: + raise Exception(f"Unknown fetch type {typ} in fetch {name}") + validate_schema(fetch_builders[typ].schema, fetch, f"In task.fetch {name!r}:") + + job.update(configure_fetch(config, typ, name, fetch)) + + yield job + + +def configure_fetch(config, typ, name, fetch): + if typ not in fetch_builders: + raise Exception(f"No fetch type {typ} in fetch {name}") + validate_schema(fetch_builders[typ].schema, fetch, f"In task.fetch {name!r}:") + + return fetch_builders[typ].builder(config, name, fetch) + + +@transforms.add +def make_task(config, jobs): + # Fetch tasks are idempotent and immutable. Have them live for + # essentially forever. + if config.params["level"] == "3": + expires = "1000 years" + else: + expires = "28 days" + + for job in jobs: + name = job["name"] + artifact_prefix = job.get("artifact-prefix", "public") + env = job.get("env", {}) + env.update({"UPLOAD_DIR": "/builds/worker/artifacts"}) + attributes = job.get("attributes", {}) + attributes["fetch-artifact"] = mozpath.join( + artifact_prefix, job["artifact_name"] + ) + alias = job.get("fetch-alias") + if alias: + attributes["fetch-alias"] = alias + + task_expires = "28 days" if attributes.get("cached_task") is False else expires + artifact_expires = ( + "2 days" if attributes.get("cached_task") is False else expires + ) + + task = { + "attributes": attributes, + "name": name, + "description": job["description"], + "expires-after": task_expires, + "label": "fetch-%s" % name, + "run-on-projects": [], + "treeherder": { + "symbol": join_symbol("Fetch", name), + "kind": "build", + "platform": "fetch/opt", + "tier": 1, + }, + "run": { + "using": "run-task", + "checkout": False, + "command": job["command"], + }, + "worker-type": "b-linux-gcp", + "worker": { + "chain-of-trust": True, + "docker-image": {"in-tree": "fetch"}, + "env": env, + "max-run-time": 900, + "artifacts": [ + { + "type": "directory", + "name": artifact_prefix, + "path": "/builds/worker/artifacts", + "expires-after": artifact_expires, + } + ], + }, + } + + if job.get("secret", None): + task["scopes"] = ["secrets:get:" + job.get("secret")] + task["worker"]["taskcluster-proxy"] = True + + if not taskgraph.fast: + cache_name = task["label"].replace(f"{config.kind}-", "", 1) + + # This adds the level to the index path automatically. + add_optimization( + config, + task, + cache_type=CACHE_TYPE, + cache_name=cache_name, + digest_data=job["digest_data"], + ) + yield task + + +@fetch_builder( + "static-url", + schema={ + # The URL to download. + Required("url"): str, + # The SHA-256 of the downloaded content. + Required("sha256"): str, + # Size of the downloaded entity, in bytes. + Required("size"): int, + # GPG signature verification. + Optional("gpg-signature"): { + # URL where GPG signature document can be obtained. Can contain the + # value ``{url}``, which will be substituted with the value from + # ``url``. + Required("sig-url"): str, + # Path to file containing GPG public key(s) used to validate + # download. + Required("key-path"): str, + }, + # The name to give to the generated artifact. Defaults to the file + # portion of the URL. Using a different extension converts the + # archive to the given type. Only conversion to .tar.zst is + # supported. + Optional("artifact-name"): str, + # Strip the given number of path components at the beginning of + # each file entry in the archive. + # Requires an artifact-name ending with .tar.zst. + Optional("strip-components"): int, + # Add the given prefix to each file entry in the archive. + # Requires an artifact-name ending with .tar.zst. + Optional("add-prefix"): str, + # IMPORTANT: when adding anything that changes the behavior of the task, + # it is important to update the digest data used to compute cache hits. + }, +) +def create_fetch_url_task(config, name, fetch): + artifact_name = fetch.get("artifact-name") + if not artifact_name: + artifact_name = fetch["url"].split("/")[-1] + + command = [ + "/builds/worker/bin/fetch-content", + "static-url", + ] + + # Arguments that matter to the cache digest + args = [ + "--sha256", + fetch["sha256"], + "--size", + "%d" % fetch["size"], + ] + + if fetch.get("strip-components"): + args.extend(["--strip-components", "%d" % fetch["strip-components"]]) + + if fetch.get("add-prefix"): + args.extend(["--add-prefix", fetch["add-prefix"]]) + + command.extend(args) + + env = {} + + if "gpg-signature" in fetch: + sig_url = fetch["gpg-signature"]["sig-url"].format(url=fetch["url"]) + key_path = os.path.join( + gecko_taskgraph.GECKO, fetch["gpg-signature"]["key-path"] + ) + + with open(key_path, "r") as fh: + gpg_key = fh.read() + + env["FETCH_GPG_KEY"] = gpg_key + command.extend( + [ + "--gpg-sig-url", + sig_url, + "--gpg-key-env", + "FETCH_GPG_KEY", + ] + ) + + command.extend( + [ + fetch["url"], + "/builds/worker/artifacts/%s" % artifact_name, + ] + ) + + return { + "command": command, + "artifact_name": artifact_name, + "env": env, + # We don't include the GPG signature in the digest because it isn't + # materially important for caching: GPG signatures are supplemental + # trust checking beyond what the shasum already provides. + "digest_data": args + [artifact_name], + } + + +@fetch_builder( + "git", + schema={ + Required("repo"): str, + Required(Any("revision", "branch")): str, + Optional("include-dot-git"): bool, + Optional("artifact-name"): str, + Optional("path-prefix"): str, + # ssh-key is a taskcluster secret path (e.g. project/civet/github-deploy-key) + # In the secret dictionary, the key should be specified as + # "ssh_privkey": "-----BEGIN OPENSSH PRIVATE KEY-----\nkfksnb3jc..." + # n.b. The OpenSSH private key file format requires a newline at the end of the file. + Optional("ssh-key"): str, + }, +) +def create_git_fetch_task(config, name, fetch): + path_prefix = fetch.get("path-prefix") + if not path_prefix: + path_prefix = fetch["repo"].rstrip("/").rsplit("/", 1)[-1] + artifact_name = fetch.get("artifact-name") + if not artifact_name: + artifact_name = f"{path_prefix}.tar.zst" + + if "revision" in fetch and "branch" in fetch: + raise Exception("revision and branch cannot be used in the same context") + + revision_or_branch = None + + if "revision" in fetch: + revision_or_branch = fetch["revision"] + if not re.match(r"[0-9a-fA-F]{40}", fetch["revision"]): + raise Exception(f'Revision is not a sha1 in fetch task "{name}"') + else: + # we are sure we are dealing with a branch + revision_or_branch = fetch["branch"] + + args = [ + "/builds/worker/bin/fetch-content", + "git-checkout-archive", + "--path-prefix", + path_prefix, + fetch["repo"], + revision_or_branch, + "/builds/worker/artifacts/%s" % artifact_name, + ] + + ssh_key = fetch.get("ssh-key") + if ssh_key: + args.append("--ssh-key-secret") + args.append(ssh_key) + + digest_data = [revision_or_branch, path_prefix, artifact_name] + if fetch.get("include-dot-git", False): + args.append("--include-dot-git") + digest_data.append(".git") + + return { + "command": args, + "artifact_name": artifact_name, + "digest_data": digest_data, + "secret": ssh_key, + } + + +@fetch_builder( + "chromium-fetch", + schema={ + Required("script"): str, + # Platform type for chromium build + Required("platform"): str, + # Chromium revision to obtain + Optional("revision"): str, + # The name to give to the generated artifact. + Required("artifact-name"): str, + }, +) +def create_chromium_fetch_task(config, name, fetch): + artifact_name = fetch.get("artifact-name") + + workdir = "/builds/worker" + + platform = fetch.get("platform") + revision = fetch.get("revision") + + args = "--platform " + shell_quote(platform) + if revision: + args += " --revision " + shell_quote(revision) + + cmd = [ + "bash", + "-c", + "cd {} && " "/usr/bin/python3 {} {}".format(workdir, fetch["script"], args), + ] + + return { + "command": cmd, + "artifact_name": artifact_name, + "digest_data": [ + f"revision={revision}", + f"platform={platform}", + f"artifact_name={artifact_name}", + ], + } diff --git a/taskcluster/gecko_taskgraph/transforms/final_verify.py b/taskcluster/gecko_taskgraph/transforms/final_verify.py new file mode 100644 index 0000000000..aa8be35a0d --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/final_verify.py @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_command(config, tasks): + for task in tasks: + if not task["worker"].get("env"): + task["worker"]["env"] = {} + + final_verify_configs = [] + for upstream in sorted(task.get("dependencies", {}).keys()): + if "update-verify-config" in upstream: + final_verify_configs.append( + f"<{upstream}/public/build/update-verify.cfg>", + ) + task["run"] = { + "using": "run-task", + "cwd": "{checkout}", + "command": { + "artifact-reference": "tools/update-verify/release/final-verification.sh " + + " ".join(final_verify_configs), + }, + "sparse-profile": "update-verify", + } + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/fxrecord.py b/taskcluster/gecko_taskgraph/transforms/fxrecord.py new file mode 100644 index 0000000000..0d8a23bfb4 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/fxrecord.py @@ -0,0 +1,22 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def fxrecord(config, jobs): + for job in jobs: + dep_job = job.pop("primary-dependency", None) + + if dep_job is not None: + job["dependencies"] = {dep_job.label: dep_job.label} + job["treeherder"]["platform"] = dep_job.task["extra"]["treeherder-platform"] + job["worker"].setdefault("env", {})["FXRECORD_TASK_ID"] = { + "task-reference": f"<{dep_job.label}>" + } + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py new file mode 100644 index 0000000000..1a996c1fc4 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py @@ -0,0 +1,68 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import add_scope_prefix + +repackage_signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("worker"): task_description_schema["worker"], + Optional("worker-type"): task_description_schema["worker-type"], + } +) + +transforms = TransformSequence() +transforms.add_validate(repackage_signing_description_schema) + + +@transforms.add +def geckodriver_mac_notarization(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + attributes = copy_attributes_from_dependent_job(dep_job) + treeherder = job.get("treeherder", {}) + dep_treeherder = dep_job.task.get("extra", {}).get("treeherder", {}) + treeherder.setdefault( + "platform", dep_job.task.get("extra", {}).get("treeherder-platform") + ) + treeherder.setdefault("tier", dep_treeherder.get("tier", 1)) + treeherder.setdefault("kind", "build") + + dependencies = {dep_job.kind: dep_job.label} + + description = "Mac notarization - Geckodriver for build '{}'".format( + attributes.get("build_platform"), + ) + + build_platform = dep_job.attributes.get("build_platform") + + scopes = [add_scope_prefix(config, "signing:cert:release-apple-notarization")] + + platform = build_platform.rsplit("-", 1)[0] + + task = { + "label": job["label"], + "description": description, + "worker-type": job["worker-type"], + "worker": job["worker"], + "scopes": scopes, + "dependencies": dependencies, + "attributes": attributes, + "treeherder": treeherder, + "run-on-projects": ["mozilla-central"], + "index": {"product": "geckodriver", "job-name": f"{platform}-notarized"}, + } + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py b/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py new file mode 100644 index 0000000000..05bc1319de --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py @@ -0,0 +1,124 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform + +repackage_signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +transforms = TransformSequence() +transforms.add_validate(repackage_signing_description_schema) + + +@transforms.add +def make_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes["repackage_type"] = "repackage-signing" + + treeherder = job.get("treeherder", {}) + dep_treeherder = dep_job.task.get("extra", {}).get("treeherder", {}) + treeherder.setdefault( + "symbol", "{}(gd-s)".format(dep_treeherder["groupSymbol"]) + ) + treeherder.setdefault( + "platform", dep_job.task.get("extra", {}).get("treeherder-platform") + ) + treeherder.setdefault("tier", dep_treeherder.get("tier", 1)) + treeherder.setdefault("kind", "build") + + dependencies = {dep_job.kind: dep_job.label} + signing_dependencies = dep_job.dependencies + dependencies.update( + {k: v for k, v in signing_dependencies.items() if k != "docker-image"} + ) + + description = "Signing Geckodriver for build '{}'".format( + attributes.get("build_platform"), + ) + + build_platform = dep_job.attributes.get("build_platform") + is_shippable = dep_job.attributes.get("shippable") + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_shippable, config + ) + + upstream_artifacts = _craft_upstream_artifacts( + dep_job, dep_job.kind, build_platform + ) + + scopes = [signing_cert_scope] + + platform = build_platform.rsplit("-", 1)[0] + + task = { + "label": job["label"], + "description": description, + "worker-type": "linux-signing", + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + }, + "scopes": scopes, + "dependencies": dependencies, + "attributes": attributes, + "treeherder": treeherder, + "run-on-projects": ["mozilla-central"], + "index": {"product": "geckodriver", "job-name": platform}, + } + + if build_platform.startswith("macosx"): + worker_type = task["worker-type"] + worker_type_alias_map = { + "linux-depsigning": "mac-depsigning", + "linux-signing": "mac-signing", + } + + assert worker_type in worker_type_alias_map, ( + "Make sure to adjust the below worker_type_alias logic for " + "mac if you change the signing workerType aliases!" + " ({} not found in mapping)".format(worker_type) + ) + worker_type = worker_type_alias_map[worker_type] + + task["worker-type"] = worker_type_alias_map[task["worker-type"]] + task["worker"]["mac-behavior"] = "mac_geckodriver" + + yield task + + +def _craft_upstream_artifacts(dep_job, dependency_kind, build_platform): + if build_platform.startswith("win"): + signing_format = "autograph_authenticode_sha2" + elif build_platform.startswith("linux"): + signing_format = "autograph_gpg" + elif build_platform.startswith("macosx"): + signing_format = "mac_geckodriver" + else: + raise ValueError(f'Unsupported build platform "{build_platform}"') + + return [ + { + "taskId": {"task-reference": f"<{dependency_kind}>"}, + "taskType": "build", + "paths": [dep_job.attributes["toolchain-artifact"]], + "formats": [signing_format], + } + ] diff --git a/taskcluster/gecko_taskgraph/transforms/github_sync.py b/taskcluster/gecko_taskgraph/transforms/github_sync.py new file mode 100644 index 0000000000..6f48f794ce --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/github_sync.py @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def sync_github(config, tasks): + """Do transforms specific to github-sync tasks.""" + for task in tasks: + # Add the secret to the scopes, only in m-c. + # Doing this on any other tree will result in decision task failure + # because m-c is the only one allowed to have that scope. + secret = task["secret"] + if config.params["project"] == "mozilla-central": + task.setdefault("scopes", []) + task["scopes"].append("secrets:get:" + secret) + task["worker"].setdefault("env", {})["GITHUB_SECRET"] = secret + del task["secret"] + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/job/__init__.py b/taskcluster/gecko_taskgraph/transforms/job/__init__.py new file mode 100644 index 0000000000..9b6924b605 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/__init__.py @@ -0,0 +1,504 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Convert a job description into a task description. + +Jobs descriptions are similar to task descriptions, but they specify how to run +the job at a higher level, using a "run" field that can be interpreted by +run-using handlers in `taskcluster/gecko_taskgraph/transforms/job`. +""" + + +import json +import logging + +import mozpack.path as mozpath +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.python_path import import_sibling_modules +from taskgraph.util.schema import Schema, validate_schema +from taskgraph.util.taskcluster import get_artifact_prefix +from voluptuous import Any, Exclusive, Extra, Optional, Required + +from gecko_taskgraph.transforms.cached_tasks import order_tasks +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.copy_task import copy_task +from gecko_taskgraph.util.workertypes import worker_type_implementation + +logger = logging.getLogger(__name__) + +# Schema for a build description +job_description_schema = Schema( + { + # The name of the job and the job's label. At least one must be specified, + # and the label will be generated from the name if necessary, by prepending + # the kind. + Optional("name"): str, + Optional("label"): str, + # the following fields are passed directly through to the task description, + # possibly modified by the run implementation. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details. + Required("description"): task_description_schema["description"], + Optional("attributes"): task_description_schema["attributes"], + Optional("job-from"): task_description_schema["job-from"], + Optional("dependencies"): task_description_schema["dependencies"], + Optional("if-dependencies"): task_description_schema["if-dependencies"], + Optional("soft-dependencies"): task_description_schema["soft-dependencies"], + Optional("if-dependencies"): task_description_schema["if-dependencies"], + Optional("requires"): task_description_schema["requires"], + Optional("expires-after"): task_description_schema["expires-after"], + Optional("expiration-policy"): task_description_schema["expiration-policy"], + Optional("routes"): task_description_schema["routes"], + Optional("scopes"): task_description_schema["scopes"], + Optional("tags"): task_description_schema["tags"], + Optional("extra"): task_description_schema["extra"], + Optional("treeherder"): task_description_schema["treeherder"], + Optional("index"): task_description_schema["index"], + Optional("run-on-projects"): task_description_schema["run-on-projects"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("always-target"): task_description_schema["always-target"], + Exclusive("optimization", "optimization"): task_description_schema[ + "optimization" + ], + Optional("use-sccache"): task_description_schema["use-sccache"], + Optional("use-system-python"): bool, + Optional("priority"): task_description_schema["priority"], + # The "when" section contains descriptions of the circumstances under which + # this task should be included in the task graph. This will be converted + # into an optimization, so it cannot be specified in a job description that + # also gives 'optimization'. + Exclusive("when", "optimization"): Any( + None, + { + # This task only needs to be run if a file matching one of the given + # patterns has changed in the push. The patterns use the mozpack + # match function (python/mozbuild/mozpack/path.py). + Optional("files-changed"): [str], + }, + ), + # A list of artifacts to install from 'fetch' tasks. + Optional("fetches"): { + str: [ + str, + { + Required("artifact"): str, + Optional("dest"): str, + Optional("extract"): bool, + Optional("verify-hash"): bool, + }, + ], + }, + # A description of how to run this job. + "run": { + # The key to a job implementation in a peer module to this one + "using": str, + # Base work directory used to set up the task. + Optional("workdir"): str, + # Any remaining content is verified against that job implementation's + # own schema. + Extra: object, + }, + Required("worker-type"): task_description_schema["worker-type"], + # This object will be passed through to the task description, with additions + # provided by the job's run-using function + Optional("worker"): dict, + } +) + +transforms = TransformSequence() +transforms.add_validate(job_description_schema) + + +@transforms.add +def rewrite_when_to_optimization(config, jobs): + for job in jobs: + when = job.pop("when", {}) + if not when: + yield job + continue + + files_changed = when.get("files-changed") + + # implicitly add task config directory. + files_changed.append(f"{config.path}/**") + + # "only when files changed" implies "skip if files have not changed" + job["optimization"] = {"skip-unless-changed": files_changed} + + assert "when" not in job + yield job + + +@transforms.add +def set_implementation(config, jobs): + for job in jobs: + impl, os = worker_type_implementation( + config.graph_config, config.params, job["worker-type"] + ) + if os: + job.setdefault("tags", {})["os"] = os + if impl: + job.setdefault("tags", {})["worker-implementation"] = impl + worker = job.setdefault("worker", {}) + assert "implementation" not in worker + worker["implementation"] = impl + if os: + worker["os"] = os + yield job + + +@transforms.add +def set_label(config, jobs): + for job in jobs: + if "label" not in job: + if "name" not in job: + raise Exception("job has neither a name nor a label") + job["label"] = "{}-{}".format(config.kind, job["name"]) + if job.get("name"): + del job["name"] + yield job + + +@transforms.add +def add_resource_monitor(config, jobs): + for job in jobs: + if job.get("attributes", {}).get("resource-monitor"): + worker_implementation, worker_os = worker_type_implementation( + config.graph_config, config.params, job["worker-type"] + ) + # Normalise worker os so that linux-bitbar and similar use linux tools. + worker_os = worker_os.split("-")[0] + # We don't currently support an Arm worker, due to gopsutil's indirect + # dependencies (go-ole) + if "aarch64" in job["worker-type"]: + yield job + continue + elif "win7" in job["worker-type"]: + arch = "32" + else: + arch = "64" + job.setdefault("fetches", {}) + job["fetches"].setdefault("toolchain", []) + job["fetches"]["toolchain"].append(f"{worker_os}{arch}-resource-monitor") + + if worker_implementation == "docker-worker": + artifact_source = "/builds/worker/monitoring/resource-monitor.json" + else: + artifact_source = "monitoring/resource-monitor.json" + job["worker"].setdefault("artifacts", []) + job["worker"]["artifacts"].append( + { + "name": "public/monitoring/resource-monitor.json", + "type": "file", + "path": artifact_source, + } + ) + # Set env for output file + job["worker"].setdefault("env", {}) + job["worker"]["env"]["RESOURCE_MONITOR_OUTPUT"] = artifact_source + + yield job + + +@transforms.add +def make_task_description(config, jobs): + """Given a build description, create a task description""" + # import plugin modules first, before iterating over jobs + import_sibling_modules(exceptions=("common.py",)) + + for job in jobs: + # only docker-worker uses a fixed absolute path to find directories + if job["worker"]["implementation"] == "docker-worker": + job["run"].setdefault("workdir", "/builds/worker") + + taskdesc = copy_task(job) + + # fill in some empty defaults to make run implementations easier + taskdesc.setdefault("attributes", {}) + taskdesc.setdefault("dependencies", {}) + taskdesc.setdefault("if-dependencies", []) + taskdesc.setdefault("soft-dependencies", []) + taskdesc.setdefault("routes", []) + taskdesc.setdefault("scopes", []) + taskdesc.setdefault("extra", {}) + + # give the function for job.run.using on this worker implementation a + # chance to set up the task description. + configure_taskdesc_for_run( + config, job, taskdesc, job["worker"]["implementation"] + ) + del taskdesc["run"] + + # yield only the task description, discarding the job description + yield taskdesc + + +def get_attribute(dict, key, attributes, attribute_name): + """Get `attribute_name` from the given `attributes` dict, and if there + is a corresponding value, set `key` in `dict` to that value.""" + value = attributes.get(attribute_name) + if value: + dict[key] = value + + +@transforms.add +def use_system_python(config, jobs): + for job in jobs: + if job.pop("use-system-python", True): + yield job + else: + fetches = job.setdefault("fetches", {}) + toolchain = fetches.setdefault("toolchain", []) + + moz_python_home = mozpath.join("fetches", "python") + if "win" in job["worker"]["os"]: + platform = "win64" + elif "linux" in job["worker"]["os"]: + platform = "linux64" + elif "macosx" in job["worker"]["os"]: + platform = "macosx64" + else: + raise ValueError("unexpected worker.os value {}".format(platform)) + + toolchain.append("{}-python".format(platform)) + + worker = job.setdefault("worker", {}) + env = worker.setdefault("env", {}) + env["MOZ_PYTHON_HOME"] = moz_python_home + + yield job + + +@transforms.add +def use_fetches(config, jobs): + artifact_names = {} + extra_env = {} + aliases = {} + tasks = [] + + if config.kind in ("toolchain", "fetch"): + jobs = list(jobs) + tasks.extend((config.kind, j) for j in jobs) + + tasks.extend( + (task.kind, task.__dict__) + for task in config.kind_dependencies_tasks.values() + if task.kind in ("fetch", "toolchain") + ) + for (kind, task) in tasks: + get_attribute( + artifact_names, task["label"], task["attributes"], f"{kind}-artifact" + ) + get_attribute(extra_env, task["label"], task["attributes"], f"{kind}-env") + value = task["attributes"].get(f"{kind}-alias") + if not value: + value = [] + elif isinstance(value, str): + value = [value] + for alias in value: + fully_qualified = f"{kind}-{alias}" + label = task["label"] + if fully_qualified == label: + raise Exception(f"The alias {alias} of task {label} points to itself!") + aliases[fully_qualified] = label + + artifact_prefixes = {} + for job in order_tasks(config, jobs): + artifact_prefixes[job["label"]] = get_artifact_prefix(job) + + fetches = job.pop("fetches", None) + if not fetches: + yield job + continue + + job_fetches = [] + name = job.get("name") or job.get("label").replace(f"{config.kind}-", "") + dependencies = job.setdefault("dependencies", {}) + worker = job.setdefault("worker", {}) + env = worker.setdefault("env", {}) + prefix = get_artifact_prefix(job) + has_sccache = False + for kind, artifacts in fetches.items(): + if kind in ("fetch", "toolchain"): + for fetch_name in artifacts: + label = f"{kind}-{fetch_name}" + label = aliases.get(label, label) + if label not in artifact_names: + raise Exception( + "Missing fetch job for {kind}-{name}: {fetch}".format( + kind=config.kind, name=name, fetch=fetch_name + ) + ) + if label in extra_env: + env.update(extra_env[label]) + + path = artifact_names[label] + + dependencies[label] = label + job_fetches.append( + { + "artifact": path, + "task": f"<{label}>", + "extract": True, + } + ) + + if kind == "toolchain" and fetch_name.endswith("-sccache"): + has_sccache = True + else: + if kind not in dependencies: + raise Exception( + "{name} can't fetch {kind} artifacts because " + "it has no {kind} dependencies!".format(name=name, kind=kind) + ) + dep_label = dependencies[kind] + if dep_label in artifact_prefixes: + prefix = artifact_prefixes[dep_label] + else: + if dep_label not in config.kind_dependencies_tasks: + raise Exception( + "{name} can't fetch {kind} artifacts because " + "there are no tasks with label {label} in kind dependencies!".format( + name=name, + kind=kind, + label=dependencies[kind], + ) + ) + + prefix = get_artifact_prefix( + config.kind_dependencies_tasks[dep_label] + ) + + for artifact in artifacts: + if isinstance(artifact, str): + path = artifact + dest = None + extract = True + verify_hash = False + else: + path = artifact["artifact"] + dest = artifact.get("dest") + extract = artifact.get("extract", True) + verify_hash = artifact.get("verify-hash", False) + + fetch = { + "artifact": f"{prefix}/{path}" + if not path.startswith("/") + else path[1:], + "task": f"<{kind}>", + "extract": extract, + } + if dest is not None: + fetch["dest"] = dest + if verify_hash: + fetch["verify-hash"] = verify_hash + job_fetches.append(fetch) + + if job.get("use-sccache") and not has_sccache: + raise Exception("Must provide an sccache toolchain if using sccache.") + + job_artifact_prefixes = { + mozpath.dirname(fetch["artifact"]) + for fetch in job_fetches + if not fetch["artifact"].startswith("public/") + } + if job_artifact_prefixes: + # Use taskcluster-proxy and request appropriate scope. For example, add + # 'scopes: [queue:get-artifact:path/to/*]' for 'path/to/artifact.tar.xz'. + worker["taskcluster-proxy"] = True + for prefix in sorted(job_artifact_prefixes): + scope = f"queue:get-artifact:{prefix}/*" + if scope not in job.setdefault("scopes", []): + job["scopes"].append(scope) + + artifacts = {} + for f in job_fetches: + _, __, artifact = f["artifact"].rpartition("/") + if "dest" in f: + artifact = f"{f['dest']}/{artifact}" + task = f["task"][1:-1] + if artifact in artifacts: + raise Exception( + f"Task {name} depends on {artifacts[artifact]} and {task} " + f"that both provide {artifact}" + ) + artifacts[artifact] = task + + env["MOZ_FETCHES"] = { + "task-reference": json.dumps( + sorted(job_fetches, key=lambda x: sorted(x.items())), sort_keys=True + ) + } + # The path is normalized to an absolute path in run-task + env.setdefault("MOZ_FETCHES_DIR", "fetches") + + yield job + + +# A registry of all functions decorated with run_job_using +registry = {} + + +def run_job_using(worker_implementation, run_using, schema=None, defaults={}): + """Register the decorated function as able to set up a task description for + jobs with the given worker implementation and `run.using` property. If + `schema` is given, the job's run field will be verified to match it. + + The decorated function should have the signature `using_foo(config, job, taskdesc)` + and should modify the task description in-place. The skeleton of + the task description is already set up, but without a payload.""" + + def wrap(func): + for_run_using = registry.setdefault(run_using, {}) + if worker_implementation in for_run_using: + raise Exception( + "run_job_using({!r}, {!r}) already exists: {!r}".format( + run_using, worker_implementation, for_run_using[run_using] + ) + ) + for_run_using[worker_implementation] = (func, schema, defaults) + return func + + return wrap + + +@run_job_using( + "always-optimized", "always-optimized", Schema({"using": "always-optimized"}) +) +def always_optimized(config, job, taskdesc): + pass + + +def configure_taskdesc_for_run(config, job, taskdesc, worker_implementation): + """ + Run the appropriate function for this job against the given task + description. + + This will raise an appropriate error if no function exists, or if the job's + run is not valid according to the schema. + """ + run_using = job["run"]["using"] + if run_using not in registry: + raise Exception(f"no functions for run.using {run_using!r}") + + if worker_implementation not in registry[run_using]: + raise Exception( + "no functions for run.using {!r} on {!r}".format( + run_using, worker_implementation + ) + ) + + func, schema, defaults = registry[run_using][worker_implementation] + for k, v in defaults.items(): + job["run"].setdefault(k, v) + + if schema: + validate_schema( + schema, + job["run"], + "In job.run using {!r}/{!r} for job {!r}:".format( + job["run"]["using"], worker_implementation, job["label"] + ), + ) + func(config, job, taskdesc) diff --git a/taskcluster/gecko_taskgraph/transforms/job/common.py b/taskcluster/gecko_taskgraph/transforms/job/common.py new file mode 100644 index 0000000000..0c6289a6db --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/common.py @@ -0,0 +1,269 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Common support for various job types. These functions are all named after the +worker implementation they operate on, and take the same three parameters, for +consistency. +""" + + +from taskgraph.util.keyed_by import evaluate_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix + +SECRET_SCOPE = "secrets:get:project/releng/{trust_domain}/{kind}/level-{level}/{secret}" + + +def add_cache(job, taskdesc, name, mount_point, skip_untrusted=False): + """Adds a cache based on the worker's implementation. + + Args: + job (dict): Task's job description. + taskdesc (dict): Target task description to modify. + name (str): Name of the cache. + mount_point (path): Path on the host to mount the cache. + skip_untrusted (bool): Whether cache is used in untrusted environments + (default: False). Only applies to docker-worker. + """ + if not job["run"].get("use-caches", True): + return + + worker = job["worker"] + + if worker["implementation"] == "docker-worker": + taskdesc["worker"].setdefault("caches", []).append( + { + "type": "persistent", + "name": name, + "mount-point": mount_point, + "skip-untrusted": skip_untrusted, + } + ) + + elif worker["implementation"] == "generic-worker": + taskdesc["worker"].setdefault("mounts", []).append( + { + "cache-name": name, + "directory": mount_point, + } + ) + + else: + # Caches not implemented + pass + + +def add_artifacts(config, job, taskdesc, path): + taskdesc["worker"].setdefault("artifacts", []).append( + { + "name": get_artifact_prefix(taskdesc), + "path": path, + "type": "directory", + } + ) + + +def docker_worker_add_artifacts(config, job, taskdesc): + """Adds an artifact directory to the task""" + path = "{workdir}/artifacts/".format(**job["run"]) + taskdesc["worker"].setdefault("env", {})["UPLOAD_DIR"] = path + add_artifacts(config, job, taskdesc, path) + + +def generic_worker_add_artifacts(config, job, taskdesc): + """Adds an artifact directory to the task""" + # The path is the location on disk; it doesn't necessarily + # mean the artifacts will be public or private; that is set via the name + # attribute in add_artifacts. + path = get_artifact_prefix(taskdesc) + taskdesc["worker"].setdefault("env", {})["UPLOAD_DIR"] = path + add_artifacts(config, job, taskdesc, path=path) + + +def support_vcs_checkout(config, job, taskdesc, sparse=False): + """Update a job/task with parameters to enable a VCS checkout. + + This can only be used with ``run-task`` tasks, as the cache name is + reserved for ``run-task`` tasks. + """ + worker = job["worker"] + is_mac = worker["os"] == "macosx" + is_win = worker["os"] == "windows" + is_linux = worker["os"] == "linux" or "linux-bitbar" + is_docker = worker["implementation"] == "docker-worker" + assert is_mac or is_win or is_linux + + if is_win: + checkoutdir = "./build" + geckodir = f"{checkoutdir}/src" + hgstore = "y:/hg-shared" + elif is_docker: + checkoutdir = "{workdir}/checkouts".format(**job["run"]) + geckodir = f"{checkoutdir}/gecko" + hgstore = f"{checkoutdir}/hg-store" + else: + checkoutdir = "./checkouts" + geckodir = f"{checkoutdir}/gecko" + hgstore = f"{checkoutdir}/hg-shared" + + cache_name = "checkouts" + + # Sparse checkouts need their own cache because they can interfere + # with clients that aren't sparse aware. + if sparse: + cache_name += "-sparse" + + # Workers using Mercurial >= 5.8 will enable revlog-compression-zstd, which + # workers using older versions can't understand, so they can't share cache. + # At the moment, only docker workers use the newer version. + if is_docker: + cache_name += "-hg58" + + add_cache(job, taskdesc, cache_name, checkoutdir) + + taskdesc["worker"].setdefault("env", {}).update( + { + "GECKO_BASE_REPOSITORY": config.params["base_repository"], + "GECKO_HEAD_REPOSITORY": config.params["head_repository"], + "GECKO_HEAD_REV": config.params["head_rev"], + "HG_STORE_PATH": hgstore, + } + ) + taskdesc["worker"]["env"].setdefault("GECKO_PATH", geckodir) + + if "comm_base_repository" in config.params: + taskdesc["worker"]["env"].update( + { + "COMM_BASE_REPOSITORY": config.params["comm_base_repository"], + "COMM_HEAD_REPOSITORY": config.params["comm_head_repository"], + "COMM_HEAD_REV": config.params["comm_head_rev"], + } + ) + elif job["run"].get("comm-checkout", False): + raise Exception( + "Can't checkout from comm-* repository if not given a repository." + ) + + # Give task access to hgfingerprint secret so it can pin the certificate + # for hg.mozilla.org. + taskdesc["scopes"].append("secrets:get:project/taskcluster/gecko/hgfingerprint") + taskdesc["scopes"].append("secrets:get:project/taskcluster/gecko/hgmointernal") + + # only some worker platforms have taskcluster-proxy enabled + if job["worker"]["implementation"] in ("docker-worker",): + taskdesc["worker"]["taskcluster-proxy"] = True + + +def generic_worker_hg_commands( + base_repo, head_repo, head_rev, path, sparse_profile=None +): + """Obtain commands needed to obtain a Mercurial checkout on generic-worker. + + Returns two command strings. One performs the checkout. Another logs. + """ + args = [ + r'"c:\Program Files\Mercurial\hg.exe"', + "robustcheckout", + "--sharebase", + r"y:\hg-shared", + "--purge", + "--upstream", + base_repo, + "--revision", + head_rev, + ] + + if sparse_profile: + args.extend(["--config", "extensions.sparse="]) + args.extend(["--sparseprofile", sparse_profile]) + + args.extend( + [ + head_repo, + path, + ] + ) + + logging_args = [ + b":: TinderboxPrint:{revision}" + b"\n".format( + revision=head_rev, source_repo=head_repo, repo_name=head_repo.split("/")[-1] + ), + ] + + return [" ".join(args), " ".join(logging_args)] + + +def setup_secrets(config, job, taskdesc): + """Set up access to secrets via taskcluster-proxy. The value of + run['secrets'] should be a boolean or a list of secret names that + can be accessed.""" + if not job["run"].get("secrets"): + return + + taskdesc["worker"]["taskcluster-proxy"] = True + secrets = job["run"]["secrets"] + if secrets is True: + secrets = ["*"] + for secret in secrets: + taskdesc["scopes"].append( + SECRET_SCOPE.format( + trust_domain=config.graph_config["trust-domain"], + kind=job["treeherder"]["kind"], + level=config.params["level"], + secret=secret, + ) + ) + + +def add_tooltool(config, job, taskdesc, internal=False): + """Give the task access to tooltool. + + Enables the tooltool cache. Adds releng proxy. Configures scopes. + + By default, only public tooltool access will be granted. Access to internal + tooltool can be enabled via ``internal=True``. + + This can only be used with ``run-task`` tasks, as the cache name is + reserved for use with ``run-task``. + """ + + if job["worker"]["implementation"] in ("docker-worker",): + add_cache( + job, + taskdesc, + "tooltool-cache", + "{workdir}/tooltool-cache".format(**job["run"]), + ) + + taskdesc["worker"].setdefault("env", {}).update( + { + "TOOLTOOL_CACHE": "{workdir}/tooltool-cache".format(**job["run"]), + } + ) + elif not internal: + return + + taskdesc["worker"]["taskcluster-proxy"] = True + taskdesc["scopes"].extend( + [ + "project:releng:services/tooltool/api/download/public", + ] + ) + + if internal: + taskdesc["scopes"].extend( + [ + "project:releng:services/tooltool/api/download/internal", + ] + ) + + +def get_expiration(config, policy="default"): + expires = evaluate_keyed_by( + config.graph_config["expiration-policy"], + "artifact expiration", + {"project": config.params["project"]}, + )[policy] + return expires diff --git a/taskcluster/gecko_taskgraph/transforms/job/distro_package.py b/taskcluster/gecko_taskgraph/transforms/job/distro_package.py new file mode 100644 index 0000000000..44236b1abc --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/distro_package.py @@ -0,0 +1,238 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running spidermonkey jobs via dedicated scripts +""" + + +import os +import re + +import taskgraph +from taskgraph.util.schema import Schema +from taskgraph.util.taskcluster import get_root_url +from voluptuous import Any, Optional, Required + +from gecko_taskgraph import GECKO +from gecko_taskgraph.transforms.job import run_job_using +from gecko_taskgraph.transforms.job.common import add_artifacts +from gecko_taskgraph.util.hash import hash_path + +DSC_PACKAGE_RE = re.compile(".*(?=_)") +SOURCE_PACKAGE_RE = re.compile(r".*(?=[-_]\d)") + +source_definition = { + Required("url"): str, + Required("sha256"): str, +} + +common_schema = Schema( + { + # URL/SHA256 of a source file to build, which can either be a source + # control (.dsc), or a tarball. + Required(Any("dsc", "tarball")): source_definition, + # Package name. Normally derived from the source control or tarball file + # name. Use in case the name doesn't match DSC_PACKAGE_RE or + # SOURCE_PACKAGE_RE. + Optional("name"): str, + # Patch to apply to the extracted source. + Optional("patch"): str, + # Command to run before dpkg-buildpackage. + Optional("pre-build-command"): str, + # Architecture to build the package for. + Optional("arch"): str, + # List of package tasks to get build dependencies from. + Optional("packages"): [str], + # What resolver to use to install build dependencies. The default + # (apt-get) is good in most cases, but in subtle cases involving + # a *-backports archive, its solver might not be able to find a + # solution that satisfies the build dependencies. + Optional("resolver"): Any("apt-get", "aptitude"), + # Base work directory used to set up the task. + Required("workdir"): str, + } +) + +debian_schema = common_schema.extend( + { + Required("using"): "debian-package", + # Debian distribution + Required("dist"): str, + } +) + +ubuntu_schema = common_schema.extend( + { + Required("using"): "ubuntu-package", + # Ubuntu distribution + Required("dist"): str, + } +) + + +def common_package(config, job, taskdesc, distro, version): + run = job["run"] + + name = taskdesc["label"].replace(f"{config.kind}-", "", 1) + + arch = run.get("arch", "amd64") + + worker = taskdesc["worker"] + worker.setdefault("artifacts", []) + + image = "%s%d" % (distro, version) + if arch != "amd64": + image += "-" + arch + image += "-packages" + worker["docker-image"] = {"in-tree": image} + + add_artifacts(config, job, taskdesc, path="/tmp/artifacts") + + env = worker.setdefault("env", {}) + env["DEBFULLNAME"] = "Mozilla build team" + env["DEBEMAIL"] = "dev-builds@lists.mozilla.org" + + if "dsc" in run: + src = run["dsc"] + unpack = "dpkg-source -x {src_file} {package}" + package_re = DSC_PACKAGE_RE + elif "tarball" in run: + src = run["tarball"] + unpack = ( + "mkdir {package} && " + "tar -C {package} -axf {src_file} --strip-components=1" + ) + package_re = SOURCE_PACKAGE_RE + else: + raise RuntimeError("Unreachable") + src_url = src["url"] + src_file = os.path.basename(src_url) + src_sha256 = src["sha256"] + package = run.get("name") + if not package: + package = package_re.match(src_file).group(0) + unpack = unpack.format(src_file=src_file, package=package) + + resolver = run.get("resolver", "apt-get") + if resolver == "apt-get": + resolver = "apt-get -yyq --no-install-recommends" + elif resolver == "aptitude": + resolver = ( + "aptitude -y --without-recommends -o " + "Aptitude::ProblemResolver::Hints::KeepBuildDeps=" + '"reject {}-build-deps :UNINST"' + ).format(package) + else: + raise RuntimeError("Unreachable") + + adjust = "" + if "patch" in run: + # We don't use robustcheckout or run-task to get a checkout. So for + # this one file we'd need from a checkout, download it. + env["PATCH_URL"] = config.params.file_url( + "build/debian-packages/{patch}".format(patch=run["patch"]), + ) + adjust += "curl -sL $PATCH_URL | patch -p1 && " + if "pre-build-command" in run: + adjust += run["pre-build-command"] + " && " + if "tarball" in run: + adjust += "mv ../{src_file} ../{package}_{ver}.orig.tar.gz && ".format( + src_file=src_file, + package=package, + ver="$(dpkg-parsechangelog | awk '$1==\"Version:\"{print $2}' | cut -f 1 -d -)", + ) + if "patch" not in run and "pre-build-command" not in run: + adjust += ( + 'debchange -l ".{prefix}moz" --distribution "{dist}"' + ' "Mozilla backport for {dist}." < /dev/null && ' + ).format( + prefix=name.split("-", 1)[0], + dist=run["dist"], + ) + + worker["command"] = [ + "sh", + "-x", + "-c", + # Add sources for packages coming from other package tasks. + "/usr/local/sbin/setup_packages.sh {root_url} $PACKAGES && " + "apt-get update && " + # Upgrade packages that might have new versions in package tasks. + "apt-get dist-upgrade && " "cd /tmp && " + # Get, validate and extract the package source. + "(dget -d -u {src_url} || exit 100) && " + 'echo "{src_sha256} {src_file}" | sha256sum -c && ' + "{unpack} && " + "cd {package} && " + # Optionally apply patch and/or pre-build command. + "{adjust}" + # Install the necessary build dependencies. + "(cd ..; mk-build-deps -i -r {package}/debian/control -t '{resolver}' || exit 100) && " + # Build the package + 'DEB_BUILD_OPTIONS="parallel=$(nproc) nocheck" dpkg-buildpackage -sa && ' + # Copy the artifacts + "mkdir -p {artifacts}/apt && " + "dcmd cp ../{package}_*.changes {artifacts}/apt/ && " + "cd {artifacts} && " + # Make the artifacts directory usable as an APT repository. + "apt-ftparchive sources apt | gzip -c9 > apt/Sources.gz && " + "apt-ftparchive packages apt | gzip -c9 > apt/Packages.gz".format( + root_url=get_root_url(False), + package=package, + src_url=src_url, + src_file=src_file, + src_sha256=src_sha256, + unpack=unpack, + adjust=adjust, + artifacts="/tmp/artifacts", + resolver=resolver, + ), + ] + + if run.get("packages"): + env = worker.setdefault("env", {}) + env["PACKAGES"] = { + "task-reference": " ".join(f"<{p}>" for p in run["packages"]) + } + deps = taskdesc.setdefault("dependencies", {}) + for p in run["packages"]: + deps[p] = f"packages-{p}" + + # Use the command generated above as the base for the index hash. + # We rely on it not varying depending on the head_repository or head_rev. + digest_data = list(worker["command"]) + if "patch" in run: + digest_data.append( + hash_path(os.path.join(GECKO, "build", "debian-packages", run["patch"])) + ) + + if not taskgraph.fast: + taskdesc["cache"] = { + "type": "packages.v1", + "name": name, + "digest-data": digest_data, + } + + +@run_job_using("docker-worker", "debian-package", schema=debian_schema) +def docker_worker_debian_package(config, job, taskdesc): + run = job["run"] + version = { + "wheezy": 7, + "jessie": 8, + "stretch": 9, + "buster": 10, + "bullseye": 11, + }[run["dist"]] + common_package(config, job, taskdesc, "debian", version) + + +@run_job_using("docker-worker", "ubuntu-package", schema=ubuntu_schema) +def docker_worker_ubuntu_package(config, job, taskdesc): + run = job["run"] + version = { + "bionic": 1804, + "focal": 2004, + }[run["dist"]] + common_package(config, job, taskdesc, "ubuntu", version) diff --git a/taskcluster/gecko_taskgraph/transforms/job/hazard.py b/taskcluster/gecko_taskgraph/transforms/job/hazard.py new file mode 100644 index 0000000000..af0e8616e0 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/hazard.py @@ -0,0 +1,66 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running hazard jobs via dedicated scripts +""" + + +from taskgraph.util.schema import Schema +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using +from gecko_taskgraph.transforms.job.common import ( + add_tooltool, + docker_worker_add_artifacts, + setup_secrets, +) + +haz_run_schema = Schema( + { + Required("using"): "hazard", + # The command to run within the task image (passed through to the worker) + Required("command"): str, + # The mozconfig to use; default in the script is used if omitted + Optional("mozconfig"): str, + # The set of secret names to which the task has access; these are prefixed + # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting + # this will enable any worker features required and set the task's scopes + # appropriately. `true` here means ['*'], all secrets. Not supported on + # Windows + Optional("secrets"): Any(bool, [str]), + # Base work directory used to set up the task. + Optional("workdir"): str, + } +) + + +@run_job_using("docker-worker", "hazard", schema=haz_run_schema) +def docker_worker_hazard(config, job, taskdesc): + run = job["run"] + + worker = taskdesc["worker"] = job["worker"] + worker.setdefault("artifacts", []) + + docker_worker_add_artifacts(config, job, taskdesc) + worker.setdefault("required-volumes", []).append( + "{workdir}/workspace".format(**run) + ) + add_tooltool(config, job, taskdesc) + setup_secrets(config, job, taskdesc) + + env = worker["env"] + env.update( + { + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + } + ) + + # script parameters + if run.get("mozconfig"): + env["MOZCONFIG"] = run.pop("mozconfig") + + run["using"] = "run-task" + run["cwd"] = run["workdir"] + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) diff --git a/taskcluster/gecko_taskgraph/transforms/job/mach.py b/taskcluster/gecko_taskgraph/transforms/job/mach.py new file mode 100644 index 0000000000..a418b44794 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/mach.py @@ -0,0 +1,83 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running mach tasks (via run-task) +""" + +from taskgraph.util.schema import Schema, taskref_or_string +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using + +mach_schema = Schema( + { + Required("using"): "mach", + # The mach command (omitting `./mach`) to run + Required("mach"): taskref_or_string, + # The version of Python to run with. Either an absolute path to the binary + # on the worker, a version identifier (e.g python2.7 or 3.8). There is no + # validation performed to ensure the specified binaries actually exist. + Optional("python-version"): Any(str, int, float), + # The sparse checkout profile to use. Value is the filename relative to the + # directory where sparse profiles are defined (build/sparse-profiles/). + Optional("sparse-profile"): Any(str, None), + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Required("comm-checkout"): bool, + # Base work directory used to set up the task. + Optional("workdir"): str, + # Context to substitute into the command using format string + # substitution (e.g {value}). This is useful if certain aspects of the + # command need to be generated in transforms. + Optional("command-context"): dict, + } +) + + +defaults = { + "comm-checkout": False, +} + + +@run_job_using("docker-worker", "mach", schema=mach_schema, defaults=defaults) +@run_job_using("generic-worker", "mach", schema=mach_schema, defaults=defaults) +def configure_mach(config, job, taskdesc): + run = job["run"] + worker = job["worker"] + + additional_prefix = [] + if worker["os"] == "macosx": + additional_prefix = ["LC_ALL=en_US.UTF-8", "LANG=en_US.UTF-8"] + + python = run.get("python-version") + if python: + del run["python-version"] + + if worker["os"] == "macosx" and python == 3: + python = "/usr/local/bin/python3" + + python = str(python) + try: + float(python) + python = "python" + python + except ValueError: + pass + + additional_prefix.append(python) + + command_prefix = " ".join(additional_prefix + ["./mach "]) + + mach = run["mach"] + if isinstance(mach, dict): + ref, pattern = next(iter(mach.items())) + command = {ref: command_prefix + pattern} + else: + command = command_prefix + mach + + # defer to the run_task implementation + run["command"] = command + run["cwd"] = "{checkout}" + run["using"] = "run-task" + del run["mach"] + configure_taskdesc_for_run(config, job, taskdesc, job["worker"]["implementation"]) diff --git a/taskcluster/gecko_taskgraph/transforms/job/mozharness.py b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py new file mode 100644 index 0000000000..3dbcc6e015 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py @@ -0,0 +1,366 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" + +Support for running jobs via mozharness. Ideally, most stuff gets run this +way, and certainly anything using mozharness should use this approach. + +""" + +import json +from textwrap import dedent + +from mozpack import path as mozpath +from taskgraph.util.schema import Schema +from voluptuous import Any, Optional, Required +from voluptuous.validators import Match + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using +from gecko_taskgraph.transforms.job.common import ( + docker_worker_add_artifacts, + generic_worker_add_artifacts, + get_expiration, + setup_secrets, +) +from gecko_taskgraph.transforms.task import get_branch_repo, get_branch_rev +from gecko_taskgraph.util.attributes import is_try + +mozharness_run_schema = Schema( + { + Required("using"): "mozharness", + # the mozharness script used to run this task, relative to the testing/ + # directory and using forward slashes even on Windows + Required("script"): str, + # Additional paths to look for mozharness configs in. These should be + # relative to the base of the source checkout + Optional("config-paths"): [str], + # the config files required for the task, relative to + # testing/mozharness/configs or one of the paths specified in + # `config-paths` and using forward slashes even on Windows + Required("config"): [str], + # any additional actions to pass to the mozharness command + Optional("actions"): [ + Match("^[a-z0-9-]+$", "actions must be `-` seperated alphanumeric strings") + ], + # any additional options (without leading --) to be passed to mozharness + Optional("options"): [ + Match( + "^[a-z0-9-]+(=[^ ]+)?$", + "options must be `-` seperated alphanumeric strings (with optional argument)", + ) + ], + # --custom-build-variant-cfg value + Optional("custom-build-variant-cfg"): str, + # Extra configuration options to pass to mozharness. + Optional("extra-config"): dict, + # If not false, tooltool downloads will be enabled via relengAPIProxy + # for either just public files, or all files. Not supported on Windows + Required("tooltool-downloads"): Any( + False, + "public", + "internal", + ), + # The set of secret names to which the task has access; these are prefixed + # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting + # this will enable any worker features required and set the task's scopes + # appropriately. `true` here means ['*'], all secrets. Not supported on + # Windows + Required("secrets"): Any(bool, [str]), + # If true, taskcluster proxy will be enabled; note that it may also be enabled + # automatically e.g., for secrets support. Not supported on Windows. + Required("taskcluster-proxy"): bool, + # If false, indicate that builds should skip producing artifacts. Not + # supported on Windows. + Required("keep-artifacts"): bool, + # If specified, use the in-tree job script specified. + Optional("job-script"): str, + Required("requires-signed-builds"): bool, + # Whether or not to use caches. + Optional("use-caches"): bool, + # If false, don't set MOZ_SIMPLE_PACKAGE_NAME + # Only disableable on windows + Required("use-simple-package"): bool, + # If false don't pass --branch mozharness script + # Only disableable on windows + Required("use-magic-mh-args"): bool, + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Required("comm-checkout"): bool, + # Base work directory used to set up the task. + Optional("workdir"): str, + Optional("run-as-root"): bool, + } +) + + +mozharness_defaults = { + "tooltool-downloads": False, + "secrets": False, + "taskcluster-proxy": False, + "keep-artifacts": True, + "requires-signed-builds": False, + "use-simple-package": True, + "use-magic-mh-args": True, + "comm-checkout": False, + "run-as-root": False, +} + + +@run_job_using( + "docker-worker", + "mozharness", + schema=mozharness_run_schema, + defaults=mozharness_defaults, +) +def mozharness_on_docker_worker_setup(config, job, taskdesc): + run = job["run"] + + worker = taskdesc["worker"] = job["worker"] + + if not run.pop("use-simple-package", None): + raise NotImplementedError( + "Simple packaging cannot be disabled via" + "'use-simple-package' on docker-workers" + ) + if not run.pop("use-magic-mh-args", None): + raise NotImplementedError( + "Cannot disabled mh magic arg passing via" + "'use-magic-mh-args' on docker-workers" + ) + + # Running via mozharness assumes an image that contains build.sh: + # by default, debian11-amd64-build, but it could be another image (like + # android-build). + worker.setdefault("docker-image", {"in-tree": "debian11-amd64-build"}) + + worker.setdefault("artifacts", []).append( + { + "name": "public/logs", + "path": "{workdir}/logs/".format(**run), + "type": "directory", + "expires-after": get_expiration(config, "medium"), + } + ) + worker["taskcluster-proxy"] = run.pop("taskcluster-proxy", None) + docker_worker_add_artifacts(config, job, taskdesc) + + env = worker.setdefault("env", {}) + env.update( + { + "WORKSPACE": "{workdir}/workspace".format(**run), + "MOZHARNESS_CONFIG": " ".join(run.pop("config")), + "MOZHARNESS_SCRIPT": run.pop("script"), + "MH_BRANCH": config.params["project"], + "MOZ_SOURCE_CHANGESET": get_branch_rev(config), + "MOZ_SOURCE_REPO": get_branch_repo(config), + "MH_BUILD_POOL": "taskcluster", + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + "PYTHONUNBUFFERED": "1", + } + ) + + worker.setdefault("required-volumes", []).append(env["WORKSPACE"]) + + if "actions" in run: + env["MOZHARNESS_ACTIONS"] = " ".join(run.pop("actions")) + + if "options" in run: + env["MOZHARNESS_OPTIONS"] = " ".join(run.pop("options")) + + if "config-paths" in run: + env["MOZHARNESS_CONFIG_PATHS"] = " ".join(run.pop("config-paths")) + + if "custom-build-variant-cfg" in run: + env["MH_CUSTOM_BUILD_VARIANT_CFG"] = run.pop("custom-build-variant-cfg") + + extra_config = run.pop("extra-config", {}) + extra_config["objdir"] = "obj-build" + env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(extra_config, sort_keys=True) + + if "job-script" in run: + env["JOB_SCRIPT"] = run["job-script"] + + if is_try(config.params): + env["TRY_COMMIT_MSG"] = config.params["message"] + + # if we're not keeping artifacts, set some env variables to empty values + # that will cause the build process to skip copying the results to the + # artifacts directory. This will have no effect for operations that are + # not builds. + if not run.pop("keep-artifacts"): + env["DIST_TARGET_UPLOADS"] = "" + env["DIST_UPLOADS"] = "" + + # Retry if mozharness returns TBPL_RETRY + worker["retry-exit-status"] = [4] + + setup_secrets(config, job, taskdesc) + + run["using"] = "run-task" + run["command"] = mozpath.join( + "${GECKO_PATH}", + run.pop("job-script", "taskcluster/scripts/builder/build-linux.sh"), + ) + run.pop("secrets") + run.pop("requires-signed-builds") + + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) + + +@run_job_using( + "generic-worker", + "mozharness", + schema=mozharness_run_schema, + defaults=mozharness_defaults, +) +def mozharness_on_generic_worker(config, job, taskdesc): + assert job["worker"]["os"] in ( + "windows", + "macosx", + ), "only supports windows and macOS right now: {}".format(job["label"]) + + run = job["run"] + + # fail if invalid run options are included + invalid = [] + if not run.pop("keep-artifacts", True): + invalid.append("keep-artifacts") + if invalid: + raise Exception( + "Jobs run using mozharness on Windows do not support properties " + + ", ".join(invalid) + ) + + worker = taskdesc["worker"] = job["worker"] + + worker["taskcluster-proxy"] = run.pop("taskcluster-proxy", None) + + setup_secrets(config, job, taskdesc) + + taskdesc["worker"].setdefault("artifacts", []).append( + { + "name": "public/logs", + "path": "logs", + "type": "directory", + "expires-after": get_expiration(config, "medium"), + } + ) + + if not worker.get("skip-artifacts", False): + generic_worker_add_artifacts(config, job, taskdesc) + + env = worker.setdefault("env", {}) + env.update( + { + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + "MH_BRANCH": config.params["project"], + "MOZ_SOURCE_CHANGESET": get_branch_rev(config), + "MOZ_SOURCE_REPO": get_branch_repo(config), + } + ) + if run.pop("use-simple-package"): + env.update({"MOZ_SIMPLE_PACKAGE_NAME": "target"}) + + extra_config = run.pop("extra-config", {}) + extra_config["objdir"] = "obj-build" + env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(extra_config, sort_keys=True) + + # The windows generic worker uses batch files to pass environment variables + # to commands. Setting a variable to empty in a batch file unsets, so if + # there is no `TRY_COMMIT_MESSAGE`, pass a space instead, so that + # mozharness doesn't try to find the commit message on its own. + if is_try(config.params): + env["TRY_COMMIT_MSG"] = config.params["message"] or "no commit message" + + if not job["attributes"]["build_platform"].startswith(("win", "macosx")): + raise Exception( + "Task generation for mozharness build jobs currently only supported on " + "Windows and macOS" + ) + + mh_command = [] + if job["worker"]["os"] == "windows": + system_python_dir = "c:/mozilla-build/python3/" + gecko_path = "%GECKO_PATH%" + else: + system_python_dir = "" + gecko_path = "$GECKO_PATH" + + if run.get("use-system-python", True): + python_bindir = system_python_dir + else: + # $MOZ_PYTHON_HOME is going to be substituted in run-task, when we + # know the actual MOZ_PYTHON_HOME value. + is_windows = job["worker"]["os"] == "windows" + if is_windows: + python_bindir = "%MOZ_PYTHON_HOME%/" + else: + python_bindir = "${MOZ_PYTHON_HOME}/bin/" + + mh_command = ["{}python3".format(python_bindir)] + + mh_command += [ + f"{gecko_path}/mach", + "python", + "{}/testing/{}".format(gecko_path, run.pop("script")), + ] + + for path in run.pop("config-paths", []): + mh_command.append(f"--extra-config-path {gecko_path}/{path}") + + for cfg in run.pop("config"): + mh_command.extend(("--config", cfg)) + if run.pop("use-magic-mh-args"): + mh_command.extend(("--branch", config.params["project"])) + if job["worker"]["os"] == "windows": + mh_command.extend(("--work-dir", r"%cd:Z:=z:%\workspace")) + for action in run.pop("actions", []): + mh_command.append("--" + action) + + for option in run.pop("options", []): + mh_command.append("--" + option) + if run.get("custom-build-variant-cfg"): + mh_command.append("--custom-build-variant") + mh_command.append(run.pop("custom-build-variant-cfg")) + + if job["worker"]["os"] == "macosx": + # Ideally, we'd use shellutil.quote, but that would single-quote + # $GECKO_PATH, which would defeat having the variable in the command + # in the first place, as it wouldn't be expanded. + # In practice, arguments are expected not to contain characters that + # would require quoting. + mh_command = " ".join(mh_command) + + run["using"] = "run-task" + run["command"] = mh_command + run.pop("secrets") + run.pop("requires-signed-builds") + run.pop("job-script", None) + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) + + # Everything past this point is Windows-specific. + if job["worker"]["os"] == "macosx": + return + + if taskdesc.get("use-sccache"): + worker["command"] = ( + [ + # Make the comment part of the first command, as it will help users to + # understand what is going on, and why these steps are implemented. + dedent( + """\ + :: sccache currently uses the full compiler commandline as input to the + :: cache hash key, so create a symlink to the task dir and build from + :: the symlink dir to get consistent paths. + if exist z:\\build rmdir z:\\build""" + ), + r"mklink /d z:\build %cd%", + # Grant delete permission on the link to everyone. + r"icacls z:\build /grant *S-1-1-0:D /L", + r"cd /d z:\build", + ] + + worker["command"] + ) diff --git a/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py b/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py new file mode 100644 index 0000000000..eb4aea609f --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py @@ -0,0 +1,477 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os +import re + +from taskgraph.util.schema import Schema +from taskgraph.util.taskcluster import get_artifact_path, get_artifact_url +from voluptuous import Extra, Optional, Required + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using +from gecko_taskgraph.transforms.job.common import get_expiration, support_vcs_checkout +from gecko_taskgraph.transforms.test import normpath, test_description_schema +from gecko_taskgraph.util.attributes import is_try + +VARIANTS = [ + "shippable", + "shippable-qr", + "shippable-lite", + "shippable-lite-qr", + "devedition", + "pgo", + "asan", + "stylo", + "qr", + "ccov", +] + + +def get_variant(test_platform): + for v in VARIANTS: + if f"-{v}/" in test_platform: + return v + return "" + + +mozharness_test_run_schema = Schema( + { + Required("using"): "mozharness-test", + Required("test"): { + Required("test-platform"): str, + Required("mozharness"): test_description_schema["mozharness"], + Required("docker-image"): test_description_schema["docker-image"], + Required("loopback-video"): test_description_schema["loopback-video"], + Required("loopback-audio"): test_description_schema["loopback-audio"], + Required("max-run-time"): test_description_schema["max-run-time"], + Optional("retry-exit-status"): test_description_schema["retry-exit-status"], + Extra: object, + }, + # Base work directory used to set up the task. + Optional("workdir"): str, + } +) + + +def test_packages_url(taskdesc): + """Account for different platforms that name their test packages differently""" + artifact_url = get_artifact_url( + "", get_artifact_path(taskdesc, "target.test_packages.json") + ) + # for android shippable we need to add 'en-US' to the artifact url + test = taskdesc["run"]["test"] + if "android" in test["test-platform"] and ( + get_variant(test["test-platform"]) + in ("shippable", "shippable-qr", "shippable-lite", "shippable-lite-qr") + ): + head, tail = os.path.split(artifact_url) + artifact_url = os.path.join(head, "en-US", tail) + return artifact_url + + +def installer_url(taskdesc): + test = taskdesc["run"]["test"] + mozharness = test["mozharness"] + + if "installer-url" in mozharness: + installer_url = mozharness["installer-url"] + else: + upstream_task = ( + "" if mozharness["requires-signed-builds"] else "" + ) + installer_url = get_artifact_url( + upstream_task, mozharness["build-artifact-name"] + ) + + return installer_url + + +@run_job_using("docker-worker", "mozharness-test", schema=mozharness_test_run_schema) +def mozharness_test_on_docker(config, job, taskdesc): + run = job["run"] + test = taskdesc["run"]["test"] + mozharness = test["mozharness"] + worker = taskdesc["worker"] = job["worker"] + + # apply some defaults + worker["docker-image"] = test["docker-image"] + worker["allow-ptrace"] = True # required for all tests, for crashreporter + worker["loopback-video"] = test["loopback-video"] + worker["loopback-audio"] = test["loopback-audio"] + worker["max-run-time"] = test["max-run-time"] + worker["retry-exit-status"] = test["retry-exit-status"] + if "android-em-7.0-x86" in test["test-platform"]: + worker["privileged"] = True + + artifacts = [ + # (artifact name prefix, in-image path) + ("public/logs", "{workdir}/workspace/logs/".format(**run)), + ("public/test", "{workdir}/artifacts/".format(**run)), + ( + "public/test_info", + "{workdir}/workspace/build/blobber_upload_dir/".format(**run), + ), + ] + + installer = installer_url(taskdesc) + + mozharness_url = get_artifact_url( + "", get_artifact_path(taskdesc, "mozharness.zip") + ) + + worker.setdefault("artifacts", []) + worker["artifacts"].extend( + [ + { + "name": prefix, + "path": os.path.join("{workdir}/workspace".format(**run), path), + "type": "directory", + "expires-after": get_expiration(config, "default"), + } + for (prefix, path) in artifacts + ] + ) + + env = worker.setdefault("env", {}) + env.update( + { + "MOZHARNESS_CONFIG": " ".join(mozharness["config"]), + "MOZHARNESS_SCRIPT": mozharness["script"], + "MOZILLA_BUILD_URL": {"task-reference": installer}, + "NEED_PULSEAUDIO": "true", + "NEED_WINDOW_MANAGER": "true", + "ENABLE_E10S": str(bool(test.get("e10s"))).lower(), + "WORKING_DIR": "/builds/worker", + } + ) + + env["PYTHON"] = "python3" + + # Legacy linux64 tests rely on compiz. + if test.get("docker-image", {}).get("in-tree") == "desktop1604-test": + env.update({"NEED_COMPIZ": "true"}) + + # Bug 1602701/1601828 - use compiz on ubuntu1804 due to GTK asynchiness + # when manipulating windows. + if test.get("docker-image", {}).get("in-tree") == "ubuntu1804-test": + if "wdspec" in job["run"]["test"]["suite"] or ( + "marionette" in job["run"]["test"]["suite"] + and "headless" not in job["label"] + ): + env.update({"NEED_COMPIZ": "true"}) + + # Set MOZ_ENABLE_WAYLAND env variables to enable Wayland backend. + if "wayland" in job["label"]: + env["MOZ_ENABLE_WAYLAND"] = "1" + + if mozharness.get("mochitest-flavor"): + env["MOCHITEST_FLAVOR"] = mozharness["mochitest-flavor"] + + if mozharness["set-moz-node-path"]: + env["MOZ_NODE_PATH"] = "/usr/local/bin/node" + + if "actions" in mozharness: + env["MOZHARNESS_ACTIONS"] = " ".join(mozharness["actions"]) + + if is_try(config.params): + env["TRY_COMMIT_MSG"] = config.params["message"] + + # handle some of the mozharness-specific options + if test["reboot"]: + raise Exception( + "reboot: {} not supported on generic-worker".format(test["reboot"]) + ) + + # Support vcs checkouts regardless of whether the task runs from + # source or not in case it is needed on an interactive loaner. + support_vcs_checkout(config, job, taskdesc) + + # If we have a source checkout, run mozharness from it instead of + # downloading a zip file with the same content. + if test["checkout"]: + env["MOZHARNESS_PATH"] = "{workdir}/checkouts/gecko/testing/mozharness".format( + **run + ) + else: + env["MOZHARNESS_URL"] = {"task-reference": mozharness_url} + + extra_config = { + "installer_url": installer, + "test_packages_url": test_packages_url(taskdesc), + } + env["EXTRA_MOZHARNESS_CONFIG"] = { + "task-reference": json.dumps(extra_config, sort_keys=True) + } + + # Bug 1634554 - pass in decision task artifact URL to mozharness for WPT. + # Bug 1645974 - test-verify-wpt and test-coverage-wpt need artifact URL. + if "web-platform-tests" in test["suite"] or re.match( + "test-(coverage|verify)-wpt", test["suite"] + ): + env["TESTS_BY_MANIFEST_URL"] = { + "artifact-reference": "" + } + + command = [ + "{workdir}/bin/test-linux.sh".format(**run), + ] + command.extend(mozharness.get("extra-options", [])) + + if test.get("test-manifests"): + env["MOZHARNESS_TEST_PATHS"] = json.dumps( + {test["suite"]: test["test-manifests"]}, sort_keys=True + ) + + # TODO: remove the need for run['chunked'] + elif mozharness.get("chunked") or test["chunks"] > 1: + command.append("--total-chunk={}".format(test["chunks"])) + command.append("--this-chunk={}".format(test["this-chunk"])) + + if "download-symbols" in mozharness: + download_symbols = mozharness["download-symbols"] + download_symbols = {True: "true", False: "false"}.get( + download_symbols, download_symbols + ) + command.append("--download-symbols=" + download_symbols) + + job["run"] = { + "workdir": run["workdir"], + "tooltool-downloads": mozharness["tooltool-downloads"], + "checkout": test["checkout"], + "command": command, + "using": "run-task", + } + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) + + +@run_job_using("generic-worker", "mozharness-test", schema=mozharness_test_run_schema) +def mozharness_test_on_generic_worker(config, job, taskdesc): + test = taskdesc["run"]["test"] + mozharness = test["mozharness"] + worker = taskdesc["worker"] = job["worker"] + + bitbar_script = "test-linux.sh" + + is_macosx = worker["os"] == "macosx" + is_windows = worker["os"] == "windows" + is_linux = worker["os"] == "linux" or worker["os"] == "linux-bitbar" + is_bitbar = worker["os"] == "linux-bitbar" + assert is_macosx or is_windows or is_linux + + artifacts = [ + { + "name": "public/logs", + "path": "logs", + "type": "directory", + "expires-after": get_expiration(config, "default"), + } + ] + + # jittest doesn't have blob_upload_dir + if test["test-name"] != "jittest": + artifacts.append( + { + "name": "public/test_info", + "path": "build/blobber_upload_dir", + "type": "directory", + "expires-after": get_expiration(config, "default"), + } + ) + + if is_bitbar: + artifacts = [ + { + "name": "public/test/", + "path": "artifacts/public", + "type": "directory", + "expires-after": get_expiration(config, "default"), + }, + { + "name": "public/logs/", + "path": "workspace/logs", + "type": "directory", + "expires-after": get_expiration(config, "default"), + }, + { + "name": "public/test_info/", + "path": "workspace/build/blobber_upload_dir", + "type": "directory", + "expires-after": get_expiration(config, "default"), + }, + ] + + installer = installer_url(taskdesc) + + worker["os-groups"] = test["os-groups"] + + # run-as-administrator is a feature for workers with UAC enabled and as such should not be + # included in tasks on workers that have UAC disabled. Currently UAC is only enabled on + # gecko Windows 10 workers, however this may be subject to change. Worker type + # environment definitions can be found in https://github.com/mozilla-releng/OpenCloudConfig + # See https://docs.microsoft.com/en-us/windows/desktop/secauthz/user-account-control + # for more information about UAC. + if test.get("run-as-administrator", False): + if job["worker-type"].startswith("win10-64") or job["worker-type"].startswith( + "win11-64" + ): + worker["run-as-administrator"] = True + else: + raise Exception( + "run-as-administrator not supported on {}".format(job["worker-type"]) + ) + + if test["reboot"]: + raise Exception( + "reboot: {} not supported on generic-worker".format(test["reboot"]) + ) + + worker["max-run-time"] = test["max-run-time"] + worker["retry-exit-status"] = test["retry-exit-status"] + worker.setdefault("artifacts", []) + worker["artifacts"].extend(artifacts) + + env = worker.setdefault("env", {}) + env["GECKO_HEAD_REPOSITORY"] = config.params["head_repository"] + env["GECKO_HEAD_REV"] = config.params["head_rev"] + + # this list will get cleaned up / reduced / removed in bug 1354088 + if is_macosx: + env.update( + { + "LC_ALL": "en_US.UTF-8", + "LANG": "en_US.UTF-8", + "MOZ_NODE_PATH": "/usr/local/bin/node", + "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin", + "SHELL": "/bin/bash", + } + ) + elif is_bitbar: + env.update( + { + "LANG": "en_US.UTF-8", + "MOZHARNESS_CONFIG": " ".join(mozharness["config"]), + "MOZHARNESS_SCRIPT": mozharness["script"], + "MOZHARNESS_URL": { + "artifact-reference": "" + }, + "MOZILLA_BUILD_URL": {"task-reference": installer}, + "MOZ_NO_REMOTE": "1", + "NEED_XVFB": "false", + "XPCOM_DEBUG_BREAK": "warn", + "NO_FAIL_ON_TEST_ERRORS": "1", + "MOZ_HIDE_RESULTS_TABLE": "1", + "MOZ_NODE_PATH": "/usr/local/bin/node", + "TASKCLUSTER_WORKER_TYPE": job["worker-type"], + } + ) + + extra_config = { + "installer_url": installer, + "test_packages_url": test_packages_url(taskdesc), + } + env["EXTRA_MOZHARNESS_CONFIG"] = { + "task-reference": json.dumps(extra_config, sort_keys=True) + } + + # Bug 1634554 - pass in decision task artifact URL to mozharness for WPT. + # Bug 1645974 - test-verify-wpt and test-coverage-wpt need artifact URL. + if "web-platform-tests" in test["suite"] or re.match( + "test-(coverage|verify)-wpt", test["suite"] + ): + env["TESTS_BY_MANIFEST_URL"] = { + "artifact-reference": "" + } + + if is_windows: + py_binary = "c:\\mozilla-build\\{python}\\{python}.exe".format(python="python3") + mh_command = [ + py_binary, + "-u", + "mozharness\\scripts\\" + normpath(mozharness["script"]), + ] + elif is_bitbar: + py_binary = "python3" + mh_command = ["bash", f"./{bitbar_script}"] + elif is_macosx: + py_binary = "/usr/local/bin/{}".format("python3") + mh_command = [ + py_binary, + "-u", + "mozharness/scripts/" + mozharness["script"], + ] + else: + # is_linux + py_binary = "/usr/bin/{}".format("python3") + mh_command = [ + # Using /usr/bin/python2.7 rather than python2.7 because + # /usr/local/bin/python2.7 is broken on the mac workers. + # See bug #1547903. + py_binary, + "-u", + "mozharness/scripts/" + mozharness["script"], + ] + + env["PYTHON"] = py_binary + + for mh_config in mozharness["config"]: + cfg_path = "mozharness/configs/" + mh_config + if is_windows: + cfg_path = normpath(cfg_path) + mh_command.extend(["--cfg", cfg_path]) + mh_command.extend(mozharness.get("extra-options", [])) + if mozharness.get("download-symbols"): + if isinstance(mozharness["download-symbols"], str): + mh_command.extend(["--download-symbols", mozharness["download-symbols"]]) + else: + mh_command.extend(["--download-symbols", "true"]) + if mozharness.get("include-blob-upload-branch"): + mh_command.append("--blob-upload-branch=" + config.params["project"]) + + if test.get("test-manifests"): + env["MOZHARNESS_TEST_PATHS"] = json.dumps( + {test["suite"]: test["test-manifests"]}, sort_keys=True + ) + + # TODO: remove the need for run['chunked'] + elif mozharness.get("chunked") or test["chunks"] > 1: + mh_command.append("--total-chunk={}".format(test["chunks"])) + mh_command.append("--this-chunk={}".format(test["this-chunk"])) + + if is_try(config.params): + env["TRY_COMMIT_MSG"] = config.params["message"] + + worker["mounts"] = [ + { + "directory": "mozharness", + "content": { + "artifact": get_artifact_path(taskdesc, "mozharness.zip"), + "task-id": {"task-reference": ""}, + }, + "format": "zip", + } + ] + if is_bitbar: + a_url = config.params.file_url( + f"taskcluster/scripts/tester/{bitbar_script}", + ) + worker["mounts"] = [ + { + "file": bitbar_script, + "content": { + "url": a_url, + }, + } + ] + + job["run"] = { + "tooltool-downloads": mozharness["tooltool-downloads"], + "checkout": test["checkout"], + "command": mh_command, + "using": "run-task", + } + if is_bitbar: + job["run"]["run-as-root"] = True + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) diff --git a/taskcluster/gecko_taskgraph/transforms/job/python_test.py b/taskcluster/gecko_taskgraph/transforms/job/python_test.py new file mode 100644 index 0000000000..b572061217 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/python_test.py @@ -0,0 +1,47 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running mach python-test tasks (via run-task) +""" + + +from taskgraph.util.schema import Schema +from voluptuous import Optional, Required + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using + +python_test_schema = Schema( + { + Required("using"): "python-test", + # Python version to use + Required("python-version"): int, + # The subsuite to run + Required("subsuite"): str, + # Base work directory used to set up the task. + Optional("workdir"): str, + } +) + + +defaults = { + "python-version": 3, + "subsuite": "default", +} + + +@run_job_using( + "docker-worker", "python-test", schema=python_test_schema, defaults=defaults +) +@run_job_using( + "generic-worker", "python-test", schema=python_test_schema, defaults=defaults +) +def configure_python_test(config, job, taskdesc): + run = job["run"] + worker = job["worker"] + + # defer to the mach implementation + run["mach"] = ("python-test --subsuite {subsuite} --run-slow").format(**run) + run["using"] = "mach" + del run["subsuite"] + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) diff --git a/taskcluster/gecko_taskgraph/transforms/job/run_task.py b/taskcluster/gecko_taskgraph/transforms/job/run_task.py new file mode 100644 index 0000000000..201c0b825a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/run_task.py @@ -0,0 +1,308 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running jobs that are invoked via the `run-task` script. +""" + + +import os + +from mozbuild.util import memoize +from mozpack import path +from taskgraph.util.schema import Schema +from taskgraph.util.yaml import load_yaml +from voluptuous import Any, Extra, Optional, Required + +from gecko_taskgraph import GECKO +from gecko_taskgraph.transforms.job import run_job_using +from gecko_taskgraph.transforms.job.common import add_tooltool, support_vcs_checkout +from gecko_taskgraph.transforms.task import taskref_or_string + +run_task_schema = Schema( + { + Required("using"): "run-task", + # if true, add a cache at ~worker/.cache, which is where things like pip + # tend to hide their caches. This cache is never added for level-1 jobs. + # TODO Once bug 1526028 is fixed, this and 'use-caches' should be merged. + Required("cache-dotcache"): bool, + # Whether or not to use caches. + Optional("use-caches"): bool, + # if true (the default), perform a checkout of gecko on the worker + Required("checkout"): bool, + Optional( + "cwd", + description="Path to run command in. If a checkout is present, the path " + "to the checkout will be interpolated with the key `checkout`", + ): str, + # The sparse checkout profile to use. Value is the filename relative to + # "sparse-profile-prefix" which defaults to "build/sparse-profiles/". + Required("sparse-profile"): Any(str, None), + # The relative path to the sparse profile. + Optional("sparse-profile-prefix"): str, + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Required("comm-checkout"): bool, + # The command arguments to pass to the `run-task` script, after the + # checkout arguments. If a list, it will be passed directly; otherwise + # it will be included in a single argument to `bash -cx`. + Required("command"): Any([taskref_or_string], taskref_or_string), + # Context to substitute into the command using format string + # substitution (e.g {value}). This is useful if certain aspects of the + # command need to be generated in transforms. + Optional("command-context"): { + # If present, loads a set of context variables from an unnested yaml + # file. If a value is present in both the provided file and directly + # in command-context, the latter will take priority. + Optional("from-file"): str, + Extra: object, + }, + # Base work directory used to set up the task. + Optional("workdir"): str, + # If not false, tooltool downloads will be enabled via relengAPIProxy + # for either just public files, or all files. Only supported on + # docker-worker. + Required("tooltool-downloads"): Any( + False, + "public", + "internal", + ), + # Whether to run as root. (defaults to False) + Optional("run-as-root"): bool, + } +) + + +def common_setup(config, job, taskdesc, command): + run = job["run"] + if run["checkout"]: + support_vcs_checkout(config, job, taskdesc, sparse=bool(run["sparse-profile"])) + command.append( + "--gecko-checkout={}".format(taskdesc["worker"]["env"]["GECKO_PATH"]) + ) + + if run["sparse-profile"]: + sparse_profile_prefix = run.pop( + "sparse-profile-prefix", "build/sparse-profiles" + ) + sparse_profile_path = path.join(sparse_profile_prefix, run["sparse-profile"]) + command.append(f"--gecko-sparse-profile={sparse_profile_path}") + + taskdesc["worker"].setdefault("env", {})["MOZ_SCM_LEVEL"] = config.params["level"] + + +worker_defaults = { + "cache-dotcache": False, + "checkout": True, + "comm-checkout": False, + "sparse-profile": None, + "tooltool-downloads": False, + "run-as-root": False, +} + + +load_yaml = memoize(load_yaml) + + +def script_url(config, script): + if "MOZ_AUTOMATION" in os.environ and "TASK_ID" not in os.environ: + raise Exception("TASK_ID must be defined to use run-task on generic-worker") + task_id = os.environ.get("TASK_ID", "") + tc_url = "http://firefox-ci-tc.services.mozilla.com" + return f"{tc_url}/api/queue/v1/task/{task_id}/artifacts/public/{script}" + + +def substitute_command_context(command_context, command): + from_file = command_context.pop("from-file", None) + full_context = {} + if from_file: + full_context = load_yaml(os.path.join(GECKO, from_file)) + else: + full_context = {} + + full_context.update(command_context) + + if isinstance(command, list): + for i in range(len(command)): + command[i] = command[i].format(**full_context) + else: + command = command.format(**full_context) + + return command + + +@run_job_using( + "docker-worker", "run-task", schema=run_task_schema, defaults=worker_defaults +) +def docker_worker_run_task(config, job, taskdesc): + run = job["run"] + worker = taskdesc["worker"] = job["worker"] + command = ["/builds/worker/bin/run-task"] + common_setup(config, job, taskdesc, command) + + if run["tooltool-downloads"]: + internal = run["tooltool-downloads"] == "internal" + add_tooltool(config, job, taskdesc, internal=internal) + + if run.get("cache-dotcache"): + worker["caches"].append( + { + "type": "persistent", + "name": "{project}-dotcache".format(**config.params), + "mount-point": "{workdir}/.cache".format(**run), + "skip-untrusted": True, + } + ) + + if run.get("command-context"): + run_command = substitute_command_context( + run.get("command-context"), run["command"] + ) + else: + run_command = run["command"] + + run_cwd = run.get("cwd") + if run_cwd and run["checkout"]: + run_cwd = path.normpath( + run_cwd.format(checkout=taskdesc["worker"]["env"]["GECKO_PATH"]) + ) + elif run_cwd and "{checkout}" in run_cwd: + raise Exception( + "Found `{{checkout}}` interpolation in `cwd` for task {name} " + "but the task doesn't have a checkout: {cwd}".format( + cwd=run_cwd, name=job.get("name", job.get("label")) + ) + ) + + # dict is for the case of `{'task-reference': text_type}`. + if isinstance(run_command, (str, dict)): + run_command = ["bash", "-cx", run_command] + if run["comm-checkout"]: + command.append( + "--comm-checkout={}/comm".format(taskdesc["worker"]["env"]["GECKO_PATH"]) + ) + if run["run-as-root"]: + command.extend(("--user", "root", "--group", "root")) + if run_cwd: + command.extend(("--task-cwd", run_cwd)) + command.append("--") + command.extend(run_command) + worker["command"] = command + + +@run_job_using( + "generic-worker", "run-task", schema=run_task_schema, defaults=worker_defaults +) +def generic_worker_run_task(config, job, taskdesc): + run = job["run"] + worker = taskdesc["worker"] = job["worker"] + is_win = worker["os"] == "windows" + is_mac = worker["os"] == "macosx" + is_bitbar = worker["os"] == "linux-bitbar" + + if run["tooltool-downloads"]: + internal = run["tooltool-downloads"] == "internal" + add_tooltool(config, job, taskdesc, internal=internal) + + if is_win: + command = ["C:/mozilla-build/python3/python3.exe", "run-task"] + elif is_mac: + command = ["/usr/local/bin/python3", "run-task"] + else: + command = ["./run-task"] + + common_setup(config, job, taskdesc, command) + + worker.setdefault("mounts", []) + if run.get("cache-dotcache"): + worker["mounts"].append( + { + "cache-name": "{project}-dotcache".format(**config.params), + "directory": "{workdir}/.cache".format(**run), + } + ) + worker["mounts"].append( + { + "content": { + "url": script_url(config, "run-task"), + }, + "file": "./run-task", + } + ) + if job.get("fetches", {}): + worker["mounts"].append( + { + "content": { + "url": script_url(config, "fetch-content"), + }, + "file": "./fetch-content", + } + ) + + run_command = run["command"] + run_cwd = run.get("cwd") + if run_cwd and run["checkout"]: + run_cwd = path.normpath( + run_cwd.format(checkout=taskdesc["worker"]["env"]["GECKO_PATH"]) + ) + elif run_cwd and "{checkout}" in run_cwd: + raise Exception( + "Found `{{checkout}}` interpolation in `cwd` for task {name} " + "but the task doesn't have a checkout: {cwd}".format( + cwd=run_cwd, name=job.get("name", job.get("label")) + ) + ) + + # dict is for the case of `{'task-reference': text_type}`. + if isinstance(run_command, (str, dict)): + if is_win: + if isinstance(run_command, dict): + for k in run_command.keys(): + run_command[k] = f'"{run_command[k]}"' + else: + run_command = f'"{run_command}"' + run_command = ["bash", "-cx", run_command] + + if run.get("command-context"): + run_command = substitute_command_context( + run.get("command-context"), run_command + ) + + if run["comm-checkout"]: + command.append( + "--comm-checkout={}/comm".format(taskdesc["worker"]["env"]["GECKO_PATH"]) + ) + + if run["run-as-root"]: + command.extend(("--user", "root", "--group", "root")) + if run_cwd: + command.extend(("--task-cwd", run_cwd)) + command.append("--") + if is_bitbar: + # Use the bitbar wrapper script which sets up the device and adb + # environment variables + command.append("/builds/taskcluster/script.py") + command.extend(run_command) + + if is_win: + taskref = False + for c in command: + if isinstance(c, dict): + taskref = True + + if taskref: + cmd = [] + for c in command: + if isinstance(c, dict): + for v in c.values(): + cmd.append(v) + else: + cmd.append(c) + worker["command"] = [{"artifact-reference": " ".join(cmd)}] + else: + worker["command"] = [" ".join(command)] + else: + worker["command"] = [ + ["chmod", "+x", "run-task"], + command, + ] diff --git a/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py b/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py new file mode 100644 index 0000000000..91c7e93bd6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py @@ -0,0 +1,109 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running spidermonkey jobs via dedicated scripts +""" + + +from taskgraph.util.schema import Schema +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using +from gecko_taskgraph.transforms.job.common import ( + docker_worker_add_artifacts, + generic_worker_add_artifacts, +) + +sm_run_schema = Schema( + { + Required("using"): Any( + "spidermonkey", + "spidermonkey-package", + ), + # SPIDERMONKEY_VARIANT and SPIDERMONKEY_PLATFORM + Required("spidermonkey-variant"): str, + Optional("spidermonkey-platform"): str, + # Base work directory used to set up the task. + Optional("workdir"): str, + Required("tooltool-downloads"): Any( + False, + "public", + "internal", + ), + } +) + + +@run_job_using("docker-worker", "spidermonkey", schema=sm_run_schema) +@run_job_using("docker-worker", "spidermonkey-package", schema=sm_run_schema) +def docker_worker_spidermonkey(config, job, taskdesc): + run = job["run"] + + worker = taskdesc["worker"] = job["worker"] + worker.setdefault("artifacts", []) + + docker_worker_add_artifacts(config, job, taskdesc) + + env = worker.setdefault("env", {}) + env.update( + { + "MOZHARNESS_DISABLE": "true", + "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"), + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + } + ) + if "spidermonkey-platform" in run: + env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform") + + script = "build-sm.sh" + if run["using"] == "spidermonkey-package": + script = "build-sm-package.sh" + + run["using"] = "run-task" + run["cwd"] = run["workdir"] + run["command"] = [f"./checkouts/gecko/taskcluster/scripts/builder/{script}"] + + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) + + +@run_job_using("generic-worker", "spidermonkey", schema=sm_run_schema) +def generic_worker_spidermonkey(config, job, taskdesc): + assert job["worker"]["os"] == "windows", "only supports windows right now" + + run = job["run"] + + worker = taskdesc["worker"] = job["worker"] + + generic_worker_add_artifacts(config, job, taskdesc) + + env = worker.setdefault("env", {}) + env.update( + { + "MOZHARNESS_DISABLE": "true", + "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"), + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + "SCCACHE_DISABLE": "1", + "WORK": ".", # Override the defaults in build scripts + "GECKO_PATH": "./src", # with values suiteable for windows generic worker + "UPLOAD_DIR": "./public/build", + } + ) + if "spidermonkey-platform" in run: + env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform") + + script = "build-sm.sh" + if run["using"] == "spidermonkey-package": + script = "build-sm-package.sh" + # Don't allow untested configurations yet + raise Exception("spidermonkey-package is not a supported configuration") + + run["using"] = "run-task" + run["command"] = [ + "c:\\mozilla-build\\msys2\\usr\\bin\\bash.exe " # string concat + '"./src/taskcluster/scripts/builder/%s"' % script + ] + + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) diff --git a/taskcluster/gecko_taskgraph/transforms/job/toolchain.py b/taskcluster/gecko_taskgraph/transforms/job/toolchain.py new file mode 100644 index 0000000000..fb030019fc --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/job/toolchain.py @@ -0,0 +1,257 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Support for running toolchain-building jobs via dedicated scripts +""" + + +import os + +import taskgraph +from mozbuild.shellutil import quote as shell_quote +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from voluptuous import Any, Optional, Required + +from gecko_taskgraph import GECKO +from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using +from gecko_taskgraph.transforms.job.common import ( + docker_worker_add_artifacts, + generic_worker_add_artifacts, +) +from gecko_taskgraph.util.attributes import RELEASE_PROJECTS +from gecko_taskgraph.util.hash import hash_paths + +CACHE_TYPE = "toolchains.v3" + +toolchain_run_schema = Schema( + { + Required("using"): "toolchain-script", + # The script (in taskcluster/scripts/misc) to run. + # Python scripts are invoked with `mach python` so vendored libraries + # are available. + Required("script"): str, + # Arguments to pass to the script. + Optional("arguments"): [str], + # If not false, tooltool downloads will be enabled via relengAPIProxy + # for either just public files, or all files. Not supported on Windows + Required("tooltool-downloads"): Any( + False, + "public", + "internal", + ), + # Sparse profile to give to checkout using `run-task`. If given, + # Defaults to "toolchain-build". The value is relative to + # "sparse-profile-prefix", optionally defined below is the path, + # defaulting to "build/sparse-profiles". + # i.e. `build/sparse-profiles/toolchain-build`. + # If `None`, instructs `run-task` to not use a sparse profile at all. + Required("sparse-profile"): Any(str, None), + # The relative path to the sparse profile. + Optional("sparse-profile-prefix"): str, + # Paths/patterns pointing to files that influence the outcome of a + # toolchain build. + Optional("resources"): [str], + # Path to the artifact produced by the toolchain job + Required("toolchain-artifact"): str, + Optional( + "toolchain-alias", + description="An alias that can be used instead of the real toolchain job name in " + "fetch stanzas for jobs.", + ): optionally_keyed_by("project", Any(None, str, [str])), + Optional( + "toolchain-env", + description="Additional env variables to add to the worker when using this toolchain", + ): {str: object}, + # Base work directory used to set up the task. + Optional("workdir"): str, + } +) + + +def get_digest_data(config, run, taskdesc): + files = list(run.pop("resources", [])) + # The script + files.append("taskcluster/scripts/misc/{}".format(run["script"])) + # Tooltool manifest if any is defined: + tooltool_manifest = taskdesc["worker"]["env"].get("TOOLTOOL_MANIFEST") + if tooltool_manifest: + files.append(tooltool_manifest) + + # Accumulate dependency hashes for index generation. + data = [hash_paths(GECKO, files)] + + data.append(taskdesc["attributes"]["toolchain-artifact"]) + + # If the task uses an in-tree docker image, we want it to influence + # the index path as well. Ideally, the content of the docker image itself + # should have an influence, but at the moment, we can't get that + # information here. So use the docker image name as a proxy. Not a lot of + # changes to docker images actually have an impact on the resulting + # toolchain artifact, so we'll just rely on such important changes to be + # accompanied with a docker image name change. + image = taskdesc["worker"].get("docker-image", {}).get("in-tree") + if image: + data.append(image) + + # Likewise script arguments should influence the index. + args = run.get("arguments") + if args: + data.extend(args) + + if taskdesc["attributes"].get("rebuild-on-release"): + # Add whether this is a release branch or not + data.append(str(config.params["project"] in RELEASE_PROJECTS)) + return data + + +def common_toolchain(config, job, taskdesc, is_docker): + run = job["run"] + + worker = taskdesc["worker"] = job["worker"] + worker["chain-of-trust"] = True + + if is_docker: + # If the task doesn't have a docker-image, set a default + worker.setdefault("docker-image", {"in-tree": "deb11-toolchain-build"}) + + if job["worker"]["os"] == "windows": + # There were no caches on generic-worker before bug 1519472, and they cause + # all sorts of problems with Windows toolchain tasks, disable them until + # tasks are ready. + run["use-caches"] = False + + env = worker.setdefault("env", {}) + env.update( + { + "MOZ_BUILD_DATE": config.params["moz_build_date"], + "MOZ_SCM_LEVEL": config.params["level"], + "TOOLCHAIN_ARTIFACT": run["toolchain-artifact"], + } + ) + + if is_docker: + # Toolchain checkouts don't live under {workdir}/checkouts + workspace = "{workdir}/workspace/build".format(**run) + env["GECKO_PATH"] = f"{workspace}/src" + + attributes = taskdesc.setdefault("attributes", {}) + attributes["toolchain-artifact"] = run.pop("toolchain-artifact") + toolchain_artifact = attributes["toolchain-artifact"] + if not toolchain_artifact.startswith("public/build/"): + if "artifact_prefix" in attributes: + raise Exception( + "Toolchain {} has an artifact_prefix attribute. That is not" + " allowed on toolchain tasks.".format(taskdesc["label"]) + ) + attributes["artifact_prefix"] = os.path.dirname(toolchain_artifact) + + resolve_keyed_by( + run, + "toolchain-alias", + item_name=taskdesc["label"], + project=config.params["project"], + ) + alias = run.pop("toolchain-alias", None) + if alias: + attributes["toolchain-alias"] = alias + if "toolchain-env" in run: + attributes["toolchain-env"] = run.pop("toolchain-env") + + # Allow the job to specify where artifacts come from, but add + # public/build if it's not there already. + artifacts = worker.setdefault("artifacts", []) + if not artifacts: + if is_docker: + docker_worker_add_artifacts(config, job, taskdesc) + else: + generic_worker_add_artifacts(config, job, taskdesc) + + digest_data = get_digest_data(config, run, taskdesc) + + if job.get("attributes", {}).get("cached_task") is not False and not taskgraph.fast: + name = taskdesc["label"].replace(f"{config.kind}-", "", 1) + taskdesc["cache"] = { + "type": CACHE_TYPE, + "name": name, + "digest-data": digest_data, + } + + # Toolchains that are used for local development need to be built on a + # level-3 branch to be installable via `mach bootstrap`. + local_toolchain = taskdesc["attributes"].get("local-toolchain") + if local_toolchain: + if taskdesc.get("run-on-projects"): + raise Exception( + "Toolchain {} used for local developement must not have" + " run-on-projects set".format(taskdesc["label"]) + ) + taskdesc["run-on-projects"] = ["integration", "release"] + + script = run.pop("script") + arguments = run.pop("arguments", []) + if local_toolchain and not attributes["toolchain-artifact"].startswith("public/"): + # Local toolchains with private artifacts are expected to have a script that + # fill a directory given as a final command line argument. That script, and the + # arguments provided, are used by the build system bootstrap code, and for the + # corresponding CI tasks, the command is wrapped with a script that creates an + # artifact based on that filled directory. + # We prefer automatic wrapping rather than manual wrapping in the yaml because + # it makes the index independent of the wrapper script, which is irrelevant. + # Also, an attribute is added for the bootstrap code to be able to easily parse + # the command. + attributes["toolchain-command"] = { + "script": script, + "arguments": list(arguments), + } + arguments.insert(0, script) + script = "private_local_toolchain.sh" + + run["using"] = "run-task" + if is_docker: + gecko_path = "workspace/build/src" + elif job["worker"]["os"] == "windows": + gecko_path = "%GECKO_PATH%" + else: + gecko_path = "$GECKO_PATH" + + if is_docker: + run["cwd"] = run["workdir"] + run["command"] = [ + "{}/taskcluster/scripts/misc/{}".format(gecko_path, script) + ] + arguments + if not is_docker: + # Don't quote the first item in the command because it purposely contains + # an environment variable that is not meant to be quoted. + if len(run["command"]) > 1: + run["command"] = run["command"][0] + " " + shell_quote(*run["command"][1:]) + else: + run["command"] = run["command"][0] + + configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) + + +toolchain_defaults = { + "tooltool-downloads": False, + "sparse-profile": "toolchain-build", +} + + +@run_job_using( + "docker-worker", + "toolchain-script", + schema=toolchain_run_schema, + defaults=toolchain_defaults, +) +def docker_worker_toolchain(config, job, taskdesc): + common_toolchain(config, job, taskdesc, is_docker=True) + + +@run_job_using( + "generic-worker", + "toolchain-script", + schema=toolchain_run_schema, + defaults=toolchain_defaults, +) +def generic_worker_toolchain(config, job, taskdesc): + common_toolchain(config, job, taskdesc, is_docker=False) diff --git a/taskcluster/gecko_taskgraph/transforms/l10n.py b/taskcluster/gecko_taskgraph/transforms/l10n.py new file mode 100644 index 0000000000..e36c70246b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/l10n.py @@ -0,0 +1,416 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Do transforms specific to l10n kind +""" + + +import json + +from mozbuild.chunkify import chunkify +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import ( + optionally_keyed_by, + resolve_keyed_by, + taskref_or_string, +) +from taskgraph.util.taskcluster import get_artifact_prefix +from taskgraph.util.treeherder import add_suffix +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.loader.multi_dep import schema +from gecko_taskgraph.transforms.job import job_description_schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + task_name, +) +from gecko_taskgraph.util.copy_task import copy_task + + +def _by_platform(arg): + return optionally_keyed_by("build-platform", arg) + + +l10n_description_schema = schema.extend( + { + # Name for this job, inferred from the dependent job before validation + Required("name"): str, + # build-platform, inferred from dependent job before validation + Required("build-platform"): str, + # max run time of the task + Required("run-time"): _by_platform(int), + # Locales not to repack for + Required("ignore-locales"): _by_platform([str]), + # All l10n jobs use mozharness + Required("mozharness"): { + # Script to invoke for mozharness + Required("script"): _by_platform(str), + # Config files passed to the mozharness script + Required("config"): _by_platform([str]), + # Additional paths to look for mozharness configs in. These should be + # relative to the base of the source checkout + Optional("config-paths"): [str], + # Options to pass to the mozharness script + Optional("options"): _by_platform([str]), + # Action commands to provide to mozharness script + Required("actions"): _by_platform([str]), + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Optional("comm-checkout"): bool, + }, + # Items for the taskcluster index + Optional("index"): { + # Product to identify as in the taskcluster index + Required("product"): _by_platform(str), + # Job name to identify as in the taskcluster index + Required("job-name"): _by_platform(str), + # Type of index + Optional("type"): _by_platform(str), + }, + # Description of the localized task + Required("description"): _by_platform(str), + Optional("run-on-projects"): job_description_schema["run-on-projects"], + # worker-type to utilize + Required("worker-type"): _by_platform(str), + # File which contains the used locales + Required("locales-file"): _by_platform(str), + # Tooltool visibility required for task. + Required("tooltool"): _by_platform(Any("internal", "public")), + # Docker image required for task. We accept only in-tree images + # -- generally desktop-build or android-build -- for now. + Optional("docker-image"): _by_platform( + # an in-tree generated docker image (from `taskcluster/docker/`) + {"in-tree": str}, + ), + Optional("fetches"): { + str: _by_platform([str]), + }, + # The set of secret names to which the task has access; these are prefixed + # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting + # this will enable any worker features required and set the task's scopes + # appropriately. `true` here means ['*'], all secrets. Not supported on + # Windows + Optional("secrets"): _by_platform(Any(bool, [str])), + # Information for treeherder + Required("treeherder"): { + # Platform to display the task on in treeherder + Required("platform"): _by_platform(str), + # Symbol to use + Required("symbol"): str, + # Tier this task is + Required("tier"): _by_platform(int), + }, + # Extra environment values to pass to the worker + Optional("env"): _by_platform({str: taskref_or_string}), + # Max number locales per chunk + Optional("locales-per-chunk"): _by_platform(int), + # Task deps to chain this task with, added in transforms from primary-dependency + # if this is a shippable-style build + Optional("dependencies"): {str: str}, + # Run the task when the listed files change (if present). + Optional("when"): {"files-changed": [str]}, + # passed through directly to the job description + Optional("attributes"): job_description_schema["attributes"], + Optional("extra"): job_description_schema["extra"], + # Shipping product and phase + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +transforms = TransformSequence() + + +def parse_locales_file(locales_file, platform=None): + """Parse the passed locales file for a list of locales.""" + locales = [] + + with open(locales_file, mode="r") as f: + if locales_file.endswith("json"): + all_locales = json.load(f) + # XXX Only single locales are fetched + locales = { + locale: data["revision"] + for locale, data in all_locales.items() + if platform is None or platform in data["platforms"] + } + else: + all_locales = f.read().split() + # 'default' is the hg revision at the top of hg repo, in this context + locales = {locale: "default" for locale in all_locales} + return locales + + +def _remove_locales(locales, to_remove=None): + # ja-JP-mac is a mac-only locale, but there are no mac builds being repacked, + # so just omit it unconditionally + return { + locale: revision + for locale, revision in locales.items() + if locale not in to_remove + } + + +@transforms.add +def setup_name(config, jobs): + for job in jobs: + dep = job["primary-dependency"] + # Set the name to the same as the dep task, without kind name. + # Label will get set automatically with this kinds name. + job["name"] = job.get("name", task_name(dep)) + yield job + + +@transforms.add +def copy_in_useful_magic(config, jobs): + for job in jobs: + dep = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep) + attributes.update(job.get("attributes", {})) + # build-platform is needed on `job` for by-build-platform + job["build-platform"] = attributes.get("build_platform") + job["attributes"] = attributes + yield job + + +transforms.add_validate(l10n_description_schema) + + +@transforms.add +def setup_shippable_dependency(config, jobs): + """Sets up a task dependency to the signing job this relates to""" + for job in jobs: + job["dependencies"] = {"build": job["dependent-tasks"]["build"].label} + if job["attributes"]["build_platform"].startswith("win") or job["attributes"][ + "build_platform" + ].startswith("linux"): + job["dependencies"].update( + { + "build-signing": job["dependent-tasks"]["build-signing"].label, + } + ) + if job["attributes"]["build_platform"].startswith("macosx"): + job["dependencies"].update( + {"repackage": job["dependent-tasks"]["repackage"].label} + ) + yield job + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by platform, etc.""" + fields = [ + "locales-file", + "locales-per-chunk", + "worker-type", + "description", + "run-time", + "docker-image", + "secrets", + "fetches.toolchain", + "fetches.fetch", + "tooltool", + "env", + "ignore-locales", + "mozharness.config", + "mozharness.options", + "mozharness.actions", + "mozharness.script", + "treeherder.tier", + "treeherder.platform", + "index.type", + "index.product", + "index.job-name", + "when.files-changed", + ] + for job in jobs: + job = copy_task(job) # don't overwrite dict values here + for field in fields: + resolve_keyed_by(item=job, field=field, item_name=job["name"]) + yield job + + +@transforms.add +def handle_artifact_prefix(config, jobs): + """Resolve ``artifact_prefix`` in env vars""" + for job in jobs: + artifact_prefix = get_artifact_prefix(job) + for k1, v1 in job.get("env", {}).items(): + if isinstance(v1, str): + job["env"][k1] = v1.format(artifact_prefix=artifact_prefix) + elif isinstance(v1, dict): + for k2, v2 in v1.items(): + job["env"][k1][k2] = v2.format(artifact_prefix=artifact_prefix) + yield job + + +@transforms.add +def all_locales_attribute(config, jobs): + for job in jobs: + locales_platform = job["attributes"]["build_platform"].replace("-shippable", "") + locales_platform = locales_platform.replace("-pgo", "") + locales_with_changesets = parse_locales_file( + job["locales-file"], platform=locales_platform + ) + locales_with_changesets = _remove_locales( + locales_with_changesets, to_remove=job["ignore-locales"] + ) + + locales = sorted(locales_with_changesets.keys()) + attributes = job.setdefault("attributes", {}) + attributes["all_locales"] = locales + attributes["all_locales_with_changesets"] = locales_with_changesets + if job.get("shipping-product"): + attributes["shipping_product"] = job["shipping-product"] + yield job + + +@transforms.add +def chunk_locales(config, jobs): + """Utilizes chunking for l10n stuff""" + for job in jobs: + locales_per_chunk = job.get("locales-per-chunk") + locales_with_changesets = job["attributes"]["all_locales_with_changesets"] + if locales_per_chunk: + chunks, remainder = divmod(len(locales_with_changesets), locales_per_chunk) + if remainder: + chunks = int(chunks + 1) + for this_chunk in range(1, chunks + 1): + chunked = copy_task(job) + chunked["name"] = chunked["name"].replace("/", f"-{this_chunk}/", 1) + chunked["mozharness"]["options"] = chunked["mozharness"].get( + "options", [] + ) + # chunkify doesn't work with dicts + locales_with_changesets_as_list = sorted( + locales_with_changesets.items() + ) + chunked_locales = chunkify( + locales_with_changesets_as_list, this_chunk, chunks + ) + chunked["mozharness"]["options"].extend( + [ + f"locale={locale}:{changeset}" + for locale, changeset in chunked_locales + ] + ) + chunked["attributes"]["l10n_chunk"] = str(this_chunk) + # strip revision + chunked["attributes"]["chunk_locales"] = [ + locale for locale, _ in chunked_locales + ] + + # add the chunk number to the TH symbol + chunked["treeherder"]["symbol"] = add_suffix( + chunked["treeherder"]["symbol"], this_chunk + ) + yield chunked + else: + job["mozharness"]["options"] = job["mozharness"].get("options", []) + job["mozharness"]["options"].extend( + [ + f"locale={locale}:{changeset}" + for locale, changeset in sorted(locales_with_changesets.items()) + ] + ) + yield job + + +transforms.add_validate(l10n_description_schema) + + +@transforms.add +def stub_installer(config, jobs): + for job in jobs: + job.setdefault("attributes", {}) + job.setdefault("env", {}) + if job["attributes"].get("stub-installer"): + job["env"].update({"USE_STUB_INSTALLER": "1"}) + yield job + + +@transforms.add +def set_extra_config(config, jobs): + for job in jobs: + job["mozharness"].setdefault("extra-config", {})["branch"] = config.params[ + "project" + ] + if "update-channel" in job["attributes"]: + job["mozharness"]["extra-config"]["update_channel"] = job["attributes"][ + "update-channel" + ] + yield job + + +@transforms.add +def make_job_description(config, jobs): + for job in jobs: + job["mozharness"].update( + { + "using": "mozharness", + "job-script": "taskcluster/scripts/builder/build-l10n.sh", + "secrets": job.get("secrets", False), + } + ) + job_description = { + "name": job["name"], + "worker-type": job["worker-type"], + "description": job["description"], + "run": job["mozharness"], + "attributes": job["attributes"], + "treeherder": { + "kind": "build", + "tier": job["treeherder"]["tier"], + "symbol": job["treeherder"]["symbol"], + "platform": job["treeherder"]["platform"], + }, + "run-on-projects": job.get("run-on-projects") + if job.get("run-on-projects") + else [], + } + if job.get("extra"): + job_description["extra"] = job["extra"] + + job_description["run"]["tooltool-downloads"] = job["tooltool"] + + job_description["worker"] = { + "max-run-time": job["run-time"], + "chain-of-trust": True, + } + if job["worker-type"] == "b-win2012": + job_description["worker"]["os"] = "windows" + job_description["run"]["use-simple-package"] = False + job_description["run"]["use-magic-mh-args"] = False + + if job.get("docker-image"): + job_description["worker"]["docker-image"] = job["docker-image"] + + if job.get("fetches"): + job_description["fetches"] = job["fetches"] + + if job.get("index"): + job_description["index"] = { + "product": job["index"]["product"], + "job-name": job["index"]["job-name"], + "type": job["index"].get("type", "generic"), + } + + if job.get("dependencies"): + job_description["dependencies"] = job["dependencies"] + if job.get("env"): + job_description["worker"]["env"] = job["env"] + if job.get("when", {}).get("files-changed"): + job_description.setdefault("when", {}) + job_description["when"]["files-changed"] = [job["locales-file"]] + job[ + "when" + ]["files-changed"] + + if "shipping-phase" in job: + job_description["shipping-phase"] = job["shipping-phase"] + + if "shipping-product" in job: + job_description["shipping-product"] = job["shipping-product"] + + yield job_description diff --git a/taskcluster/gecko_taskgraph/transforms/mac_dummy.py b/taskcluster/gecko_taskgraph/transforms/mac_dummy.py new file mode 100644 index 0000000000..f134ee2765 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/mac_dummy.py @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add dependencies to dummy macosx64 tasks. +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_dependencies(config, jobs): + for job in jobs: + dependencies = {} + + platform = job.get("attributes", {}).get("build_platform") + if not platform: + continue + arm = platform.replace("macosx64", "macosx64-aarch64") + intel = platform.replace("macosx64", "macosx64-x64") + for dep_task in config.kind_dependencies_tasks.values(): + # Weed out unwanted tasks. + if dep_task.attributes.get("build_platform"): + if dep_task.attributes["build_platform"] not in (platform, arm, intel): + continue + # Add matching tasks to deps + dependencies[dep_task.label] = dep_task.label + # Pick one task to copy run-on-projects from + if ( + dep_task.kind == "build" + and dep_task.attributes["build_platform"] == platform + ): + job["run-on-projects"] = dep_task.attributes.get("run_on_projects") + + job.setdefault("dependencies", {}).update(dependencies) + job["if-dependencies"] = list(dependencies) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/mac_notarization.py b/taskcluster/gecko_taskgraph/transforms/mac_notarization.py new file mode 100644 index 0000000000..5591022e1b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/mac_notarization.py @@ -0,0 +1,19 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform mac notarization tasks +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def only_level_3_notarization(config, jobs): + """Filter out any notarization jobs that are not level 3""" + for job in jobs: + if "notarization" in config.kind and int(config.params["level"]) != 3: + continue + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/mar_signing.py b/taskcluster/gecko_taskgraph/transforms/mar_signing.py new file mode 100644 index 0000000000..d923721f45 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/mar_signing.py @@ -0,0 +1,140 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the {partials,mar}-signing task into an actual task description. +""" + +import logging +import os + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_prefix +from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol + +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + sorted_unique_list, +) +from gecko_taskgraph.util.partials import get_partials_artifacts_from_params +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform + +logger = logging.getLogger(__name__) + +SIGNING_FORMATS = { + "mar-signing-autograph-stage": { + "target.complete.mar": ["autograph_stage_mar384"], + }, + "default": { + "target.complete.mar": ["autograph_hash_only_mar384"], + }, +} + +transforms = TransformSequence() + + +def generate_partials_artifacts(job, release_history, platform, locale=None): + artifact_prefix = get_artifact_prefix(job) + if locale: + artifact_prefix = f"{artifact_prefix}/{locale}" + else: + locale = "en-US" + + artifacts = get_partials_artifacts_from_params(release_history, platform, locale) + + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "partials", + "paths": [f"{artifact_prefix}/{path}" for path, version in artifacts], + "formats": ["autograph_hash_only_mar384"], + } + ] + + return upstream_artifacts + + +def generate_complete_artifacts(job, kind): + upstream_artifacts = [] + if kind not in SIGNING_FORMATS: + kind = "default" + for artifact in job.attributes["release_artifacts"]: + basename = os.path.basename(artifact) + if basename in SIGNING_FORMATS[kind]: + upstream_artifacts.append( + { + "taskId": {"task-reference": f"<{job.kind}>"}, + "taskType": "build", + "paths": [artifact], + "formats": SIGNING_FORMATS[kind][basename], + } + ) + + return upstream_artifacts + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + locale = dep_job.attributes.get("locale") + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault( + "symbol", join_symbol(job.get("treeherder-group", "ms"), locale or "N") + ) + + label = job.get("label", f"{config.kind}-{dep_job.label}") + + dependencies = {dep_job.kind: dep_job.label} + signing_dependencies = dep_job.dependencies + # This is so we get the build task etc in our dependencies to + # have better beetmover support. + dependencies.update(signing_dependencies) + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes["required_signoffs"] = sorted_unique_list( + attributes.get("required_signoffs", []), job.pop("required_signoffs") + ) + attributes["shipping_phase"] = job["shipping-phase"] + if locale: + attributes["locale"] = locale + + build_platform = attributes.get("build_platform") + if config.kind == "partials-signing": + upstream_artifacts = generate_partials_artifacts( + dep_job, config.params["release_history"], build_platform, locale + ) + else: + upstream_artifacts = generate_complete_artifacts(dep_job, config.kind) + + is_shippable = job.get( + "shippable", dep_job.attributes.get("shippable") # First check current job + ) # Then dep job for 'shippable' + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_shippable, config + ) + + scopes = [signing_cert_scope] + + task = { + "label": label, + "description": "{} {}".format( + dep_job.description, job["description-suffix"] + ), + "worker-type": job.get("worker-type", "linux-signing"), + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + "max-run-time": 3600, + }, + "dependencies": dependencies, + "attributes": attributes, + "scopes": scopes, + "run-on-projects": job.get( + "run-on-projects", dep_job.attributes.get("run_on_projects") + ), + "treeherder": treeherder, + } + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/maybe_release.py b/taskcluster/gecko_taskgraph/transforms/maybe_release.py new file mode 100644 index 0000000000..08a066001a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/maybe_release.py @@ -0,0 +1,23 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level + +transforms = TransformSequence() + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + for key in ["worker-type", "scopes"]: + resolve_keyed_by( + job, + key, + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/merge_automation.py b/taskcluster/gecko_taskgraph/transforms/merge_automation.py new file mode 100644 index 0000000000..ca5f3b6bde --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/merge_automation.py @@ -0,0 +1,81 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the update generation task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def handle_keyed_by(config, tasks): + """Resolve fields that can be keyed by platform, etc.""" + if "merge_config" not in config.params: + return + merge_config = config.params["merge_config"] + fields = [ + "worker.push", + "worker-type", + "worker.l10n-bump-info", + "worker.source-repo", + ] + for task in tasks: + for field in fields: + resolve_keyed_by( + task, + field, + item_name=task["name"], + **{ + "project": config.params["project"], + "release-type": config.params["release_type"], + "behavior": merge_config["behavior"], + } + ) + yield task + + +@transforms.add +def update_labels(config, tasks): + for task in tasks: + merge_config = config.params["merge_config"] + task["label"] = "merge-{}".format(merge_config["behavior"]) + treeherder = task.get("treeherder", {}) + treeherder["symbol"] = "Rel({})".format(merge_config["behavior"]) + task["treeherder"] = treeherder + yield task + + +@transforms.add +def add_payload_config(config, tasks): + for task in tasks: + if "merge_config" not in config.params: + break + merge_config = config.params["merge_config"] + worker = task["worker"] + worker["merge-info"] = config.graph_config["merge-automation"]["behaviors"][ + merge_config["behavior"] + ] + + if "l10n-bump-info" in worker and worker["l10n-bump-info"] is None: + del worker["l10n-bump-info"] + + # Override defaults, useful for testing. + for field in [ + "from-repo", + "from-branch", + "to-repo", + "to-branch", + "fetch-version-from", + ]: + if merge_config.get(field): + worker["merge-info"][field] = merge_config[field] + + worker["force-dry-run"] = merge_config["force-dry-run"] + worker["ssh-user"] = merge_config.get("ssh-user-alias", "merge_user") + if merge_config.get("push"): + worker["push"] = merge_config["push"] + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/name_sanity.py b/taskcluster/gecko_taskgraph/transforms/name_sanity.py new file mode 100644 index 0000000000..856f4f82be --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/name_sanity.py @@ -0,0 +1,45 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Generate labels for tasks without names, consistently. +Uses attributes from `primary-dependency`. +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def make_label(config, jobs): + """Generate a sane label for a new task constructed from a dependency + Using attributes from the dependent job and the current task kind""" + for job in jobs: + dep_job = job["primary-dependency"] + attr = dep_job.attributes.get + + if attr("locale", job.get("locale")): + template = "{kind}-{locale}-{build_platform}/{build_type}" + elif attr("l10n_chunk"): + template = "{kind}-{build_platform}-{l10n_chunk}/{build_type}" + elif config.kind.startswith("release-eme-free") or config.kind.startswith( + "release-partner-repack" + ): + suffix = job.get("extra", {}).get("repack_suffix", None) or job.get( + "extra", {} + ).get("repack_id", None) + template = "{kind}-{build_platform}" + if suffix: + template += "-{}".format(suffix.replace("/", "-")) + else: + template = "{kind}-{build_platform}/{build_type}" + job["label"] = template.format( + kind=config.kind, + build_platform=attr("build_platform"), + build_type=attr("build_type"), + locale=attr("locale", job.get("locale", "")), # Locale can be absent + l10n_chunk=attr("l10n_chunk", ""), # Can be empty + ) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/openh264.py b/taskcluster/gecko_taskgraph/transforms/openh264.py new file mode 100644 index 0000000000..f41215d20b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/openh264.py @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This transform is used to help populate mozharness options for openh264 jobs +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def set_mh_options(config, jobs): + """ + This transform sets the 'openh264_rev' attribute. + """ + for job in jobs: + repo = job.pop("repo") + rev = job.pop("revision") + attributes = job.setdefault("attributes", {}) + attributes["openh264_rev"] = rev + run = job.setdefault("run", {}) + options = run.setdefault("options", []) + options.extend([f"repo={repo}", f"rev={rev}"]) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/openh264_signing.py b/taskcluster/gecko_taskgraph/transforms/openh264_signing.py new file mode 100644 index 0000000000..dfffc7cc17 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/openh264_signing.py @@ -0,0 +1,109 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import inherit_treeherder_from_dep +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform + +transforms = TransformSequence() + +signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("extra"): object, + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +transforms.add_validate(signing_description_schema) + + +@transforms.add +def make_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + build_platform = dep_job.attributes.get("build_platform") + is_nightly = True # cert_scope_per_platform uses this to choose the right cert + + description = ( + "Signing of OpenH264 Binaries for '" + "{build_platform}/{build_type}'".format( + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + # we have a genuine repackage job as our parent + dependencies = {"openh264": dep_job.label} + + my_attributes = copy_attributes_from_dependent_job(dep_job) + + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_nightly, config + ) + + scopes = [signing_cert_scope] + worker_type = "linux-signing" + worker = { + "implementation": "scriptworker-signing", + "max-run-time": 3600, + } + rev = attributes["openh264_rev"] + upstream_artifact = { + "taskId": {"task-reference": ""}, + "taskType": "build", + } + + if "win" in build_platform: + # job['primary-dependency'].task['payload']['command'] + upstream_artifact["formats"] = ["autograph_authenticode_sha2"] + elif "mac" in build_platform: + upstream_artifact["formats"] = ["mac_single_file"] + upstream_artifact["singleFileGlobs"] = ["libgmpopenh264.dylib"] + worker_type = "mac-signing" + worker["mac-behavior"] = "mac_notarize_single_file" + else: + upstream_artifact["formats"] = ["autograph_gpg"] + + upstream_artifact["paths"] = [ + f"private/openh264/openh264-{build_platform}-{rev}.zip", + ] + worker["upstream-artifacts"] = [upstream_artifact] + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault( + "symbol", + _generate_treeherder_symbol( + dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol") + ), + ) + + task = { + "label": job["label"], + "description": description, + "worker-type": worker_type, + "worker": worker, + "scopes": scopes, + "dependencies": dependencies, + "attributes": my_attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + } + + yield task + + +def _generate_treeherder_symbol(build_symbol): + symbol = build_symbol + "s" + return symbol diff --git a/taskcluster/gecko_taskgraph/transforms/partials.py b/taskcluster/gecko_taskgraph/transforms/partials.py new file mode 100644 index 0000000000..267739cfc3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/partials.py @@ -0,0 +1,172 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the partials task into an actual task description. +""" + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_prefix +from taskgraph.util.treeherder import inherit_treeherder_from_dep + +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.partials import get_builds +from gecko_taskgraph.util.platforms import architecture + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +def _generate_task_output_files(job, filenames, locale=None): + locale_output_path = f"{locale}/" if locale else "" + artifact_prefix = get_artifact_prefix(job) + + data = list() + for filename in filenames: + data.append( + { + "type": "file", + "path": f"/home/worker/artifacts/{filename}", + "name": f"{artifact_prefix}/{locale_output_path}{filename}", + } + ) + data.append( + { + "type": "file", + "path": "/home/worker/artifacts/manifest.json", + "name": f"{artifact_prefix}/{locale_output_path}manifest.json", + } + ) + return data + + +def identify_desired_signing_keys(project, product): + if project in ["mozilla-central", "comm-central", "oak"]: + return "nightly" + if project == "mozilla-beta": + if product == "devedition": + return "nightly" + return "release" + if ( + project in ["mozilla-release", "comm-beta"] + or project.startswith("mozilla-esr") + or project.startswith("comm-esr") + ): + return "release" + return "dep1" + + +@transforms.add +def make_task_description(config, jobs): + # If no balrog release history, then don't generate partials + if not config.params.get("release_history"): + return + for job in jobs: + dep_job = job["primary-dependency"] + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault("symbol", "p(N)") + + label = job.get("label", f"partials-{dep_job.label}") + + dependencies = {dep_job.kind: dep_job.label} + + attributes = copy_attributes_from_dependent_job(dep_job) + locale = dep_job.attributes.get("locale") + if locale: + attributes["locale"] = locale + treeherder["symbol"] = f"p({locale})" + attributes["shipping_phase"] = job["shipping-phase"] + + build_locale = locale or "en-US" + + build_platform = attributes["build_platform"] + builds = get_builds( + config.params["release_history"], build_platform, build_locale + ) + + # If the list is empty there's no available history for this platform + # and locale combination, so we can't build any partials. + if not builds: + continue + + extra = {"funsize": {"partials": list()}} + update_number = 1 + + locale_suffix = "" + if locale: + locale_suffix = f"{locale}/" + artifact_path = "<{}/{}/{}target.complete.mar>".format( + dep_job.kind, + get_artifact_prefix(dep_job), + locale_suffix, + ) + for build in sorted(builds): + partial_info = { + "locale": build_locale, + "from_mar": builds[build]["mar_url"], + "to_mar": {"artifact-reference": artifact_path}, + "branch": config.params["project"], + "update_number": update_number, + "dest_mar": build, + } + if "product" in builds[build]: + partial_info["product"] = builds[build]["product"] + if "previousVersion" in builds[build]: + partial_info["previousVersion"] = builds[build]["previousVersion"] + if "previousBuildNumber" in builds[build]: + partial_info["previousBuildNumber"] = builds[build][ + "previousBuildNumber" + ] + extra["funsize"]["partials"].append(partial_info) + update_number += 1 + + level = config.params["level"] + + worker = { + "artifacts": _generate_task_output_files(dep_job, builds.keys(), locale), + "implementation": "docker-worker", + "docker-image": {"in-tree": "funsize-update-generator"}, + "os": "linux", + "max-run-time": 3600 if "asan" in dep_job.label else 1800, + "chain-of-trust": True, + "taskcluster-proxy": True, + "env": { + "SIGNING_CERT": identify_desired_signing_keys( + config.params["project"], config.params["release_product"] + ), + "EXTRA_PARAMS": f"--arch={architecture(build_platform)}", + "MAR_CHANNEL_ID": attributes["mar-channel-id"], + }, + } + if release_level(config.params["project"]) == "staging": + worker["env"]["FUNSIZE_ALLOW_STAGING_PREFIXES"] = "true" + + task = { + "label": label, + "description": f"{dep_job.description} Partials", + "worker-type": "b-linux-gcp", + "dependencies": dependencies, + "scopes": [], + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "extra": extra, + "worker": worker, + } + + # We only want caching on linux/windows due to bug 1436977 + if int(level) == 3 and any( + [build_platform.startswith(prefix) for prefix in ["linux", "win"]] + ): + task["scopes"].append( + "auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/" + ) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/partner_attribution.py b/taskcluster/gecko_taskgraph/transforms/partner_attribution.py new file mode 100644 index 0000000000..0bd5e0d141 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/partner_attribution.py @@ -0,0 +1,129 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the partner attribution task into an actual task description. +""" + + +import json +import logging +from collections import defaultdict + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.partners import ( + apply_partner_priority, + check_if_partners_enabled, + generate_attribution_code, + get_partner_config_by_kind, +) + +log = logging.getLogger(__name__) + +transforms = TransformSequence() +transforms.add(check_if_partners_enabled) +transforms.add(apply_partner_priority) + + +@transforms.add +def add_command_arguments(config, tasks): + enabled_partners = config.params.get("release_partners") + dependencies = {} + fetches = defaultdict(set) + attributions = [] + release_artifacts = [] + attribution_config = get_partner_config_by_kind(config, config.kind) + + for partner_config in attribution_config.get("configs", []): + # we might only be interested in a subset of all partners, eg for a respin + if enabled_partners and partner_config["campaign"] not in enabled_partners: + continue + attribution_code = generate_attribution_code( + attribution_config["defaults"], partner_config + ) + for platform in partner_config["platforms"]: + stage_platform = platform.replace("-shippable", "") + for locale in partner_config["locales"]: + # find the upstream, throw away locales we don't have, somehow. Skip ? + if locale == "en-US": + upstream_label = "repackage-signing-{platform}/opt".format( + platform=platform + ) + upstream_artifact = "target.installer.exe" + else: + upstream_label = ( + "repackage-signing-l10n-{locale}-{platform}/opt".format( + locale=locale, platform=platform + ) + ) + upstream_artifact = "{locale}/target.installer.exe".format( + locale=locale + ) + if upstream_label not in config.kind_dependencies_tasks: + raise Exception(f"Can't find upstream task for {platform} {locale}") + upstream = config.kind_dependencies_tasks[upstream_label] + + # set the dependencies to just what we need rather than all of l10n + dependencies.update({upstream.label: upstream.label}) + + fetches[upstream_label].add((upstream_artifact, stage_platform, locale)) + + artifact_part = "{platform}/{locale}/target.installer.exe".format( + platform=stage_platform, locale=locale + ) + artifact = ( + "releng/partner/{partner}/{sub_partner}/{artifact_part}".format( + partner=partner_config["campaign"], + sub_partner=partner_config["content"], + artifact_part=artifact_part, + ) + ) + # config for script + # TODO - generalise input & output ?? + # add releng/partner prefix via get_artifact_prefix..() + attributions.append( + { + "input": f"/builds/worker/fetches/{artifact_part}", + "output": f"/builds/worker/artifacts/{artifact}", + "attribution": attribution_code, + } + ) + release_artifacts.append(artifact) + + # bail-out early if we don't have any attributions to do + if not attributions: + return + + for task in tasks: + worker = task.get("worker", {}) + worker["chain-of-trust"] = True + + task.setdefault("dependencies", {}).update(dependencies) + task.setdefault("fetches", {}) + for upstream_label, upstream_artifacts in fetches.items(): + task["fetches"][upstream_label] = [ + { + "artifact": upstream_artifact, + "dest": "{platform}/{locale}".format( + platform=platform, locale=locale + ), + "extract": False, + "verify-hash": True, + } + for upstream_artifact, platform, locale in upstream_artifacts + ] + worker.setdefault("env", {})["ATTRIBUTION_CONFIG"] = json.dumps( + attributions, sort_keys=True + ) + worker["artifacts"] = [ + { + "name": "releng/partner", + "path": "/builds/worker/artifacts/releng/partner", + "type": "directory", + } + ] + task.setdefault("attributes", {})["release_artifacts"] = release_artifacts + task["label"] = config.kind + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py b/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py new file mode 100644 index 0000000000..b2c435dd81 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py @@ -0,0 +1,202 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +from collections import defaultdict +from copy import deepcopy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.partners import ( + apply_partner_priority, + get_partner_config_by_kind, +) +from gecko_taskgraph.util.scriptworker import ( + add_scope_prefix, + get_beetmover_bucket_scope, +) + +beetmover_description_schema = schema.extend( + { + # depname is used in taskref's to identify the taskID of the unsigned things + Required("depname", default="build"): str, + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Optional("label"): str, + Required("partner-bucket-scope"): optionally_keyed_by("release-level", str), + Required("partner-public-path"): Any(None, str), + Required("partner-private-path"): Any(None, str), + Optional("extra"): object, + Required("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("priority"): task_description_schema["priority"], + } +) + +transforms = TransformSequence() +transforms.add_validate(beetmover_description_schema) +transforms.add(apply_partner_priority) + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "partner-bucket-scope", + item_name=job["label"], + **{"release-level": release_level(config.params["project"])}, + ) + yield job + + +@transforms.add +def split_public_and_private(config, jobs): + # we need to separate private vs public destinations because beetmover supports one + # in a single task. Only use a single task for each type though. + partner_config = get_partner_config_by_kind(config, config.kind) + for job in jobs: + upstream_artifacts = job["primary-dependency"].attributes.get( + "release_artifacts" + ) + attribution_task_ref = "<{}>".format(job["primary-dependency"].label) + prefix = get_artifact_prefix(job["primary-dependency"]) + artifacts = defaultdict(list) + for artifact in upstream_artifacts: + partner, sub_partner, platform, locale, _ = artifact.replace( + prefix + "/", "" + ).split("/", 4) + destination = "private" + this_config = [ + p + for p in partner_config["configs"] + if (p["campaign"] == partner and p["content"] == sub_partner) + ] + if this_config[0].get("upload_to_candidates"): + destination = "public" + artifacts[destination].append( + (artifact, partner, sub_partner, platform, locale) + ) + + action_scope = add_scope_prefix(config, "beetmover:action:push-to-partner") + public_bucket_scope = get_beetmover_bucket_scope(config) + partner_bucket_scope = add_scope_prefix(config, job["partner-bucket-scope"]) + repl_dict = { + "build_number": config.params["build_number"], + "release_partner_build_number": config.params[ + "release_partner_build_number" + ], + "version": config.params["version"], + "partner": "{partner}", # we'll replace these later, per artifact + "subpartner": "{subpartner}", + "platform": "{platform}", + "locale": "{locale}", + } + for destination, destination_artifacts in artifacts.items(): + this_job = deepcopy(job) + + if destination == "public": + this_job["scopes"] = [public_bucket_scope, action_scope] + this_job["partner_public"] = True + else: + this_job["scopes"] = [partner_bucket_scope, action_scope] + this_job["partner_public"] = False + + partner_path_key = f"partner-{destination}-path" + partner_path = this_job[partner_path_key].format(**repl_dict) + this_job.setdefault("worker", {})[ + "upstream-artifacts" + ] = generate_upstream_artifacts( + attribution_task_ref, destination_artifacts, partner_path + ) + + yield this_job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + attributes = dep_job.attributes + build_platform = attributes.get("build_platform") + if not build_platform: + raise Exception("Cannot find build platform!") + + label = config.kind + description = "Beetmover for partner attribution" + if job["partner_public"]: + label = f"{label}-public" + description = f"{description} public" + else: + label = f"{label}-private" + description = f"{description} private" + attributes = copy_attributes_from_dependent_job(dep_job) + + task = { + "label": label, + "description": description, + "dependencies": {dep_job.kind: dep_job.label}, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "shipping-phase": job["shipping-phase"], + "shipping-product": job.get("shipping-product"), + "partner_public": job["partner_public"], + "worker": job["worker"], + "scopes": job["scopes"], + } + # we may have reduced the priority for partner jobs, otherwise task.py will set it + if job.get("priority"): + task["priority"] = job["priority"] + + yield task + + +def generate_upstream_artifacts(attribution_task, artifacts, partner_path): + upstream_artifacts = [] + for artifact, partner, subpartner, platform, locale in artifacts: + upstream_artifacts.append( + { + "taskId": {"task-reference": attribution_task}, + "taskType": "repackage", + "paths": [artifact], + "locale": partner_path.format( + partner=partner, + subpartner=subpartner, + platform=platform, + locale=locale, + ), + } + ) + + if not upstream_artifacts: + raise Exception("Couldn't find any upstream artifacts.") + + return upstream_artifacts + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + job["worker-type"] = "beetmover" + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "partner-public": job["partner_public"], + } + job["worker"].update(worker) + del job["partner_public"] + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/partner_repack.py b/taskcluster/gecko_taskgraph/transforms/partner_repack.py new file mode 100644 index 0000000000..d164c10a59 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/partner_repack.py @@ -0,0 +1,136 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the partner repack task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.partners import ( + apply_partner_priority, + check_if_partners_enabled, + get_partner_config_by_kind, + get_partner_url_config, + get_repack_ids_by_platform, +) +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() +transforms.add(check_if_partners_enabled) +transforms.add(apply_partner_priority) + + +@transforms.add +def skip_unnecessary_platforms(config, tasks): + for task in tasks: + if config.kind == "release-partner-repack": + platform = task["attributes"]["build_platform"] + repack_ids = get_repack_ids_by_platform(config, platform) + if not repack_ids: + continue + yield task + + +@transforms.add +def remove_mac_dependency(config, tasks): + """Remove mac dependency depending on current level + to accomodate for mac notarization not running on level 1 + """ + level = int(config.params.get("level", 0)) + for task in tasks: + if "macosx" not in task["attributes"]["build_platform"]: + yield task + continue + skipped_kind = "mac-signing" if level == 3 else "mac-notarization" + for dep_label in list(task["dependencies"].keys()): + if skipped_kind in dep_label: + del task["dependencies"][dep_label] + yield task + + +@transforms.add +def populate_repack_manifests_url(config, tasks): + for task in tasks: + partner_url_config = get_partner_url_config(config.params, config.graph_config) + + for k in partner_url_config: + if config.kind.startswith(k): + task["worker"].setdefault("env", {})[ + "REPACK_MANIFESTS_URL" + ] = partner_url_config[k] + break + else: + raise Exception("Can't find partner REPACK_MANIFESTS_URL") + + for property in ("limit-locales",): + property = f"extra.{property}" + resolve_keyed_by( + task, + property, + property, + **{"release-level": release_level(config.params["project"])}, + ) + + if task["worker"]["env"]["REPACK_MANIFESTS_URL"].startswith("git@"): + task.setdefault("scopes", []).append( + "secrets:get:project/releng/gecko/build/level-{level}/partner-github-ssh".format( + **config.params + ) + ) + + yield task + + +@transforms.add +def make_label(config, tasks): + for task in tasks: + task["label"] = "{}-{}".format(config.kind, task["name"]) + yield task + + +@transforms.add +def add_command_arguments(config, tasks): + release_config = get_release_config(config) + + # staging releases - pass reduced set of locales to the repacking script + all_locales = set() + partner_config = get_partner_config_by_kind(config, config.kind) + for partner in partner_config.values(): + for sub_partner in partner.values(): + all_locales.update(sub_partner.get("locales", [])) + + for task in tasks: + # add the MOZHARNESS_OPTIONS, eg version=61.0, build-number=1, platform=win64 + if not task["attributes"]["build_platform"].endswith("-shippable"): + raise Exception( + "Unexpected partner repack platform: {}".format( + task["attributes"]["build_platform"], + ), + ) + platform = task["attributes"]["build_platform"].partition("-shippable")[0] + task["run"]["options"] = [ + "version={}".format(release_config["version"]), + "build-number={}".format(release_config["build_number"]), + f"platform={platform}", + ] + if task["extra"]["limit-locales"]: + for locale in all_locales: + task["run"]["options"].append(f"limit-locale={locale}") + if "partner" in config.kind and config.params["release_partners"]: + for partner in config.params["release_partners"]: + task["run"]["options"].append(f"partner={partner}") + + # The upstream taskIds are stored a special environment variable, because we want to use + # task-reference's to resolve dependencies, but the string handling of MOZHARNESS_OPTIONS + # blocks that. It's space-separated string of ids in the end. + task["worker"]["env"]["UPSTREAM_TASKIDS"] = { + "task-reference": " ".join([f"<{dep}>" for dep in task["dependencies"]]) + } + + # Forward the release type for bouncer product construction + task["worker"]["env"]["RELEASE_TYPE"] = config.params["release_type"] + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/partner_signing.py b/taskcluster/gecko_taskgraph/transforms/partner_signing.py new file mode 100644 index 0000000000..c9b6b7a8cc --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/partner_signing.py @@ -0,0 +1,66 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.partners import get_partner_config_by_kind +from gecko_taskgraph.util.signed_artifacts import ( + generate_specifications_of_artifacts_to_sign, +) + +transforms = TransformSequence() + + +@transforms.add +def set_mac_label(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + if "mac-notarization" in config.kind: + default_label = dep_job.label.replace("mac-signing", "mac-notarization") + job.setdefault("label", default_label) + assert job["label"] != dep_job.label, "Unable to determine label for {}".format( + config.kind + ) + yield job + + +@transforms.add +def define_upstream_artifacts(config, jobs): + partner_configs = get_partner_config_by_kind(config, config.kind) + if not partner_configs: + return + + for job in jobs: + dep_job = job["primary-dependency"] + job["depname"] = dep_job.label + job["attributes"] = copy_attributes_from_dependent_job(dep_job) + + repack_ids = job["extra"]["repack_ids"] + artifacts_specifications = generate_specifications_of_artifacts_to_sign( + config, + job, + keep_locale_template=True, + kind=config.kind, + ) + task_type = "build" + if "notarization" in job["depname"] or "mac-signing" in job["depname"]: + task_type = "scriptworker" + job["upstream-artifacts"] = [ + { + "taskId": {"task-reference": f"<{dep_job.kind}>"}, + "taskType": task_type, + "paths": [ + path_template.format(locale=repack_id) + for path_template in spec["artifacts"] + for repack_id in repack_ids + ], + "formats": spec["formats"], + } + for spec in artifacts_specifications + ] + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py b/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py new file mode 100644 index 0000000000..5237f4f281 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py @@ -0,0 +1,33 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job + +transforms = TransformSequence() + + +@transforms.add +def one_task_per_product_and_platform(config, jobs): + unique_products_and_platforms = set() + for job in jobs: + dep_task = job["primary-dependency"] + if "primary-dependency" in job: + del job["primary-dependency"] + product = dep_task.attributes.get("shipping_product") + platform = dep_task.attributes.get("build_platform") + if (product, platform) not in unique_products_and_platforms: + attr_denylist = ("l10n_chunk", "locale", "artifact_map", "artifact_prefix") + attributes = copy_attributes_from_dependent_job( + dep_task, denylist=attr_denylist + ) + attributes.update(job.get("attributes", {})) + job["attributes"] = attributes + job["name"] = f"{product}-{platform}" + yield job + unique_products_and_platforms.add((product, platform)) diff --git a/taskcluster/gecko_taskgraph/transforms/perftest.py b/taskcluster/gecko_taskgraph/transforms/perftest.py new file mode 100644 index 0000000000..5c579b48b5 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/perftest.py @@ -0,0 +1,351 @@ +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This transform passes options from `mach perftest` to the corresponding task. +""" + + +import json +from copy import deepcopy +from datetime import date, timedelta + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import join_symbol, split_symbol +from voluptuous import Any, Extra, Optional + +transforms = TransformSequence() + + +perftest_description_schema = Schema( + { + # The test names and the symbols to use for them: [test-symbol, test-path] + Optional("perftest"): [[str]], + # Metrics to gather for the test. These will be merged + # with options specified through perftest-perfherder-global + Optional("perftest-metrics"): optionally_keyed_by( + "perftest", + Any( + [str], + {str: Any(None, {str: Any(None, str, [str])})}, + ), + ), + # Perfherder data options that will be applied to + # all metrics gathered. + Optional("perftest-perfherder-global"): optionally_keyed_by( + "perftest", {str: Any(None, str, [str])} + ), + # Extra options to add to the test's command + Optional("perftest-extra-options"): optionally_keyed_by("perftest", [str]), + # Variants of the test to make based on extra browsertime + # arguments. Expecting: + # [variant-suffix, options-to-use] + # If variant-suffix is `null` then the options will be added + # to the existing task. Otherwise, a new variant is created + # with the given suffix and with its options replaced. + Optional("perftest-btime-variants"): optionally_keyed_by( + "perftest", [[Any(None, str)]] + ), + # These options will be parsed in the next schemas + Extra: object, + } +) + + +transforms.add_validate(perftest_description_schema) + + +@transforms.add +def split_tests(config, jobs): + for job in jobs: + if job.get("perftest") is None: + yield job + continue + + for test_symbol, test_name in job.pop("perftest"): + job_new = deepcopy(job) + + job_new["perftest"] = test_symbol + job_new["name"] += "-" + test_symbol + job_new["treeherder"]["symbol"] = job["treeherder"]["symbol"].format( + symbol=test_symbol + ) + job_new["run"]["command"] = job["run"]["command"].replace( + "{perftest_testname}", test_name + ) + + yield job_new + + +@transforms.add +def handle_keyed_by_perftest(config, jobs): + fields = ["perftest-metrics", "perftest-extra-options", "perftest-btime-variants"] + for job in jobs: + if job.get("perftest") is None: + yield job + continue + + for field in fields: + resolve_keyed_by(job, field, item_name=job["name"]) + + job.pop("perftest") + yield job + + +@transforms.add +def parse_perftest_metrics(config, jobs): + """Parse the metrics into a dictionary immediately. + + This way we can modify the extraOptions field (and others) entry through the + transforms that come later. The metrics aren't formatted until the end of the + transforms. + """ + for job in jobs: + if job.get("perftest-metrics") is None: + yield job + continue + perftest_metrics = job.pop("perftest-metrics") + + # If perftest metrics is a string, split it up first + if isinstance(perftest_metrics, list): + new_metrics_info = [{"name": metric} for metric in perftest_metrics] + else: + new_metrics_info = [] + for metric, options in perftest_metrics.items(): + entry = {"name": metric} + entry.update(options) + new_metrics_info.append(entry) + + job["perftest-metrics"] = new_metrics_info + yield job + + +@transforms.add +def split_perftest_variants(config, jobs): + for job in jobs: + if job.get("variants") is None: + yield job + continue + + for variant in job.pop("variants"): + job_new = deepcopy(job) + + group, symbol = split_symbol(job_new["treeherder"]["symbol"]) + group += "-" + variant + job_new["treeherder"]["symbol"] = join_symbol(group, symbol) + job_new["name"] += "-" + variant + job_new.setdefault("perftest-perfherder-global", {}).setdefault( + "extraOptions", [] + ).append(variant) + job_new[variant] = True + + yield job_new + + yield job + + +@transforms.add +def split_btime_variants(config, jobs): + for job in jobs: + if job.get("perftest-btime-variants") is None: + yield job + continue + + variants = job.pop("perftest-btime-variants") + if not variants: + yield job + continue + + yield_existing = False + for suffix, options in variants: + if suffix is None: + # Append options to the existing job + job.setdefault("perftest-btime-variants", []).append(options) + yield_existing = True + else: + job_new = deepcopy(job) + group, symbol = split_symbol(job_new["treeherder"]["symbol"]) + symbol += "-" + suffix + job_new["treeherder"]["symbol"] = join_symbol(group, symbol) + job_new["name"] += "-" + suffix + job_new.setdefault("perftest-perfherder-global", {}).setdefault( + "extraOptions", [] + ).append(suffix) + # Replace the existing options with the new ones + job_new["perftest-btime-variants"] = [options] + yield job_new + + # The existing job has been modified so we should also return it + if yield_existing: + yield job + + +@transforms.add +def setup_http3_tests(config, jobs): + for job in jobs: + if job.get("http3") is None or not job.pop("http3"): + yield job + continue + job.setdefault("perftest-btime-variants", []).append( + "firefox.preference=network.http.http3.enable:true" + ) + yield job + + +@transforms.add +def setup_perftest_metrics(config, jobs): + for job in jobs: + if job.get("perftest-metrics") is None: + yield job + continue + perftest_metrics = job.pop("perftest-metrics") + + # Options to apply to each metric + global_options = job.pop("perftest-perfherder-global", {}) + for metric_info in perftest_metrics: + for opt, val in global_options.items(): + if isinstance(val, list) and opt in metric_info: + metric_info[opt].extend(val) + elif not (isinstance(val, list) and len(val) == 0): + metric_info[opt] = val + + quote_escape = '\\"' + if "win" in job.get("platform", ""): + # Escaping is a bit different on windows platforms + quote_escape = '\\\\\\"' + + job["run"]["command"] = job["run"]["command"].replace( + "{perftest_metrics}", + " ".join( + [ + ",".join( + [ + ":".join( + [ + option, + str(value) + .replace(" ", "") + .replace("'", quote_escape), + ] + ) + for option, value in metric_info.items() + ] + ) + for metric_info in perftest_metrics + ] + ), + ) + + yield job + + +@transforms.add +def setup_perftest_browsertime_variants(config, jobs): + for job in jobs: + if job.get("perftest-btime-variants") is None: + yield job + continue + + job["run"]["command"] += " --browsertime-extra-options %s" % ",".join( + [opt.strip() for opt in job.pop("perftest-btime-variants")] + ) + + yield job + + +@transforms.add +def setup_perftest_extra_options(config, jobs): + for job in jobs: + if job.get("perftest-extra-options") is None: + yield job + continue + job["run"]["command"] += " " + " ".join(job.pop("perftest-extra-options")) + yield job + + +@transforms.add +def pass_perftest_options(config, jobs): + for job in jobs: + env = job.setdefault("worker", {}).setdefault("env", {}) + env["PERFTEST_OPTIONS"] = json.dumps( + config.params["try_task_config"].get("perftest-options") + ) + yield job + + +@transforms.add +def setup_perftest_test_date(config, jobs): + for job in jobs: + if ( + job.get("attributes", {}).get("batch", False) + and "--test-date" not in job["run"]["command"] + ): + yesterday = (date.today() - timedelta(1)).strftime("%Y.%m.%d") + job["run"]["command"] += " --test-date %s" % yesterday + yield job + + +@transforms.add +def setup_regression_detector(config, jobs): + for job in jobs: + if "change-detector" in job.get("name"): + + tasks_to_analyze = [] + for task in config.params["try_task_config"].get("tasks", []): + # Explicitly skip these tasks since they're + # part of the mozperftest tasks + if "side-by-side" in task: + continue + if "change-detector" in task: + continue + + # Select these tasks + if "browsertime" in task: + tasks_to_analyze.append(task) + elif "talos" in task: + tasks_to_analyze.append(task) + elif "awsy" in task: + tasks_to_analyze.append(task) + elif "perftest" in task: + tasks_to_analyze.append(task) + + if len(tasks_to_analyze) == 0: + yield job + continue + + # Make the change detector task depend on the tasks to analyze. + # This prevents the task from running until all data is available + # within the current push. + job["soft-dependencies"] = tasks_to_analyze + job["requires"] = "all-completed" + + new_project = config.params["project"] + if ( + "try" in config.params["project"] + or config.params["try_mode"] == "try_select" + ): + new_project = "try" + + base_project = None + if ( + config.params.get("try_task_config", {}) + .get("env", {}) + .get("PERF_BASE_REVISION", None) + is not None + ): + task_names = " --task-name ".join(tasks_to_analyze) + base_revision = config.params["try_task_config"]["env"][ + "PERF_BASE_REVISION" + ] + base_project = new_project + + # Add all the required information to the task + job["run"]["command"] = job["run"]["command"].format( + task_name=task_names, + base_revision=base_revision, + base_branch=base_project, + new_branch=new_project, + new_revision=config.params["head_rev"], + ) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/python_update.py b/taskcluster/gecko_taskgraph/transforms/python_update.py new file mode 100644 index 0000000000..f4f135b585 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/python_update.py @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repo-update task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def resolve_keys(config, tasks): + for task in tasks: + env = task["worker"].setdefault("env", {}) + env["BRANCH"] = config.params["project"] + for envvar in env: + resolve_keyed_by(env, envvar, envvar, **config.params) + + for envvar in list(env.keys()): + if not env.get(envvar): + del env[envvar] + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/release.py b/taskcluster/gecko_taskgraph/transforms/release.py new file mode 100644 index 0000000000..1158252fe7 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release.py @@ -0,0 +1,20 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Transforms for release tasks +""" + + +def run_on_releases(config, jobs): + """ + Filter out jobs with `run-on-releases` set, and that don't match the + `release_type` paramater. + """ + for job in jobs: + release_type = config.params["release_type"] + run_on_release_types = job.pop("run-on-releases", None) + + if run_on_release_types is None or release_type in run_on_release_types: + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py b/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py new file mode 100644 index 0000000000..fb8eb91f44 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py @@ -0,0 +1,243 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +import copy +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import inherit_treeherder_from_dep +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +logger = logging.getLogger(__name__) + + +transforms = TransformSequence() + + +beetmover_description_schema = schema.extend( + { + # attributes is used for enabling artifact-map by declarative artifacts + Required("attributes"): {str: object}, + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Optional("label"): str, + # treeherder is allowed here to override any defaults we use for beetmover. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + Required("description"): str, + Required("worker-type"): optionally_keyed_by("release-level", str), + Required("run-on-projects"): [], + # locale is passed only for l10n beetmoving + Optional("locale"): str, + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + } +) + + +transforms.add_validate(beetmover_description_schema) + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + for field in ("worker-type", "attributes.artifact_map"): + resolve_keyed_by( + job, + field, + item_name=job["label"], + **{ + "release-level": release_level(config.params["project"]), + "release-type": config.params["release_type"], + "project": config.params["project"], + }, + ) + yield job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault( + "symbol", "langpack(BM{})".format(attributes.get("l10n_chunk", "")) + ) + + job["attributes"].update(copy_attributes_from_dependent_job(dep_job)) + job["attributes"]["chunk_locales"] = dep_job.attributes.get( + "chunk_locales", ["en-US"] + ) + + job["description"] = job["description"].format( + locales="/".join(job["attributes"]["chunk_locales"]), + platform=job["attributes"]["build_platform"], + ) + + job["scopes"] = [ + get_beetmover_bucket_scope(config), + get_beetmover_action_scope(config), + ] + + job["dependencies"] = {"langpack-copy": dep_job.label} + + job["run-on-projects"] = job.get( + "run_on_projects", dep_job.attributes["run_on_projects"] + ) + job["treeherder"] = treeherder + job["shipping-phase"] = job.get( + "shipping-phase", dep_job.attributes["shipping_phase"] + ) + job["shipping-product"] = dep_job.attributes["shipping_product"] + + yield job + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + platform = job["attributes"]["build_platform"] + locale = job["attributes"]["chunk_locales"] + + job["worker"] = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, + job, + platform, + locale, + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform, locale=locale + ), + } + + yield job + + +@transforms.add +def strip_unused_data(config, jobs): + for job in jobs: + del job["primary-dependency"] + + yield job + + +@transforms.add +def yield_all_platform_jobs(config, jobs): + # Even though langpacks are now platform independent, we keep beetmoving them at old + # platform-specific locations. That's why this transform exist + # The linux64 and mac specific ja-JP-mac are beetmoved along with the signing beetmover + # So while the dependent jobs are linux here, we only yield jobs for other platforms + for job in jobs: + platforms = ("linux", "macosx64", "win32", "win64") + if "devedition" in job["attributes"]["build_platform"]: + platforms = (f"{plat}-devedition" for plat in platforms) + for platform in platforms: + platform_job = copy.deepcopy(job) + if "ja" in platform_job["attributes"]["chunk_locales"] and platform in ( + "macosx64", + "macosx64-devedition", + ): + platform_job = _strip_ja_data_from_linux_job(platform_job) + + platform_job = _change_platform_data(config, platform_job, platform) + + yield platform_job + + +def _strip_ja_data_from_linux_job(platform_job): + # Let's take "ja" out the description. This locale is in a substring like "aa/bb/cc/dd", where + # "ja" could be any of "aa", "bb", "cc", "dd" + platform_job["description"] = platform_job["description"].replace("ja/", "") + platform_job["description"] = platform_job["description"].replace("/ja", "") + + platform_job["worker"]["upstream-artifacts"] = [ + artifact + for artifact in platform_job["worker"]["upstream-artifacts"] + if artifact["locale"] != "ja" + ] + + return platform_job + + +def _change_platform_in_artifact_map_paths(paths, orig_platform, new_platform): + amended_paths = {} + for artifact, artifact_info in paths.items(): + amended_artifact_info = { + "checksums_path": artifact_info["checksums_path"].replace( + orig_platform, new_platform + ), + "destinations": [ + d.replace(orig_platform, new_platform) + for d in artifact_info["destinations"] + ], + } + amended_paths[artifact] = amended_artifact_info + + return amended_paths + + +def _change_platform_data(config, platform_job, platform): + orig_platform = "linux64" + if "devedition" in platform: + orig_platform = "linux64-devedition" + platform_job["attributes"]["build_platform"] = platform + platform_job["label"] = platform_job["label"].replace(orig_platform, platform) + platform_job["description"] = platform_job["description"].replace( + orig_platform, platform + ) + platform_job["treeherder"]["platform"] = platform_job["treeherder"][ + "platform" + ].replace(orig_platform, platform) + platform_job["worker"]["release-properties"]["platform"] = platform + + # amend artifactMap entries as well + platform_mapping = { + "linux64": "linux-x86_64", + "linux": "linux-i686", + "macosx64": "mac", + "win32": "win32", + "win64": "win64", + "linux64-devedition": "linux-x86_64", + "linux-devedition": "linux-i686", + "macosx64-devedition": "mac", + "win32-devedition": "win32", + "win64-devedition": "win64", + } + orig_platform = platform_mapping.get(orig_platform, orig_platform) + platform = platform_mapping.get(platform, platform) + platform_job["worker"]["artifact-map"] = [ + { + "locale": entry["locale"], + "taskId": entry["taskId"], + "paths": _change_platform_in_artifact_map_paths( + entry["paths"], orig_platform, platform + ), + } + for entry in platform_job["worker"]["artifact-map"] + ] + + return platform_job diff --git a/taskcluster/gecko_taskgraph/transforms/release_deps.py b/taskcluster/gecko_taskgraph/transforms/release_deps.py new file mode 100644 index 0000000000..e44af576eb --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_deps.py @@ -0,0 +1,61 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add dependencies to release tasks. +""" + +from taskgraph.transforms.base import TransformSequence + +PHASES = ["build", "promote", "push", "ship"] + +transforms = TransformSequence() + + +@transforms.add +def add_dependencies(config, jobs): + for job in jobs: + dependencies = {} + # Add any kind_dependencies_tasks with matching product as dependencies + product = job.get("shipping-product") + phase = job.get("shipping-phase") + if product is None: + continue + + required_signoffs = set( + job.setdefault("attributes", {}).get("required_signoffs", []) + ) + for dep_task in config.kind_dependencies_tasks.values(): + # Weed out unwanted tasks. + # XXX we have run-on-projects which specifies the on-push behavior; + # we need another attribute that specifies release promotion, + # possibly which action(s) each task belongs in. + + # We can only depend on tasks in the current or previous phases + dep_phase = dep_task.attributes.get("shipping_phase") + if dep_phase and PHASES.index(dep_phase) > PHASES.index(phase): + continue + + if dep_task.attributes.get("build_platform") and job.get( + "attributes", {} + ).get("build_platform"): + if ( + dep_task.attributes["build_platform"] + != job["attributes"]["build_platform"] + ): + continue + # Add matching product tasks to deps + if ( + dep_task.task.get("shipping-product") == product + or dep_task.attributes.get("shipping_product") == product + ): + dependencies[dep_task.label] = dep_task.label + required_signoffs.update( + dep_task.attributes.get("required_signoffs", []) + ) + + job.setdefault("dependencies", {}).update(dependencies) + if required_signoffs: + job["attributes"]["required_signoffs"] = sorted(required_signoffs) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py b/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py new file mode 100644 index 0000000000..8a336502e6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the release-flatpak-push kind into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from voluptuous import Optional, Required + +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import add_scope_prefix + +push_flatpak_description_schema = Schema( + { + Required("name"): str, + Required("job-from"): task_description_schema["job-from"], + Required("dependencies"): task_description_schema["dependencies"], + Required("description"): task_description_schema["description"], + Required("treeherder"): task_description_schema["treeherder"], + Required("run-on-projects"): task_description_schema["run-on-projects"], + Required("worker-type"): optionally_keyed_by("release-level", str), + Required("worker"): object, + Optional("scopes"): [str], + Required("shipping-phase"): task_description_schema["shipping-phase"], + Required("shipping-product"): task_description_schema["shipping-product"], + Optional("extra"): task_description_schema["extra"], + Optional("attributes"): task_description_schema["attributes"], + } +) + +transforms = TransformSequence() +transforms.add_validate(push_flatpak_description_schema) + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + if len(job["dependencies"]) != 1: + raise Exception("Exactly 1 dependency is required") + + job["worker"]["upstream-artifacts"] = generate_upstream_artifacts( + job["dependencies"] + ) + + resolve_keyed_by( + job, + "worker.channel", + item_name=job["name"], + **{"release-type": config.params["release_type"]}, + ) + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])}, + ) + if release_level(config.params["project"]) == "production": + job.setdefault("scopes", []).append( + add_scope_prefix( + config, + "flathub:firefox:{}".format(job["worker"]["channel"]), + ) + ) + + yield job + + +def generate_upstream_artifacts(dependencies): + return [ + { + "taskId": {"task-reference": f"<{task_kind}>"}, + "taskType": "build", + "paths": ["public/build/target.flatpak.tar.xz"], + } + for task_kind in dependencies.keys() + ] diff --git a/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py b/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py new file mode 100644 index 0000000000..7af1134c3a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +@transforms.add +def format(config, tasks): + """Apply format substitution to worker.env and worker.command.""" + + format_params = { + "release_config": get_release_config(config), + "config_params": config.params, + } + + for task in tasks: + format_params["task"] = task + + command = task.get("worker", {}).get("command", []) + task["worker"]["command"] = [x.format(**format_params) for x in command] + + env = task.get("worker", {}).get("env", {}) + for k in env.keys(): + resolve_keyed_by( + env, + k, + "flatpak envs", + **{ + "release-level": release_level(config.params["project"]), + "project": config.params["project"], + } + ) + task["worker"]["env"][k] = env[k].format(**format_params) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py new file mode 100644 index 0000000000..0024b88726 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py @@ -0,0 +1,53 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the checksums task into an actual task description. +""" + +import copy +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by project, etc.""" + fields = [ + "run.config", + "run.extra-config", + ] + for job in jobs: + job = copy.deepcopy(job) + for field in fields: + resolve_keyed_by( + item=job, + field=field, + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + yield job + + +@transforms.add +def interpolate(config, jobs): + release_config = get_release_config(config) + for job in jobs: + mh_options = list(job["run"]["options"]) + job["run"]["options"] = [ + option.format( + version=release_config["version"], + build_number=release_config["build_number"], + ) + for option in mh_options + ] + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py new file mode 100644 index 0000000000..c91e807b27 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py @@ -0,0 +1,118 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the `release-generate-checksums-beetmover` task to also append `build` as dependency +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.beetmover import craft_release_properties +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, + get_beetmover_action_scope, + get_beetmover_bucket_scope, +) + +transforms = TransformSequence() + + +release_generate_checksums_beetmover_schema = schema.extend( + { + # unique label to describe this beetmover task, defaults to {dep.label}-beetmover + Optional("label"): str, + # treeherder is allowed here to override any defaults we use for beetmover. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("attributes"): task_description_schema["attributes"], + } +) + +transforms = TransformSequence() +transforms.add_validate(release_generate_checksums_beetmover_schema) + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + attributes.update(job.get("attributes", {})) + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "BM-SGenChcks") + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + + job_template = f"{dep_job.label}" + label = job_template.replace("signing", "beetmover") + + description = "Transfer *SUMS and *SUMMARY checksums file to S3." + + # first dependency is the signing task for the *SUMS files + dependencies = {dep_job.kind: dep_job.label} + + if len(dep_job.dependencies) > 1: + raise NotImplementedError( + "Can't beetmove a signing task with multiple dependencies" + ) + # update the dependencies with the dependencies of the signing task + dependencies.update(dep_job.dependencies) + + bucket_scope = get_beetmover_bucket_scope(config) + action_scope = get_beetmover_action_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "beetmover", + "scopes": [bucket_scope, action_scope], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + "shipping-phase": "promote", + } + + yield task + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + valid_beetmover_job = len(job["dependencies"]) == 2 and any( + ["signing" in j for j in job["dependencies"]] + ) + if not valid_beetmover_job: + raise NotImplementedError("Beetmover must have two dependencies.") + + platform = job["attributes"]["build_platform"] + worker = { + "implementation": "beetmover", + "release-properties": craft_release_properties(config, job), + "upstream-artifacts": generate_beetmover_upstream_artifacts( + config, job, platform=None, locale=None + ), + "artifact-map": generate_beetmover_artifact_map( + config, job, platform=platform + ), + } + + job["worker"] = worker + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py new file mode 100644 index 0000000000..6dfee1d33b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py @@ -0,0 +1,86 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the release-generate-checksums-signing task into task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_path +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope + +release_generate_checksums_signing_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +transforms = TransformSequence() +transforms.add_validate(release_generate_checksums_signing_schema) + + +@transforms.add +def make_release_generate_checksums_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "SGenChcks") + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + + job_template = "{}-{}".format(dep_job.label, "signing") + label = job.get("label", job_template) + description = "Signing of the overall release-related checksums" + + dependencies = {dep_job.kind: dep_job.label} + + upstream_artifacts = [ + { + "taskId": {"task-reference": f"<{str(dep_job.kind)}>"}, + "taskType": "build", + "paths": [ + get_artifact_path(dep_job, "SHA256SUMS"), + get_artifact_path(dep_job, "SHA512SUMS"), + ], + "formats": ["autograph_gpg"], + } + ] + + signing_cert_scope = get_signing_cert_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "linux-signing", + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + "max-run-time": 3600, + }, + "scopes": [ + signing_cert_scope, + ], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + } + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py b/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py new file mode 100644 index 0000000000..f2ce148320 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +@transforms.add +def make_task_description(config, jobs): + release_config = get_release_config(config) + for job in jobs: + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + resolve_keyed_by( + job, + "scopes", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])} + ) + + job["worker"][ + "release-name" + ] = "{product}-{version}-build{build_number}".format( + product=job["shipping-product"].capitalize(), + version=release_config["version"], + build_number=release_config["build_number"], + ) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_msix_push.py b/taskcluster/gecko_taskgraph/transforms/release_msix_push.py new file mode 100644 index 0000000000..817341f92c --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_msix_push.py @@ -0,0 +1,88 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the release-msix-push kind into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from voluptuous import Optional, Required + +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import add_scope_prefix + +push_msix_description_schema = Schema( + { + Required("name"): str, + Required("job-from"): task_description_schema["job-from"], + Required("dependencies"): task_description_schema["dependencies"], + Required("description"): task_description_schema["description"], + Required("treeherder"): task_description_schema["treeherder"], + Required("run-on-projects"): task_description_schema["run-on-projects"], + Required("worker-type"): optionally_keyed_by("release-level", str), + Required("worker"): object, + Optional("scopes"): [str], + Required("shipping-phase"): task_description_schema["shipping-phase"], + Required("shipping-product"): task_description_schema["shipping-product"], + Optional("extra"): task_description_schema["extra"], + Optional("attributes"): task_description_schema["attributes"], + } +) + +transforms = TransformSequence() +transforms.add_validate(push_msix_description_schema) + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + + job["worker"]["upstream-artifacts"] = generate_upstream_artifacts( + job["dependencies"] + ) + + resolve_keyed_by( + job, + "worker.channel", + item_name=job["name"], + **{"release-type": config.params["release_type"]}, + ) + resolve_keyed_by( + job, + "worker.publish-mode", + item_name=job["name"], + **{"release-type": config.params["release_type"]}, + ) + resolve_keyed_by( + job, + "worker-type", + item_name=job["name"], + **{"release-level": release_level(config.params["project"])}, + ) + if release_level(config.params["project"]) == "production": + job.setdefault("scopes", []).append( + add_scope_prefix( + config, + "microsoftstore:{}".format(job["worker"]["channel"]), + ) + ) + + # Override shipping-phase for release: push to the Store early to + # allow time for certification. + if job["worker"]["publish-mode"] == "Manual": + job["shipping-phase"] = "promote" + + yield job + + +def generate_upstream_artifacts(dependencies): + return [ + { + "taskId": {"task-reference": f"<{task_kind}>"}, + "taskType": "build", + "paths": ["public/build/target.store.msix"], + } + for task_kind in dependencies.keys() + ] diff --git a/taskcluster/gecko_taskgraph/transforms/release_notifications.py b/taskcluster/gecko_taskgraph/transforms/release_notifications.py new file mode 100644 index 0000000000..86109ec5ed --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_notifications.py @@ -0,0 +1,73 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add notifications via taskcluster-notify for release tasks +""" +from string import Formatter + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +class TitleCaseFormatter(Formatter): + """Support title formatter for strings""" + + def convert_field(self, value, conversion): + if conversion == "t": + return str(value).title() + super().convert_field(value, conversion) + return value + + +titleformatter = TitleCaseFormatter() + + +@transforms.add +def add_notifications(config, jobs): + release_config = get_release_config(config) + + for job in jobs: + label = "{}-{}".format(config.kind, job["name"]) + + notifications = job.pop("notifications", None) + if notifications: + resolve_keyed_by( + notifications, "emails", label, project=config.params["project"] + ) + emails = notifications["emails"] + format_kwargs = dict( + task=job, + config=config.__dict__, + release_config=release_config, + ) + subject = titleformatter.format(notifications["subject"], **format_kwargs) + message = titleformatter.format(notifications["message"], **format_kwargs) + emails = [email.format(**format_kwargs) for email in emails] + + # By default, we only send mail on success to avoid messages like 'blah is in the + # candidates dir' when cancelling graphs, dummy job failure, etc + status_types = notifications.get("status-types", ["on-completed"]) + for s in status_types: + job.setdefault("routes", []).extend( + [f"notify.email.{email}.{s}" for email in emails] + ) + + # Customize the email subject to include release name and build number + job.setdefault("extra", {}).update( + { + "notify": { + "email": { + "subject": subject, + } + } + } + ) + if message: + job["extra"]["notify"]["email"]["content"] = message + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py b/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py new file mode 100644 index 0000000000..17e4d37fb3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py @@ -0,0 +1,180 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the release-sign-and-push task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import inherit_treeherder_from_dep +from voluptuous import Any, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) + +transforms = TransformSequence() + +langpack_sign_push_description_schema = schema.extend( + { + Required("label"): str, + Required("description"): str, + Required("worker-type"): optionally_keyed_by("release-level", str), + Required("worker"): { + Required("channel"): optionally_keyed_by( + "project", "platform", Any("listed", "unlisted") + ), + Required("upstream-artifacts"): None, # Processed here below + }, + Required("run-on-projects"): [], + Required("scopes"): optionally_keyed_by("release-level", [str]), + Required("shipping-phase"): task_description_schema["shipping-phase"], + Required("shipping-product"): task_description_schema["shipping-product"], + } +) + + +@transforms.add +def set_label(config, jobs): + for job in jobs: + label = "push-langpacks-{}".format(job["primary-dependency"].label) + job["label"] = label + + yield job + + +transforms.add_validate(langpack_sign_push_description_schema) + + +@transforms.add +def resolve_keys(config, jobs): + for job in jobs: + resolve_keyed_by( + job, + "worker-type", + item_name=job["label"], + **{"release-level": release_level(config.params["project"])}, + ) + resolve_keyed_by( + job, + "scopes", + item_name=job["label"], + **{"release-level": release_level(config.params["project"])}, + ) + resolve_keyed_by( + job, + "worker.channel", + item_name=job["label"], + project=config.params["project"], + platform=job["primary-dependency"].attributes["build_platform"], + ) + + yield job + + +@transforms.add +def copy_attributes(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + job["attributes"] = copy_attributes_from_dependent_job(dep_job) + job["attributes"]["chunk_locales"] = dep_job.attributes.get( + "chunk_locales", ["en-US"] + ) + + yield job + + +@transforms.add +def filter_out_macos_jobs_but_mac_only_locales(config, jobs): + for job in jobs: + build_platform = job["primary-dependency"].attributes.get("build_platform") + + if build_platform in ("linux64-devedition", "linux64-shippable"): + yield job + elif ( + build_platform in ("macosx64-devedition", "macosx64-shippable") + and "ja-JP-mac" in job["attributes"]["chunk_locales"] + ): + # Other locales of the same job shouldn't be processed + job["attributes"]["chunk_locales"] = ["ja-JP-mac"] + job["label"] = job["label"].replace( + # Guard against a chunk 10 or chunk 1 (latter on try) weird munging + "-{}/".format(job["attributes"]["l10n_chunk"]), + "-ja-JP-mac/", + ) + yield job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + treeherder = inherit_treeherder_from_dep(job, dep_job) + treeherder.setdefault( + "symbol", "langpack(SnP{})".format(job["attributes"].get("l10n_chunk", "")) + ) + + job["description"] = job["description"].format( + locales="/".join(job["attributes"]["chunk_locales"]), + ) + + job["dependencies"] = {dep_job.kind: dep_job.label} + job["treeherder"] = treeherder + + yield job + + +def generate_upstream_artifacts(upstream_task_ref, locales): + return [ + { + "taskId": {"task-reference": upstream_task_ref}, + "taskType": "build", + "paths": [ + "public/build{locale}/target.langpack.xpi".format( + locale="" if locale == "en-US" else "/" + locale + ) + for locale in locales + ], + } + ] + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + upstream_task_ref = get_upstream_task_ref( + job, expected_kinds=("build", "shippable-l10n") + ) + + job["worker"]["implementation"] = "push-addons" + job["worker"]["upstream-artifacts"] = generate_upstream_artifacts( + upstream_task_ref, job["attributes"]["chunk_locales"] + ) + + yield job + + +def get_upstream_task_ref(job, expected_kinds): + upstream_tasks = [ + job_kind + for job_kind in job["dependencies"].keys() + if job_kind in expected_kinds + ] + + if len(upstream_tasks) > 1: + raise Exception("Only one dependency expected") + + return f"<{upstream_tasks[0]}>" + + +@transforms.add +def strip_unused_data(config, jobs): + for job in jobs: + del job["primary-dependency"] + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py b/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py new file mode 100644 index 0000000000..659a203971 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +@transforms.add +def format(config, tasks): + """Apply format substitution to worker.env and worker.command.""" + + format_params = { + "release_config": get_release_config(config), + "config_params": config.params, + } + + for task in tasks: + format_params["task"] = task + + command = task.get("worker", {}).get("command", []) + task["worker"]["command"] = [x.format(**format_params) for x in command] + + env = task.get("worker", {}).get("env", {}) + for k in env.keys(): + resolve_keyed_by( + env, + k, + "snap envs", + **{"release-level": release_level(config.params["project"])} + ) + task["worker"]["env"][k] = env[k].format(**format_params) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/release_started.py b/taskcluster/gecko_taskgraph/transforms/release_started.py new file mode 100644 index 0000000000..0f54c8e098 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_started.py @@ -0,0 +1,52 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add notifications via taskcluster-notify for release tasks +""" +from pipes import quote as shell_quote + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def add_notifications(config, jobs): + for job in jobs: + label = "{}-{}".format(config.kind, job["name"]) + + resolve_keyed_by(job, "emails", label, project=config.params["project"]) + emails = [email.format(config=config.__dict__) for email in job.pop("emails")] + + command = [ + "release", + "send-buglist-email", + "--version", + config.params["version"], + "--product", + job["shipping-product"], + "--revision", + config.params["head_rev"], + "--build-number", + str(config.params["build_number"]), + "--repo", + config.params["head_repository"], + ] + for address in emails: + command += ["--address", address] + command += [ + # We wrap this in `{'task-reference': ...}` below + "--task-group-id", + "", + ] + + job["scopes"] = [f"notify:email:{address}" for address in emails] + job["run"] = { + "using": "mach", + "sparse-profile": "mach", + "mach": {"task-reference": " ".join(map(shell_quote, command))}, + } + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/release_version_bump.py b/taskcluster/gecko_taskgraph/transforms/release_version_bump.py new file mode 100644 index 0000000000..a0f3f69d05 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/release_version_bump.py @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the update generation task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def handle_keyed_by(config, tasks): + """Resolve fields that can be keyed by platform, etc.""" + default_fields = [ + "worker.push", + "worker.bump-files", + "worker-type", + ] + for task in tasks: + fields = default_fields[:] + for additional_field in ( + "l10n-bump-info", + "source-repo", + "dontbuild", + "ignore-closed-tree", + ): + if additional_field in task["worker"]: + fields.append(f"worker.{additional_field}") + for field in fields: + resolve_keyed_by( + task, + field, + item_name=task["name"], + **{ + "project": config.params["project"], + "release-type": config.params["release_type"], + }, + ) + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/repackage.py b/taskcluster/gecko_taskgraph/transforms/repackage.py new file mode 100644 index 0000000000..2fe849c32d --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage.py @@ -0,0 +1,684 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix +from voluptuous import Extra, Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.job import job_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.copy_task import copy_task +from gecko_taskgraph.util.platforms import architecture, archive_format +from gecko_taskgraph.util.workertypes import worker_type_implementation + +packaging_description_schema = schema.extend( + { + # unique label to describe this repackaging task + Optional("label"): str, + Optional("worker-type"): str, + Optional("worker"): object, + # treeherder is allowed here to override any defaults we use for repackaging. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): job_description_schema["treeherder"], + # If a l10n task, the corresponding locale + Optional("locale"): str, + # Routes specific to this task, if defined + Optional("routes"): [str], + # passed through directly to the job description + Optional("extra"): job_description_schema["extra"], + # passed through to job description + Optional("fetches"): job_description_schema["fetches"], + Optional("run-on-projects"): job_description_schema["run-on-projects"], + # Shipping product and phase + Optional("shipping-product"): job_description_schema["shipping-product"], + Optional("shipping-phase"): job_description_schema["shipping-phase"], + Required("package-formats"): optionally_keyed_by( + "build-platform", "release-type", [str] + ), + Optional("msix"): { + Optional("channel"): optionally_keyed_by( + "package-format", + "level", + "build-platform", + "release-type", + "shipping-product", + str, + ), + Optional("identity-name"): optionally_keyed_by( + "package-format", + "level", + "build-platform", + "release-type", + "shipping-product", + str, + ), + Optional("publisher"): optionally_keyed_by( + "package-format", + "level", + "build-platform", + "release-type", + "shipping-product", + str, + ), + Optional("publisher-display-name"): optionally_keyed_by( + "package-format", + "level", + "build-platform", + "release-type", + "shipping-product", + str, + ), + Optional("vendor"): str, + }, + # All l10n jobs use mozharness + Required("mozharness"): { + Extra: object, + # Config files passed to the mozharness script + Required("config"): optionally_keyed_by("build-platform", [str]), + # Additional paths to look for mozharness configs in. These should be + # relative to the base of the source checkout + Optional("config-paths"): [str], + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Optional("comm-checkout"): bool, + Optional("run-as-root"): bool, + Optional("use-caches"): bool, + }, + } +) + +# The configuration passed to the mozharness repackage script. This defines the +# arguments passed to `mach repackage` +# - `args` is interpolated by mozharness (`{package-name}`, `{installer-tag}`, +# `{stub-installer-tag}`, `{sfx-stub}`, `{wsx-stub}`, `{fetch-dir}`), with values +# from mozharness. +# - `inputs` are passed as long-options, with the filename prefixed by +# `MOZ_FETCH_DIR`. The filename is interpolated by taskgraph +# (`{archive_format}`). +# - `output` is passed to `--output`, with the filename prefixed by the output +# directory. +PACKAGE_FORMATS = { + "mar": { + "args": [ + "mar", + "--arch", + "{architecture}", + "--mar-channel-id", + "{mar-channel-id}", + ], + "inputs": { + "input": "target{archive_format}", + "mar": "mar-tools/mar", + }, + "output": "target.complete.mar", + }, + "msi": { + "args": [ + "msi", + "--wsx", + "{wsx-stub}", + "--version", + "{version_display}", + "--locale", + "{_locale}", + "--arch", + "{architecture}", + "--candle", + "{fetch-dir}/candle.exe", + "--light", + "{fetch-dir}/light.exe", + ], + "inputs": { + "setupexe": "target.installer.exe", + }, + "output": "target.installer.msi", + }, + "msix": { + "args": [ + "msix", + "--channel", + "{msix-channel}", + "--publisher", + "{msix-publisher}", + "--publisher-display-name", + "{msix-publisher-display-name}", + "--identity-name", + "{msix-identity-name}", + "--vendor", + "{msix-vendor}", + "--arch", + "{architecture}", + # For langpacks. Ignored if directory does not exist. + "--distribution-dir", + "{fetch-dir}/distribution", + "--verbose", + "--makeappx", + "{fetch-dir}/msix-packaging/makemsix", + ], + "inputs": { + "input": "target{archive_format}", + }, + "output": "target.installer.msix", + }, + "msix-store": { + "args": [ + "msix", + "--channel", + "{msix-channel}", + "--publisher", + "{msix-publisher}", + "--publisher-display-name", + "{msix-publisher-display-name}", + "--identity-name", + "{msix-identity-name}", + "--vendor", + "{msix-vendor}", + "--arch", + "{architecture}", + # For langpacks. Ignored if directory does not exist. + "--distribution-dir", + "{fetch-dir}/distribution", + "--verbose", + "--makeappx", + "{fetch-dir}/msix-packaging/makemsix", + ], + "inputs": { + "input": "target{archive_format}", + }, + "output": "target.store.msix", + }, + "dmg": { + "args": ["dmg"], + "inputs": { + "input": "target{archive_format}", + }, + "output": "target.dmg", + }, + "pkg": { + "args": ["pkg"], + "inputs": { + "input": "target{archive_format}", + }, + "output": "target.pkg", + }, + "installer": { + "args": [ + "installer", + "--package-name", + "{package-name}", + "--tag", + "{installer-tag}", + "--sfx-stub", + "{sfx-stub}", + ], + "inputs": { + "package": "target{archive_format}", + "setupexe": "setup.exe", + }, + "output": "target.installer.exe", + }, + "installer-stub": { + "args": [ + "installer", + "--tag", + "{stub-installer-tag}", + "--sfx-stub", + "{sfx-stub}", + ], + "inputs": { + "setupexe": "setup-stub.exe", + }, + "output": "target.stub-installer.exe", + }, + "deb": { + "args": [ + "deb", + "--arch", + "{architecture}", + "--templates", + "browser/installer/linux/app/debian", + "--version", + "{version_display}", + "--build-number", + "{build_number}", + "--release-product", + "{release_product}", + "--release-type", + "{release_type}", + ], + "inputs": { + "input": "target{archive_format}", + }, + "output": "target.deb", + }, + "deb-l10n": { + "args": [ + "deb-l10n", + "--version", + "{version_display}", + "--build-number", + "{build_number}", + "--templates", + "browser/installer/linux/langpack/debian", + ], + "inputs": { + "input-xpi-file": "target.langpack.xpi", + "input-tar-file": "target{archive_format}", + }, + "output": "target.langpack.deb", + }, +} +MOZHARNESS_EXPANSIONS = [ + "package-name", + "installer-tag", + "fetch-dir", + "stub-installer-tag", + "sfx-stub", + "wsx-stub", +] + +transforms = TransformSequence() +transforms.add_validate(packaging_description_schema) + + +@transforms.add +def copy_in_useful_magic(config, jobs): + """Copy attributes from upstream task to be used for keyed configuration.""" + for job in jobs: + dep = job["primary-dependency"] + job["build-platform"] = dep.attributes.get("build_platform") + job["shipping-product"] = dep.attributes.get("shipping_product") + yield job + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by platform, etc, but not `msix.*` fields + that can be keyed by `package-format`. Such fields are handled specially below. + """ + fields = [ + "mozharness.config", + "package-formats", + "worker.max-run-time", + ] + for job in jobs: + job = copy_task(job) # don't overwrite dict values here + for field in fields: + resolve_keyed_by( + item=job, + field=field, + item_name="?", + **{ + "release-type": config.params["release_type"], + "level": config.params["level"], + }, + ) + yield job + + +@transforms.add +def make_repackage_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + label = job.get("label", dep_job.label.replace("signing-", "repackage-")) + job["label"] = label + + yield job + + +@transforms.add +def make_job_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + dependencies = {dep_job.kind: dep_job.label} + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes["repackage_type"] = "repackage" + + locale = attributes.get("locale", job.get("locale")) + if locale: + attributes["locale"] = locale + + description = ( + "Repackaging for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "Rpk") + dep_th_platform = dep_job.task.get("extra", {}).get("treeherder-platform") + treeherder.setdefault("platform", dep_th_platform) + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + + # Search dependencies before adding langpack dependencies. + signing_task = None + repackage_signing_task = None + for dependency in dependencies.keys(): + if "repackage-signing" in dependency: + repackage_signing_task = dependency + elif "signing" in dependency or "notarization" in dependency: + signing_task = dependency + + if config.kind == "repackage-msi": + treeherder["symbol"] = "MSI({})".format(locale or "N") + + elif config.kind == "repackage-msix": + assert not locale + + # Like "MSIXs(Bs)". + treeherder["symbol"] = "MSIX({})".format( + dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B") + ) + + elif config.kind == "repackage-shippable-l10n-msix": + assert not locale + + if attributes.get("l10n_chunk") or attributes.get("chunk_locales"): + # We don't want to produce MSIXes for single-locale repack builds. + continue + + description = ( + "Repackaging with multiple locales for build '" + "{build_platform}/{build_type}'".format( + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + # Like "MSIXs(Bs-multi)". + treeherder["symbol"] = "MSIX({}-multi)".format( + dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B") + ) + + fetches = job.setdefault("fetches", {}) + + # The keys are unique, like `shippable-l10n-signing-linux64-shippable-1/opt`, so we + # can't ask for the tasks directly, we must filter for them. + for t in config.kind_dependencies_tasks.values(): + if t.kind != "shippable-l10n-signing": + continue + if t.attributes["build_platform"] != "linux64-shippable": + continue + if t.attributes["build_type"] != "opt": + continue + + dependencies.update({t.label: t.label}) + + fetches.update( + { + t.label: [ + { + "artifact": f"{loc}/target.langpack.xpi", + "extract": False, + # Otherwise we can't disambiguate locales! + "dest": f"distribution/extensions/{loc}", + } + for loc in t.attributes["chunk_locales"] + ] + } + ) + + elif config.kind == "repackage-deb": + attributes["repackage_type"] = "repackage-deb" + description = ( + "Repackaging the '{build_platform}/{build_type}' " + "{version} build into a '.deb' package" + ).format( + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + version=config.params["version"], + ) + + _fetch_subst_locale = "en-US" + if locale: + _fetch_subst_locale = locale + + worker_type = job["worker-type"] + build_platform = attributes["build_platform"] + + use_stub = attributes.get("stub-installer") + + repackage_config = [] + package_formats = job.get("package-formats") + if use_stub and not repackage_signing_task and "msix" not in package_formats: + # if repackage_signing_task doesn't exists, generate the stub installer + package_formats += ["installer-stub"] + for format in package_formats: + command = copy_task(PACKAGE_FORMATS[format]) + substs = { + "archive_format": archive_format(build_platform), + "_locale": _fetch_subst_locale, + "architecture": architecture(build_platform), + "version_display": config.params["version"], + "mar-channel-id": attributes["mar-channel-id"], + "build_number": config.params["build_number"], + "release_product": config.params["release_product"], + "release_type": config.params["release_type"], + } + # Allow us to replace `args` as well, but specifying things expanded in mozharness + # without breaking .format and without allowing unknown through. + substs.update({name: f"{{{name}}}" for name in MOZHARNESS_EXPANSIONS}) + + # We need to resolve `msix.*` values keyed by `package-format` for each format, not + # just once, so we update a temporary copy just for extracting these values. + temp_job = copy_task(job) + for msix_key in ( + "channel", + "identity-name", + "publisher", + "publisher-display-name", + "vendor", + ): + resolve_keyed_by( + item=temp_job, + field=f"msix.{msix_key}", + item_name="?", + **{ + "package-format": format, + "release-type": config.params["release_type"], + "level": config.params["level"], + }, + ) + + # Turn `msix.channel` into `msix-channel`, etc. + value = temp_job.get("msix", {}).get(msix_key) + if value: + substs.update( + {f"msix-{msix_key}": value}, + ) + + command["inputs"] = { + name: filename.format(**substs) + for name, filename in command["inputs"].items() + } + command["args"] = [arg.format(**substs) for arg in command["args"]] + if "installer" in format and "aarch64" not in build_platform: + command["args"].append("--use-upx") + + repackage_config.append(command) + + run = job.get("mozharness", {}) + run.update( + { + "using": "mozharness", + "script": "mozharness/scripts/repackage.py", + "job-script": "taskcluster/scripts/builder/repackage.sh", + "actions": ["setup", "repackage"], + "extra-config": { + "repackage_config": repackage_config, + }, + "run-as-root": run.get("run-as-root", False), + "use-caches": run.get("use-caches", True), + } + ) + + worker = job.get("worker", {}) + worker.update( + { + "chain-of-trust": True, + # Don't add generic artifact directory. + "skip-artifacts": True, + } + ) + worker.setdefault("max-run-time", 3600) + + if locale: + # Make sure we specify the locale-specific upload dir + worker.setdefault("env", {})["LOCALE"] = locale + + worker["artifacts"] = _generate_task_output_files( + dep_job, + worker_type_implementation(config.graph_config, config.params, worker_type), + repackage_config=repackage_config, + locale=locale, + ) + attributes["release_artifacts"] = [ + artifact["name"] for artifact in worker["artifacts"] + ] + + task = { + "label": job["label"], + "description": description, + "worker-type": worker_type, + "dependencies": dependencies, + "if-dependencies": [dep_job.kind], + "attributes": attributes, + "run-on-projects": job.get( + "run-on-projects", dep_job.attributes.get("run_on_projects") + ), + "optimization": dep_job.optimization, + "treeherder": treeherder, + "routes": job.get("routes", []), + "extra": job.get("extra", {}), + "worker": worker, + "run": run, + "fetches": _generate_download_config( + config, + dep_job, + build_platform, + signing_task, + repackage_signing_task, + locale=locale, + existing_fetch=job.get("fetches"), + ), + } + + if build_platform.startswith("macosx"): + task.setdefault("fetches", {}).setdefault("toolchain", []).extend( + [ + "linux64-libdmg", + "linux64-hfsplus", + "linux64-node", + "linux64-xar", + "linux64-mkbom", + ] + ) + + if "shipping-phase" in job: + task["shipping-phase"] = job["shipping-phase"] + + yield task + + +def _generate_download_config( + config, + task, + build_platform, + signing_task, + repackage_signing_task, + locale=None, + existing_fetch=None, +): + locale_path = f"{locale}/" if locale else "" + fetch = {} + if existing_fetch: + fetch.update(existing_fetch) + + if repackage_signing_task and build_platform.startswith("win"): + fetch.update( + { + repackage_signing_task: [f"{locale_path}target.installer.exe"], + } + ) + elif build_platform.startswith("linux") or build_platform.startswith("macosx"): + signing_fetch = [ + { + "artifact": "{}target{}".format( + locale_path, archive_format(build_platform) + ), + "extract": False, + }, + ] + if config.kind == "repackage-deb-l10n": + signing_fetch.append( + { + "artifact": f"{locale_path}target.langpack.xpi", + "extract": False, + } + ) + fetch.update({signing_task: signing_fetch}) + elif build_platform.startswith("win"): + fetch.update( + { + signing_task: [ + { + "artifact": f"{locale_path}target.zip", + "extract": False, + }, + f"{locale_path}setup.exe", + ], + } + ) + + use_stub = task.attributes.get("stub-installer") + if use_stub: + fetch[signing_task].append(f"{locale_path}setup-stub.exe") + + if fetch: + return fetch + + raise NotImplementedError(f'Unsupported build_platform: "{build_platform}"') + + +def _generate_task_output_files( + task, worker_implementation, repackage_config, locale=None +): + locale_output_path = f"{locale}/" if locale else "" + artifact_prefix = get_artifact_prefix(task) + + if worker_implementation == ("docker-worker", "linux"): + local_prefix = "/builds/worker/workspace/" + elif worker_implementation == ("generic-worker", "windows"): + local_prefix = "workspace/" + else: + raise NotImplementedError( + f'Unsupported worker implementation: "{worker_implementation}"' + ) + + output_files = [] + for config in repackage_config: + output_files.append( + { + "type": "file", + "path": "{}outputs/{}{}".format( + local_prefix, locale_output_path, config["output"] + ), + "name": "{}/{}{}".format( + artifact_prefix, locale_output_path, config["output"] + ), + } + ) + return output_files diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py b/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py new file mode 100644 index 0000000000..e0f46e6fdc --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py @@ -0,0 +1,26 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage task into an actual task description. +""" + + +from taskgraph.transforms.base import TransformSequence + +from gecko_taskgraph.util.copy_task import copy_task + +transforms = TransformSequence() + + +@transforms.add +def split_locales(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + for locale in dep_job.attributes.get("chunk_locales", []): + locale_job = copy_task(job) # don't overwrite dict values here + treeherder = locale_job.setdefault("treeherder", {}) + treeherder_group = locale_job.pop("treeherder-group") + treeherder["symbol"] = f"{treeherder_group}({locale})" + locale_job["locale"] = locale + yield locale_job diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_partner.py b/taskcluster/gecko_taskgraph/transforms/repackage_partner.py new file mode 100644 index 0000000000..582a86dfad --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_partner.py @@ -0,0 +1,302 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage task into an actual task description. +""" + + +import copy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.repackage import ( + PACKAGE_FORMATS as PACKAGE_FORMATS_VANILLA, +) +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.partners import get_partner_config_by_kind +from gecko_taskgraph.util.platforms import archive_format, executable_extension +from gecko_taskgraph.util.workertypes import worker_type_implementation + + +def _by_platform(arg): + return optionally_keyed_by("build-platform", arg) + + +# When repacking the stub installer we need to pass a zip file and package name to the +# repackage task. This is not needed for vanilla stub but analogous to the full installer. +PACKAGE_FORMATS = copy.deepcopy(PACKAGE_FORMATS_VANILLA) +PACKAGE_FORMATS["installer-stub"]["inputs"]["package"] = "target-stub{archive_format}" +PACKAGE_FORMATS["installer-stub"]["args"].extend(["--package-name", "{package-name}"]) + +packaging_description_schema = schema.extend( + { + # unique label to describe this repackaging task + Optional("label"): str, + # Routes specific to this task, if defined + Optional("routes"): [str], + # passed through directly to the job description + Optional("extra"): task_description_schema["extra"], + # Shipping product and phase + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Required("package-formats"): _by_platform([str]), + # All l10n jobs use mozharness + Required("mozharness"): { + # Config files passed to the mozharness script + Required("config"): _by_platform([str]), + # Additional paths to look for mozharness configs in. These should be + # relative to the base of the source checkout + Optional("config-paths"): [str], + # if true, perform a checkout of a comm-central based branch inside the + # gecko checkout + Optional("comm-checkout"): bool, + }, + # Override the default priority for the project + Optional("priority"): task_description_schema["priority"], + } +) + +transforms = TransformSequence() +transforms.add_validate(packaging_description_schema) + + +@transforms.add +def copy_in_useful_magic(config, jobs): + """Copy attributes from upstream task to be used for keyed configuration.""" + for job in jobs: + dep = job["primary-dependency"] + job["build-platform"] = dep.attributes.get("build_platform") + yield job + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by platform, etc.""" + fields = [ + "mozharness.config", + "package-formats", + ] + for job in jobs: + job = copy.deepcopy(job) # don't overwrite dict values here + for field in fields: + resolve_keyed_by(item=job, field=field, item_name="?") + yield job + + +@transforms.add +def make_repackage_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + + label = job.get("label", dep_job.label.replace("signing-", "repackage-")) + job["label"] = label + + yield job + + +@transforms.add +def make_job_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + build_platform = attributes["build_platform"] + + if job["build-platform"].startswith("win"): + if dep_job.kind.endswith("signing"): + continue + if job["build-platform"].startswith("macosx"): + if dep_job.kind.endswith("repack"): + continue + dependencies = {dep_job.attributes.get("kind"): dep_job.label} + dependencies.update(dep_job.dependencies) + + signing_task = None + for dependency in dependencies.keys(): + if build_platform.startswith("macosx") and dependency.endswith("signing"): + signing_task = dependency + elif build_platform.startswith("win") and dependency.endswith("repack"): + signing_task = dependency + + attributes["repackage_type"] = "repackage" + + repack_id = job["extra"]["repack_id"] + + partner_config = get_partner_config_by_kind(config, config.kind) + partner, subpartner, _ = repack_id.split("/") + repack_stub_installer = partner_config[partner][subpartner].get( + "repack_stub_installer" + ) + if build_platform.startswith("win32") and repack_stub_installer: + job["package-formats"].append("installer-stub") + + repackage_config = [] + for format in job.get("package-formats"): + command = copy.deepcopy(PACKAGE_FORMATS[format]) + substs = { + "archive_format": archive_format(build_platform), + "executable_extension": executable_extension(build_platform), + } + command["inputs"] = { + name: filename.format(**substs) + for name, filename in command["inputs"].items() + } + repackage_config.append(command) + + run = job.get("mozharness", {}) + run.update( + { + "using": "mozharness", + "script": "mozharness/scripts/repackage.py", + "job-script": "taskcluster/scripts/builder/repackage.sh", + "actions": ["setup", "repackage"], + "extra-config": { + "repackage_config": repackage_config, + }, + } + ) + + worker = { + "chain-of-trust": True, + "max-run-time": 3600, + "taskcluster-proxy": True if get_artifact_prefix(dep_job) else False, + "env": { + "REPACK_ID": repack_id, + }, + # Don't add generic artifact directory. + "skip-artifacts": True, + } + + worker_type = "b-linux-gcp" + worker["docker-image"] = {"in-tree": "debian11-amd64-build"} + + worker["artifacts"] = _generate_task_output_files( + dep_job, + worker_type_implementation(config.graph_config, config.params, worker_type), + repackage_config, + partner=repack_id, + ) + + description = ( + "Repackaging for repack_id '{repack_id}' for build '" + "{build_platform}/{build_type}'".format( + repack_id=job["extra"]["repack_id"], + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + task = { + "label": job["label"], + "description": description, + "worker-type": worker_type, + "dependencies": dependencies, + "attributes": attributes, + "scopes": ["queue:get-artifact:releng/partner/*"], + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "routes": job.get("routes", []), + "extra": job.get("extra", {}), + "worker": worker, + "run": run, + "fetches": _generate_download_config( + dep_job, + build_platform, + signing_task, + partner=repack_id, + project=config.params["project"], + repack_stub_installer=repack_stub_installer, + ), + } + + # we may have reduced the priority for partner jobs, otherwise task.py will set it + if job.get("priority"): + task["priority"] = job["priority"] + if build_platform.startswith("macosx"): + task.setdefault("fetches", {}).setdefault("toolchain", []).extend( + [ + "linux64-libdmg", + "linux64-hfsplus", + "linux64-node", + ] + ) + yield task + + +def _generate_download_config( + task, + build_platform, + signing_task, + partner=None, + project=None, + repack_stub_installer=False, +): + locale_path = f"{partner}/" if partner else "" + + if build_platform.startswith("macosx"): + return { + signing_task: [ + { + "artifact": f"{locale_path}target.tar.gz", + "extract": False, + }, + ], + } + if build_platform.startswith("win"): + download_config = [ + { + "artifact": f"{locale_path}target.zip", + "extract": False, + }, + f"{locale_path}setup.exe", + ] + if build_platform.startswith("win32") and repack_stub_installer: + download_config.extend( + [ + { + "artifact": f"{locale_path}target-stub.zip", + "extract": False, + }, + f"{locale_path}setup-stub.exe", + ] + ) + return {signing_task: download_config} + + raise NotImplementedError(f'Unsupported build_platform: "{build_platform}"') + + +def _generate_task_output_files(task, worker_implementation, repackage_config, partner): + """We carefully generate an explicit list here, but there's an artifacts directory + too, courtesy of generic_worker_add_artifacts() (windows) or docker_worker_add_artifacts(). + Any errors here are likely masked by that. + """ + partner_output_path = f"{partner}/" + artifact_prefix = get_artifact_prefix(task) + + if worker_implementation == ("docker-worker", "linux"): + local_prefix = "/builds/worker/workspace/" + elif worker_implementation == ("generic-worker", "windows"): + local_prefix = "workspace/" + else: + raise NotImplementedError( + f'Unsupported worker implementation: "{worker_implementation}"' + ) + + output_files = [] + for config in repackage_config: + output_files.append( + { + "type": "file", + "path": "{}outputs/{}{}".format( + local_prefix, partner_output_path, config["output"] + ), + "name": "{}/{}{}".format( + artifact_prefix, partner_output_path, config["output"] + ), + } + ) + return output_files diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_routes.py b/taskcluster/gecko_taskgraph/transforms/repackage_routes.py new file mode 100644 index 0000000000..2973ee35bd --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_routes.py @@ -0,0 +1,34 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Add indexes to repackage kinds +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_indexes(config, jobs): + for job in jobs: + repackage_type = job["attributes"].get("repackage_type") + if repackage_type and job["attributes"]["build_type"] != "debug": + build_platform = job["attributes"]["build_platform"] + job_name = f"{build_platform}-{repackage_type}" + product = job.get("index", {}).get("product", "firefox") + index_type = "generic" + if job["attributes"].get("shippable") and job["attributes"].get("locale"): + index_type = "shippable-l10n" + if job["attributes"].get("shippable"): + index_type = "shippable" + if job["attributes"].get("locale"): + index_type = "l10n" + job["index"] = { + "job-name": job_name, + "product": product, + "type": index_type, + } + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py b/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py new file mode 100644 index 0000000000..14c865eea5 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py @@ -0,0 +1,39 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform mac notarization tasks +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def repackage_set_upstream_mac_kind(config, tasks): + """ + Notarization only runs on level 3 + If level < 3 then repackage the mac-signing task artifact + Exception for debug builds, which will use signed build on level 3 + """ + for task in tasks: + if "macosx64" not in task["primary-dependency"].attributes["build_platform"]: + task.pop("upstream-mac-kind") + yield task + continue + resolve_keyed_by( + task, + "upstream-mac-kind", + item_name=config.kind, + **{ + "build-type": task["primary-dependency"].attributes["build_type"], + "project": config.params.get("project"), + } + ) + upstream_mac_kind = task.pop("upstream-mac-kind") + + if task["primary-dependency"].kind != upstream_mac_kind: + continue + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_signing.py b/taskcluster/gecko_taskgraph/transforms/repackage_signing.py new file mode 100644 index 0000000000..f98f8f0814 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_signing.py @@ -0,0 +1,137 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage signing task into an actual task description. +""" + +import os + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform + +repackage_signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +SIGNING_FORMATS = { + "target.installer.exe": ["autograph_authenticode_sha2_stub"], + "target.stub-installer.exe": ["autograph_authenticode_sha2_stub"], + "target.installer.msi": ["autograph_authenticode_sha2"], + "target.installer.msix": ["autograph_authenticode_sha2"], +} + +transforms = TransformSequence() +transforms.add_validate(repackage_signing_description_schema) + + +@transforms.add +def make_repackage_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = copy_attributes_from_dependent_job(dep_job) + locale = attributes.get("locale", dep_job.attributes.get("locale")) + attributes["repackage_type"] = "repackage-signing" + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "rs(B)") + dep_th_platform = dep_job.task.get("extra", {}).get("treeherder-platform") + treeherder.setdefault("platform", dep_th_platform) + treeherder.setdefault( + "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1) + ) + treeherder.setdefault("kind", "build") + + if locale: + treeherder["symbol"] = f"rs({locale})" + + if config.kind == "repackage-signing-msi": + treeherder["symbol"] = "MSIs({})".format(locale or "N") + + elif config.kind in ( + "repackage-signing-msix", + "repackage-signing-shippable-l10n-msix", + ): + # Like "MSIXs(Bs-multi)". + treeherder["symbol"] = "MSIXs({})".format( + dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B") + ) + + label = job["label"] + + dep_kind = dep_job.kind + if "l10n" in dep_kind: + dep_kind = "repackage" + + dependencies = {dep_kind: dep_job.label} + + signing_dependencies = dep_job.dependencies + # This is so we get the build task etc in our dependencies to have better beetmover + # support. But for multi-locale MSIX packages, we don't want the signing task to directly + # depend on the langpack tasks. + dependencies.update( + { + k: v + for k, v in signing_dependencies.items() + if k != "docker-image" + and not k.startswith("shippable-l10n-signing-linux64") + } + ) + + description = ( + "Signing of repackaged artifacts for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + ) + + build_platform = dep_job.attributes.get("build_platform") + is_shippable = dep_job.attributes.get("shippable") + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_shippable, config + ) + scopes = [signing_cert_scope] + + upstream_artifacts = [] + for artifact in sorted(dep_job.attributes.get("release_artifacts")): + basename = os.path.basename(artifact) + if basename in SIGNING_FORMATS: + upstream_artifacts.append( + { + "taskId": {"task-reference": f"<{dep_kind}>"}, + "taskType": "repackage", + "paths": [artifact], + "formats": SIGNING_FORMATS[os.path.basename(artifact)], + } + ) + + task = { + "label": label, + "description": description, + "worker-type": "linux-signing" if is_shippable else "linux-depsigning", + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + "max-run-time": 3600, + }, + "scopes": scopes, + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "optimization": dep_job.optimization, + "treeherder": treeherder, + } + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py b/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py new file mode 100644 index 0000000000..eaf71f92a2 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py @@ -0,0 +1,145 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repackage signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.taskcluster import get_artifact_path +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.partners import get_partner_config_by_kind +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform + +transforms = TransformSequence() + +repackage_signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("extra"): object, + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("priority"): task_description_schema["priority"], + } +) + +transforms.add_validate(repackage_signing_description_schema) + + +@transforms.add +def make_repackage_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + repack_id = dep_job.task["extra"]["repack_id"] + attributes = dep_job.attributes + build_platform = dep_job.attributes.get("build_platform") + is_shippable = dep_job.attributes.get("shippable") + + # Mac & windows + label = dep_job.label.replace("repackage-", "repackage-signing-") + # Linux + label = label.replace("chunking-dummy-", "repackage-signing-") + description = "Signing of repackaged artifacts for partner repack id '{repack_id}' for build '" "{build_platform}/{build_type}'".format( # NOQA: E501 + repack_id=repack_id, + build_platform=attributes.get("build_platform"), + build_type=attributes.get("build_type"), + ) + + if "linux" in build_platform: + # we want the repack job, via the dependencies for the the chunking-dummy dep_job + for dep in dep_job.dependencies.values(): + if dep.startswith("release-partner-repack"): + dependencies = {"repack": dep} + break + else: + # we have a genuine repackage job as our parent + dependencies = {"repackage": dep_job.label} + + attributes = copy_attributes_from_dependent_job(dep_job) + attributes["repackage_type"] = "repackage-signing" + + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_shippable, config + ) + scopes = [signing_cert_scope] + + if "win" in build_platform: + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "repackage", + "paths": [ + get_artifact_path(dep_job, f"{repack_id}/target.installer.exe"), + ], + "formats": ["autograph_authenticode_sha2", "autograph_gpg"], + } + ] + + partner_config = get_partner_config_by_kind(config, config.kind) + partner, subpartner, _ = repack_id.split("/") + repack_stub_installer = partner_config[partner][subpartner].get( + "repack_stub_installer" + ) + if build_platform.startswith("win32") and repack_stub_installer: + upstream_artifacts.append( + { + "taskId": {"task-reference": ""}, + "taskType": "repackage", + "paths": [ + get_artifact_path( + dep_job, + f"{repack_id}/target.stub-installer.exe", + ), + ], + "formats": ["autograph_authenticode_sha2", "autograph_gpg"], + } + ) + elif "mac" in build_platform: + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "repackage", + "paths": [ + get_artifact_path(dep_job, f"{repack_id}/target.dmg"), + ], + "formats": ["autograph_gpg"], + } + ] + elif "linux" in build_platform: + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "repackage", + "paths": [ + get_artifact_path(dep_job, f"{repack_id}/target.tar.bz2"), + ], + "formats": ["autograph_gpg"], + } + ] + + task = { + "label": label, + "description": description, + "worker-type": "linux-signing", + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + "max-run-time": 3600, + }, + "scopes": scopes, + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "extra": { + "repack_id": repack_id, + }, + } + # we may have reduced the priority for partner jobs, otherwise task.py will set it + if job.get("priority"): + task["priority"] = job["priority"] + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/repo_update.py b/taskcluster/gecko_taskgraph/transforms/repo_update.py new file mode 100644 index 0000000000..f4f135b585 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/repo_update.py @@ -0,0 +1,25 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the repo-update task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def resolve_keys(config, tasks): + for task in tasks: + env = task["worker"].setdefault("env", {}) + env["BRANCH"] = config.params["project"] + for envvar in env: + resolve_keyed_by(env, envvar, envvar, **config.params) + + for envvar in list(env.keys()): + if not env.get(envvar): + del env[envvar] + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py b/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py new file mode 100644 index 0000000000..5ad359bd5a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py @@ -0,0 +1,67 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the reprocess-symbols task description template, +taskcluster/ci/reprocess-symbols/job-template.yml into an actual task description. +""" + + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def fill_template(config, tasks): + for task in tasks: + assert len(task["dependent-tasks"]) == 2 + + build_dep = task["primary-dependency"] + upload_dep = None + for dep_idx in task["dependent-tasks"]: + dep = task["dependent-tasks"][dep_idx] + if dep_idx != build_dep: + upload_dep = dep + + task.pop("dependent-tasks", None) + + # Fill out the dynamic fields in the task description + task["label"] = build_dep.label + "-reprocess-symbols" + task["dependencies"] = {"build": build_dep.label, "upload": upload_dep.label} + task["worker"]["env"]["GECKO_HEAD_REPOSITORY"] = config.params[ + "head_repository" + ] + task["worker"]["env"]["GECKO_HEAD_REV"] = config.params["head_rev"] + task["worker"]["env"]["CRASHSTATS_SECRET"] = task["worker"]["env"][ + "CRASHSTATS_SECRET" + ].format(level=config.params["level"]) + + attributes = copy_attributes_from_dependent_job(build_dep) + attributes.update(task.get("attributes", {})) + task["attributes"] = attributes + + treeherder = inherit_treeherder_from_dep(task, build_dep) + th = build_dep.task.get("extra")["treeherder"] + th_symbol = th.get("symbol") + th_groupsymbol = th.get("groupSymbol", "?") + + # Disambiguate the treeherder symbol. + sym = "Rep" + (th_symbol[1:] if th_symbol.startswith("B") else th_symbol) + treeherder.setdefault("symbol", join_symbol(th_groupsymbol, sym)) + task["treeherder"] = treeherder + + task["run-on-projects"] = build_dep.attributes.get("run_on_projects") + task["optimization"] = {"reprocess-symbols": None} + task["if-dependencies"] = ["build"] + + del task["primary-dependency"] + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py b/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py new file mode 100644 index 0000000000..ac2f282799 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py @@ -0,0 +1,45 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Adjust dependencies to not exceed MAX_DEPENDENCIES +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import add_suffix + +import gecko_taskgraph.transforms.release_deps as release_deps +from gecko_taskgraph import MAX_DEPENDENCIES +from gecko_taskgraph.util.copy_task import copy_task + +transforms = TransformSequence() + + +def yield_job(orig_job, deps, count): + job = copy_task(orig_job) + job["dependencies"] = deps + job["name"] = "{}-{}".format(orig_job["name"], count) + if "treeherder" in job: + job["treeherder"]["symbol"] = add_suffix( + job["treeherder"]["symbol"], f"-{count}" + ) + + return job + + +@transforms.add +def add_dependencies(config, jobs): + for job in release_deps.add_dependencies(config, jobs): + count = 1 + deps = {} + + # sort for deterministic chunking + for dep_label in sorted(job["dependencies"].keys()): + deps[dep_label] = dep_label + if len(deps) == MAX_DEPENDENCIES: + yield yield_job(job, deps, count) + deps = {} + count += 1 + if deps: + yield yield_job(job, deps, count) + count += 1 diff --git a/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py b/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py new file mode 100644 index 0000000000..2585bdd712 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py @@ -0,0 +1,34 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Apply some defaults and minor modifications to the pgo jobs. +""" + +import logging + +from taskgraph.transforms.base import TransformSequence + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def run_profile_data(config, jobs): + for job in jobs: + build_platform = job["attributes"].get("build_platform") + instr = "instrumented-build-{}".format(job["name"]) + if "android" in build_platform: + artifact = "geckoview-test_runner.apk" + elif "macosx64" in build_platform: + artifact = "target.dmg" + elif "win" in build_platform: + artifact = "target.zip" + else: + artifact = "target.tar.bz2" + job.setdefault("fetches", {})[instr] = [ + artifact, + "target.crashreporter-symbols.zip", + ] + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/scriptworker.py b/taskcluster/gecko_taskgraph/transforms/scriptworker.py new file mode 100644 index 0000000000..5d382702af --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/scriptworker.py @@ -0,0 +1,18 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Transforms for adding appropriate scopes to scriptworker tasks. +""" + + +from gecko_taskgraph.util.scriptworker import get_balrog_server_scope + + +def add_balrog_scopes(config, jobs): + for job in jobs: + server_scope = get_balrog_server_scope(config) + job["scopes"] = [server_scope] + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py b/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py new file mode 100644 index 0000000000..43735f3dce --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py @@ -0,0 +1,46 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Build a command to run `mach release push-scriptworker-canaries`. +""" + + +from pipes import quote as shell_quote + +from mozrelease.scriptworker_canary import TASK_TYPES +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def build_command(config, jobs): + scriptworkers = config.params["try_task_config"].get( + "scriptworker-canary-workers", [] + ) + # Filter the list of workers to those we have configured a set of canary + # tasks for. + scriptworkers = [ + scriptworker for scriptworker in scriptworkers if scriptworker in TASK_TYPES + ] + + if not scriptworkers: + return + + for job in jobs: + + command = ["release", "push-scriptworker-canary"] + for scriptworker in scriptworkers: + command.extend(["--scriptworker", scriptworker]) + for address in job.pop("addresses"): + command.extend(["--address", address]) + if "ssh-key-secret" in job: + ssh_key_secret = job.pop("ssh-key-secret") + command.extend(["--ssh-key-secret", ssh_key_secret]) + job.setdefault("scopes", []).append(f"secrets:get:{ssh_key_secret}") + + job.setdefault("run", {}).update( + {"using": "mach", "mach": " ".join(map(shell_quote, command))} + ) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/sentry.py b/taskcluster/gecko_taskgraph/transforms/sentry.py new file mode 100644 index 0000000000..2e43a15518 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/sentry.py @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def sentry(config, tasks): + """Do transforms specific to github-sync tasks.""" + if config.params["project"] not in ["mozilla-central", "try"]: + return + for task in tasks: + scopes = [ + scope.format(level=config.params["level"]) for scope in task["scopes"] + ] + task["scopes"] = scopes + + env = { + key: value.format( + level=config.params["level"], + head_repository=config.params["head_repository"], + head_rev=config.params["head_rev"], + ) + for (key, value) in task["worker"]["env"].items() + } + task["worker"]["env"] = env + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py b/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py new file mode 100644 index 0000000000..324efa92dd --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py @@ -0,0 +1,86 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import join_symbol + +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.signed_artifacts import ( + generate_specifications_of_artifacts_to_sign, +) + +transforms = TransformSequence() + + +@transforms.add +def make_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + job["depname"] = dep_job.label + + # add the chunk number to the TH symbol + symbol = job.get("treeherder", {}).get("symbol", "Bs") + symbol = "{}{}".format(symbol, dep_job.attributes.get("l10n_chunk")) + group = "L10n" + + job["treeherder"] = { + "symbol": join_symbol(group, symbol), + } + + yield job + + +@transforms.add +def define_upstream_artifacts(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + upstream_artifact_task = job.pop("upstream-artifact-task", dep_job) + + job["attributes"] = copy_attributes_from_dependent_job(dep_job) + if dep_job.attributes.get("chunk_locales"): + # Used for l10n attribute passthrough + job["attributes"]["chunk_locales"] = dep_job.attributes.get("chunk_locales") + + locale_specifications = generate_specifications_of_artifacts_to_sign( + config, + job, + keep_locale_template=True, + dep_kind=upstream_artifact_task.kind, + ) + + upstream_artifacts = [] + for spec in locale_specifications: + upstream_task_type = "l10n" + if upstream_artifact_task.kind.endswith( + ("-mac-notarization", "-mac-signing") + ): + # Upstream is mac signing or notarization + upstream_task_type = "scriptworker" + upstream_artifacts.append( + { + "taskId": {"task-reference": f"<{upstream_artifact_task.kind}>"}, + "taskType": upstream_task_type, + # Set paths based on artifacts in the specs (above) one per + # locale present in the chunk this is signing stuff for. + # Pass paths through set and sorted() so we get a list back + # and we remove any duplicates (e.g. hardcoded ja-JP-mac langpack) + "paths": sorted( + { + path_template.format(locale=locale) + for locale in upstream_artifact_task.attributes.get( + "chunk_locales", [] + ) + for path_template in spec["artifacts"] + } + ), + "formats": spec["formats"], + } + ) + + job["upstream-artifacts"] = upstream_artifacts + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/signing.py b/taskcluster/gecko_taskgraph/transforms/signing.py new file mode 100644 index 0000000000..9a5873fc81 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/signing.py @@ -0,0 +1,266 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.keyed_by import evaluate_keyed_by +from taskgraph.util.schema import taskref_or_string +from voluptuous import Optional, Required + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import ( + copy_attributes_from_dependent_job, + release_level, +) +from gecko_taskgraph.util.scriptworker import ( + add_scope_prefix, + get_signing_cert_scope_per_platform, +) + +transforms = TransformSequence() + +signing_description_schema = schema.extend( + { + # Artifacts from dep task to sign - Sync with taskgraph/transforms/task.py + # because this is passed directly into the signingscript worker + Required("upstream-artifacts"): [ + { + # taskId of the task with the artifact + Required("taskId"): taskref_or_string, + # type of signing task (for CoT) + Required("taskType"): str, + # Paths to the artifacts to sign + Required("paths"): [str], + # Signing formats to use on each of the paths + Required("formats"): [str], + } + ], + # depname is used in taskref's to identify the taskID of the unsigned things + Required("depname"): str, + # attributes for this task + Optional("attributes"): {str: object}, + # unique label to describe this signing task, defaults to {dep.label}-signing + Optional("label"): str, + # treeherder is allowed here to override any defaults we use for signing. See + # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the + # below transforms for defaults of various values. + Optional("treeherder"): task_description_schema["treeherder"], + # Routes specific to this task, if defined + Optional("routes"): [str], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("dependent-tasks"): {str: object}, + # Optional control for how long a task may run (aka maxRunTime) + Optional("max-run-time"): int, + Optional("extra"): {str: object}, + # Max number of partner repacks per chunk + Optional("repacks-per-chunk"): int, + # Override the default priority for the project + Optional("priority"): task_description_schema["priority"], + } +) + + +@transforms.add +def set_defaults(config, jobs): + for job in jobs: + if not job.get("depname"): + dep_job = job["primary-dependency"] + job["depname"] = dep_job.kind + yield job + + +transforms.add_validate(signing_description_schema) + + +@transforms.add +def add_entitlements_link(config, jobs): + for job in jobs: + entitlements_path = evaluate_keyed_by( + config.graph_config["mac-notarization"]["mac-entitlements"], + "mac entitlements", + { + "platform": job["primary-dependency"].attributes.get("build_platform"), + "release-level": release_level(config.params["project"]), + }, + ) + if entitlements_path: + job["entitlements-url"] = config.params.file_url( + entitlements_path, + ) + yield job + + +@transforms.add +def add_requirements_link(config, jobs): + for job in jobs: + requirements_path = evaluate_keyed_by( + config.graph_config["mac-notarization"]["mac-requirements"], + "mac requirements", + { + "platform": job["primary-dependency"].attributes.get("build_platform"), + }, + ) + if requirements_path: + job["requirements-plist-url"] = config.params.file_url( + requirements_path, + ) + yield job + + +@transforms.add +def make_task_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + signing_format_scopes = [] + formats = set() + for artifacts in job["upstream-artifacts"]: + for f in artifacts["formats"]: + formats.add(f) # Add each format only once + + is_shippable = dep_job.attributes.get("shippable", False) + build_platform = dep_job.attributes.get("build_platform") + treeherder = None + if "partner" not in config.kind and "eme-free" not in config.kind: + treeherder = job.get("treeherder", {}) + + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + build_type = dep_job.attributes.get("build_type") + treeherder.setdefault( + "platform", + _generate_treeherder_platform( + dep_th_platform, build_platform, build_type + ), + ) + + # ccov builds are tier 2, so they cannot have tier 1 tasks + # depending on them. + treeherder.setdefault( + "tier", + dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1), + ) + treeherder.setdefault( + "symbol", + _generate_treeherder_symbol( + dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol") + ), + ) + treeherder.setdefault("kind", "build") + + label = job["label"] + description = ( + "Initial Signing for locale '{locale}' for build '" + "{build_platform}/{build_type}'".format( + locale=attributes.get("locale", "en-US"), + build_platform=build_platform, + build_type=attributes.get("build_type"), + ) + ) + + attributes = ( + job["attributes"] + if job.get("attributes") + else copy_attributes_from_dependent_job(dep_job) + ) + attributes["signed"] = True + + if "linux" in build_platform: + attributes["release_artifacts"] = ["public/build/KEY"] + + if dep_job.attributes.get("chunk_locales"): + # Used for l10n attribute passthrough + attributes["chunk_locales"] = dep_job.attributes.get("chunk_locales") + + signing_cert_scope = get_signing_cert_scope_per_platform( + build_platform, is_shippable, config + ) + worker_type_alias = "linux-signing" if is_shippable else "linux-depsigning" + task = { + "label": label, + "description": description, + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": job["upstream-artifacts"], + "max-run-time": job.get("max-run-time", 3600), + }, + "scopes": [signing_cert_scope] + signing_format_scopes, + "dependencies": _generate_dependencies(job), + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "optimization": dep_job.optimization, + "routes": job.get("routes", []), + "shipping-product": job.get("shipping-product"), + "shipping-phase": job.get("shipping-phase"), + } + if dep_job.kind in task["dependencies"]: + task["if-dependencies"] = [dep_job.kind] + + # build-mac-{signing,notarization} uses signingscript instead of iscript + if "macosx" in build_platform and config.kind.endswith("-mac-notarization"): + task["worker"]["mac-behavior"] = "apple_notarization" + task["scopes"] = [ + add_scope_prefix(config, "signing:cert:release-apple-notarization") + ] + elif "macosx" in build_platform: + # iscript overrides + task["worker"]["mac-behavior"] = "mac_sign_and_pkg" + + worker_type_alias_map = { + "linux-depsigning": "mac-depsigning", + "linux-signing": "mac-signing", + } + assert worker_type_alias in worker_type_alias_map, ( + "Make sure to adjust the below worker_type_alias logic for " + "mac if you change the signing workerType aliases!" + " ({} not found in mapping)".format(worker_type_alias) + ) + worker_type_alias = worker_type_alias_map[worker_type_alias] + for attr in ("entitlements-url", "requirements-plist-url"): + if job.get(attr): + task["worker"][attr] = job[attr] + + task["worker-type"] = worker_type_alias + if treeherder: + task["treeherder"] = treeherder + if job.get("extra"): + task["extra"] = job["extra"] + # we may have reduced the priority for partner jobs, otherwise task.py will set it + if job.get("priority"): + task["priority"] = job["priority"] + + yield task + + +def _generate_dependencies(job): + if isinstance(job.get("dependent-tasks"), dict): + deps = {} + for k, v in job["dependent-tasks"].items(): + deps[k] = v.label + return deps + return {job["depname"]: job["primary-dependency"].label} + + +def _generate_treeherder_platform(dep_th_platform, build_platform, build_type): + if "-pgo" in build_platform: + actual_build_type = "pgo" + elif "-ccov" in build_platform: + actual_build_type = "ccov" + else: + actual_build_type = build_type + return f"{dep_th_platform}/{actual_build_type}" + + +def _generate_treeherder_symbol(build_symbol): + symbol = build_symbol + "s" + return symbol diff --git a/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py b/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py new file mode 100644 index 0000000000..60c5f30ed3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py @@ -0,0 +1,83 @@ +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the checksums signing task into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence +from voluptuous import Optional + +from gecko_taskgraph.loader.single_dep import schema +from gecko_taskgraph.transforms.task import task_description_schema +from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job +from gecko_taskgraph.util.scriptworker import get_signing_cert_scope + +checksums_signing_description_schema = schema.extend( + { + Optional("label"): str, + Optional("treeherder"): task_description_schema["treeherder"], + Optional("shipping-product"): task_description_schema["shipping-product"], + Optional("shipping-phase"): task_description_schema["shipping-phase"], + } +) + +transforms = TransformSequence() +transforms.add_validate(checksums_signing_description_schema) + + +@transforms.add +def make_checksums_signing_description(config, jobs): + for job in jobs: + dep_job = job["primary-dependency"] + attributes = dep_job.attributes + + treeherder = job.get("treeherder", {}) + treeherder.setdefault("symbol", "css(N)") + dep_th_platform = ( + dep_job.task.get("extra", {}) + .get("treeherder", {}) + .get("machine", {}) + .get("platform", "") + ) + treeherder.setdefault("platform", f"{dep_th_platform}/opt") + treeherder.setdefault("tier", 1) + treeherder.setdefault("kind", "build") + + label = job["label"] + description = "Signing of release-source checksums file" + dependencies = {"beetmover": dep_job.label} + + attributes = copy_attributes_from_dependent_job(dep_job) + + upstream_artifacts = [ + { + "taskId": {"task-reference": ""}, + "taskType": "beetmover", + "paths": [ + "public/target-source.checksums", + ], + "formats": ["autograph_gpg"], + } + ] + + signing_cert_scope = get_signing_cert_scope(config) + + task = { + "label": label, + "description": description, + "worker-type": "linux-signing", + "worker": { + "implementation": "scriptworker-signing", + "upstream-artifacts": upstream_artifacts, + "max-run-time": 3600, + }, + "scopes": [ + signing_cert_scope, + ], + "dependencies": dependencies, + "attributes": attributes, + "run-on-projects": dep_job.attributes.get("run_on_projects"), + "treeherder": treeherder, + } + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/source_test.py b/taskcluster/gecko_taskgraph/transforms/source_test.py new file mode 100644 index 0000000000..b480fcad02 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/source_test.py @@ -0,0 +1,270 @@ +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Source-test jobs can run on multiple platforms. These transforms allow jobs +with either `platform` or a list of `platforms`, and set the appropriate +treeherder configuration and attributes for that platform. +""" + + +import copy +import os + +import taskgraph +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.attributes import keymatch +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import join_symbol, split_symbol +from voluptuous import Any, Extra, Optional, Required + +from gecko_taskgraph.transforms.job import job_description_schema +from gecko_taskgraph.util.hg import get_json_automationrelevance + +source_test_description_schema = Schema( + { + # most fields are passed directly through as job fields, and are not + # repeated here + Extra: object, + # The platform on which this task runs. This will be used to set up attributes + # (for try selection) and treeherder metadata (for display). If given as a list, + # the job will be "split" into multiple tasks, one with each platform. + Required("platform"): Any(str, [str]), + # Build labels required for the task. If this key is provided it must + # contain a build label for the task platform. + # The task will then depend on a build task, and the installer url will be + # saved to the GECKO_INSTALLER_URL environment variable. + Optional("require-build"): optionally_keyed_by("project", {str: str}), + # These fields can be keyed by "platform", and are otherwise identical to + # job descriptions. + Required("worker-type"): optionally_keyed_by( + "platform", job_description_schema["worker-type"] + ), + Required("worker"): optionally_keyed_by( + "platform", job_description_schema["worker"] + ), + Optional("python-version"): [int], + Optional("dependencies"): { + k: optionally_keyed_by("platform", v) + for k, v in job_description_schema["dependencies"].items() + }, + # A list of artifacts to install from 'fetch' tasks. + Optional("fetches"): { + str: optionally_keyed_by( + "platform", job_description_schema["fetches"][str] + ), + }, + } +) + +transforms = TransformSequence() + +transforms.add_validate(source_test_description_schema) + + +@transforms.add +def set_job_name(config, jobs): + for job in jobs: + if "job-from" in job and job["job-from"] != "kind.yml": + from_name = os.path.splitext(job["job-from"])[0] + job["name"] = "{}-{}".format(from_name, job["name"]) + yield job + + +@transforms.add +def expand_platforms(config, jobs): + for job in jobs: + if isinstance(job["platform"], str): + yield job + continue + + for platform in job["platform"]: + pjob = copy.deepcopy(job) + pjob["platform"] = platform + + if "name" in pjob: + pjob["name"] = "{}-{}".format(pjob["name"], platform) + else: + pjob["label"] = "{}-{}".format(pjob["label"], platform) + yield pjob + + +@transforms.add +def split_python(config, jobs): + for job in jobs: + key = "python-version" + versions = job.pop(key, []) + if not versions: + yield job + continue + for version in versions: + group = f"py{version}" + pyjob = copy.deepcopy(job) + if "name" in pyjob: + pyjob["name"] += f"-{group}" + else: + pyjob["label"] += f"-{group}" + symbol = split_symbol(pyjob["treeherder"]["symbol"])[1] + pyjob["treeherder"]["symbol"] = join_symbol(group, symbol) + pyjob["run"][key] = version + yield pyjob + + +@transforms.add +def split_jsshell(config, jobs): + all_shells = {"sm": "Spidermonkey", "v8": "Google V8"} + + for job in jobs: + if not job["name"].startswith("jsshell"): + yield job + continue + + test = job.pop("test") + for shell in job.get("shell", all_shells.keys()): + assert shell in all_shells + + new_job = copy.deepcopy(job) + new_job["name"] = "{}-{}".format(new_job["name"], shell) + new_job["description"] = "{} on {}".format( + new_job["description"], all_shells[shell] + ) + new_job["shell"] = shell + + group = f"js-bench-{shell}" + symbol = split_symbol(new_job["treeherder"]["symbol"])[1] + new_job["treeherder"]["symbol"] = join_symbol(group, symbol) + + run = new_job["run"] + run["mach"] = run["mach"].format( + shell=shell, SHELL=shell.upper(), test=test + ) + yield new_job + + +def add_build_dependency(config, job): + """ + Add build dependency to the job and installer_url to env. + """ + key = job["platform"] + build_labels = job.pop("require-build", {}) + matches = keymatch(build_labels, key) + if not matches: + raise Exception( + "No build platform found. " + "Define 'require-build' for {} in the task config.".format(key) + ) + + if len(matches) > 1: + raise Exception(f"More than one build platform found for '{key}'.") + + label = matches[0] + deps = job.setdefault("dependencies", {}) + deps.update({"build": label}) + + +@transforms.add +def handle_platform(config, jobs): + """ + Handle the 'platform' property, setting up treeherder context as well as + try-related attributes. + """ + fields = [ + "always-target", + "fetches.toolchain", + "require-build", + "worker-type", + "worker", + ] + + for job in jobs: + platform = job["platform"] + + for field in fields: + resolve_keyed_by( + job, field, item_name=job["name"], project=config.params["project"] + ) + for field in job.get("dependencies", {}): + resolve_keyed_by( + job, + f"dependencies.{field}", + item_name=job["name"], + project=config.params["project"], + ) + + if "treeherder" in job: + job["treeherder"].setdefault("platform", platform) + + if "require-build" in job: + add_build_dependency(config, job) + + del job["platform"] + yield job + + +@transforms.add +def handle_shell(config, jobs): + """ + Handle the 'shell' property. + """ + fields = [ + "run-on-projects", + "worker.env", + ] + + for job in jobs: + if not job.get("shell"): + yield job + continue + + for field in fields: + resolve_keyed_by(job, field, item_name=job["name"]) + + del job["shell"] + yield job + + +@transforms.add +def set_code_review_env(config, jobs): + """ + Add a CODE_REVIEW environment variable when running in code-review bot mode + """ + is_code_review = config.params["target_tasks_method"] == "codereview" + + for job in jobs: + attrs = job.get("attributes", {}) + if is_code_review and attrs.get("code-review") is True: + env = job["worker"].setdefault("env", {}) + env["CODE_REVIEW"] = "1" + + yield job + + +@transforms.add +def set_base_revision_in_tgdiff(config, jobs): + # Don't attempt to download 'json-automation' locally as the revision may + # not exist in the repository. + if not os.environ.get("MOZ_AUTOMATION") or taskgraph.fast: + yield from jobs + return + + data = get_json_automationrelevance( + config.params["head_repository"], config.params["head_rev"] + ) + for job in jobs: + if job["name"] != "taskgraph-diff": + yield job + continue + + job["run"]["command-context"] = { + "base_rev": data["changesets"][0]["parents"][0] + } + yield job + + +@transforms.add +def set_worker_exit_code(config, jobs): + for job in jobs: + worker = job["worker"] + worker.setdefault("retry-exit-status", []) + if 137 not in worker["retry-exit-status"]: + worker["retry-exit-status"].append(137) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/spidermonkey.py b/taskcluster/gecko_taskgraph/transforms/spidermonkey.py new file mode 100644 index 0000000000..8e652f1668 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/spidermonkey.py @@ -0,0 +1,21 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import copy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +transforms = TransformSequence() + + +@transforms.add +def handle_keyed_by(config, jobs): + """Resolve fields that can be keyed by platform, etc.""" + fields = ["fetches.toolchain"] + for job in jobs: + job = copy.deepcopy(job) # don't overwrite dict values here + for field in fields: + resolve_keyed_by(item=job, field=field, item_name=job["name"]) + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/split_by_locale.py b/taskcluster/gecko_taskgraph/transforms/split_by_locale.py new file mode 100644 index 0000000000..ae68ab5051 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/split_by_locale.py @@ -0,0 +1,79 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This transform splits the jobs it receives into per-locale tasks. Locales are +provided by the `locales-file`. +""" + +from copy import deepcopy +from pprint import pprint + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema +from voluptuous import Extra, Optional, Required + +from gecko_taskgraph.transforms.l10n import parse_locales_file + +transforms = TransformSequence() + +split_by_locale_schema = Schema( + { + # The file to pull locale information from. This should be a json file + # such as browser/locales/l10n-changesets.json. + Required("locales-file"): str, + # The platform name in the form used by the locales files. Defaults to + # attributes.build_platform if not provided. + Optional("locale-file-platform"): str, + # A list of properties elsewhere in the job that need to have the locale + # name substituted into them. The referenced properties may be strings + # or lists. In the case of the latter, all list values will have + # substitutions performed. + Optional("properties-with-locale"): [str], + Extra: object, + } +) + + +transforms.add_validate(split_by_locale_schema) + + +@transforms.add +def add_command(config, jobs): + for job in jobs: + locales_file = job.pop("locales-file") + properties_with_locale = job.pop("properties-with-locale") + build_platform = job.pop( + "locale-file-platform", job["attributes"]["build_platform"] + ) + + for locale in parse_locales_file(locales_file, build_platform): + locale_job = deepcopy(job) + locale_job["attributes"]["locale"] = locale + for prop in properties_with_locale: + container, subfield = locale_job, prop + while "." in subfield: + f, subfield = subfield.split(".", 1) + if f not in container: + raise Exception( + f"Unable to find property {prop} to perform locale substitution on. Job is:\n{pprint(job)}" + ) + container = container[f] + if not isinstance(container, dict): + raise Exception( + f"{container} is not a dict, cannot perform locale substitution. Job is:\n{pprint(job)}" + ) + + if isinstance(container[subfield], str): + container[subfield] = container[subfield].format(locale=locale) + elif isinstance(container[subfield], list): + for i in range(len(container[subfield])): + container[subfield][i] = container[subfield][i].format( + locale=locale + ) + else: + raise Exception( + f"Don't know how to subtitute locale for value of type: {type(container[subfield])}; value is: {container[subfield]}" + ) + + yield locale_job diff --git a/taskcluster/gecko_taskgraph/transforms/startup_test.py b/taskcluster/gecko_taskgraph/transforms/startup_test.py new file mode 100644 index 0000000000..2660ef6e93 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/startup_test.py @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_command(config, jobs): + for job in jobs: + extra_config = job.pop("extra-config") + upstream_kind = extra_config["upstream_kind"] + upstream_artifact = extra_config["upstream_artifact"] + binary = extra_config["binary"] + package_to_test = "<{}/public/build/{}>".format( + upstream_kind, upstream_artifact + ) + + if job["attributes"]["build_platform"].startswith("linux"): + job["run"]["command"] = { + "artifact-reference": ". $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && " + + "python3 ./mach python testing/mozharness/scripts/does_it_crash.py " + + "--run-for 30 --thing-url " + + package_to_test + + " --thing-to-run " + + binary + } + else: + job["run"]["mach"] = { + "artifact-reference": "python testing/mozharness/scripts/does_it_crash.py " + + "--run-for 30 --thing-url " + + package_to_test + + " --thing-to-run " + + binary + } + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py b/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py new file mode 100644 index 0000000000..4e1ec8783a --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py @@ -0,0 +1,17 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +FIXME +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def strip_dependent_task(config, jobs): + for job in jobs: + del job["primary-dependency"] + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/task.py b/taskcluster/gecko_taskgraph/transforms/task.py new file mode 100644 index 0000000000..e823e96b21 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/task.py @@ -0,0 +1,2266 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +These transformations take a task description and turn it into a TaskCluster +task definition (along with attributes, label, etc.). The input to these +transformations is generic to any kind of task, but abstracts away some of the +complexities of worker implementations, scopes, and treeherder annotations. +""" + + +import datetime +import hashlib +import os +import re +import time + +import attr +from mozbuild.util import memoize +from taskcluster.utils import fromNow +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.keyed_by import evaluate_keyed_by +from taskgraph.util.schema import ( + Schema, + optionally_keyed_by, + resolve_keyed_by, + taskref_or_string, + validate_schema, +) +from taskgraph.util.treeherder import split_symbol +from voluptuous import All, Any, Extra, Match, NotIn, Optional, Required + +from gecko_taskgraph import GECKO, MAX_DEPENDENCIES +from gecko_taskgraph.optimize.schema import OptimizationSchema +from gecko_taskgraph.transforms.job.common import get_expiration +from gecko_taskgraph.util import docker as dockerutil +from gecko_taskgraph.util.attributes import TRUNK_PROJECTS, is_try, release_level +from gecko_taskgraph.util.copy_task import copy_task +from gecko_taskgraph.util.hash import hash_path +from gecko_taskgraph.util.partners import get_partners_to_be_published +from gecko_taskgraph.util.scriptworker import BALROG_ACTIONS, get_release_config +from gecko_taskgraph.util.signed_artifacts import get_signed_artifacts +from gecko_taskgraph.util.workertypes import get_worker_type, worker_type_implementation + +RUN_TASK = os.path.join(GECKO, "taskcluster", "scripts", "run-task") + +SCCACHE_GCS_PROJECT = "sccache-3" + + +@memoize +def _run_task_suffix(): + """String to append to cache names under control of run-task.""" + return hash_path(RUN_TASK)[0:20] + + +def _compute_geckoview_version(app_version, moz_build_date): + """Geckoview version string that matches geckoview gradle configuration""" + # Must be synchronized with /mobile/android/geckoview/build.gradle computeVersionCode(...) + version_without_milestone = re.sub(r"a[0-9]", "", app_version, 1) + parts = version_without_milestone.split(".") + return f"{parts[0]}.{parts[1]}.{moz_build_date}" + + +# A task description is a general description of a TaskCluster task +task_description_schema = Schema( + { + # the label for this task + Required("label"): str, + # description of the task (for metadata) + Required("description"): str, + # attributes for this task + Optional("attributes"): {str: object}, + # relative path (from config.path) to the file task was defined in + Optional("job-from"): str, + # dependencies of this task, keyed by name; these are passed through + # verbatim and subject to the interpretation of the Task's get_dependencies + # method. + Optional("dependencies"): { + All( + str, + NotIn( + ["self", "decision"], + "Can't use 'self` or 'decision' as depdency names.", + ), + ): object, + }, + # Soft dependencies of this task, as a list of tasks labels + Optional("soft-dependencies"): [str], + # Dependencies that must be scheduled in order for this task to run. + Optional("if-dependencies"): [str], + Optional("requires"): Any("all-completed", "all-resolved"), + # expiration and deadline times, relative to task creation, with units + # (e.g., "14 days"). Defaults are set based on the project. + Optional("expires-after"): str, + Optional("deadline-after"): str, + Optional("expiration-policy"): str, + # custom routes for this task; the default treeherder routes will be added + # automatically + Optional("routes"): [str], + # custom scopes for this task; any scopes required for the worker will be + # added automatically. The following parameters will be substituted in each + # scope: + # {level} -- the scm level of this push + # {project} -- the project of this push + Optional("scopes"): [str], + # Tags + Optional("tags"): {str: str}, + # custom "task.extra" content + Optional("extra"): {str: object}, + # treeherder-related information; see + # https://firefox-ci-tc.services.mozilla.com/schemas/taskcluster-treeherder/v1/task-treeherder-config.json + # If not specified, no treeherder extra information or routes will be + # added to the task + Optional("treeherder"): { + # either a bare symbol, or "grp(sym)". + "symbol": str, + # the job kind + "kind": Any("build", "test", "other"), + # tier for this task + "tier": int, + # task platform, in the form platform/collection, used to set + # treeherder.machine.platform and treeherder.collection or + # treeherder.labels + "platform": Match("^[A-Za-z0-9_-]{1,50}/[A-Za-z0-9_-]{1,50}$"), + }, + # information for indexing this build so its artifacts can be discovered; + # if omitted, the build will not be indexed. + Optional("index"): { + # the name of the product this build produces + "product": str, + # the names to use for this job in the TaskCluster index + "job-name": str, + # Type of gecko v2 index to use + "type": Any( + "generic", + "l10n", + "shippable", + "shippable-l10n", + "android-shippable", + "android-shippable-with-multi-l10n", + "shippable-with-multi-l10n", + ), + # The rank that the task will receive in the TaskCluster + # index. A newly completed task supercedes the currently + # indexed task iff it has a higher rank. If unspecified, + # 'by-tier' behavior will be used. + "rank": Any( + # Rank is equal the timestamp of the build_date for tier-1 + # tasks, and zero for non-tier-1. This sorts tier-{2,3} + # builds below tier-1 in the index. + "by-tier", + # Rank is given as an integer constant (e.g. zero to make + # sure a task is last in the index). + int, + # Rank is equal to the timestamp of the build_date. This + # option can be used to override the 'by-tier' behavior + # for non-tier-1 tasks. + "build_date", + ), + }, + # The `run_on_projects` attribute, defaulting to "all". This dictates the + # projects on which this task should be included in the target task set. + # See the attributes documentation for details. + Optional("run-on-projects"): optionally_keyed_by("build-platform", [str]), + # Like `run_on_projects`, `run-on-hg-branches` defaults to "all". + Optional("run-on-hg-branches"): optionally_keyed_by("project", [str]), + # The `shipping_phase` attribute, defaulting to None. This specifies the + # release promotion phase that this task belongs to. + Required("shipping-phase"): Any( + None, + "build", + "promote", + "push", + "ship", + ), + # The `shipping_product` attribute, defaulting to None. This specifies the + # release promotion product that this task belongs to. + Required("shipping-product"): Any(None, str), + # The `always-target` attribute will cause the task to be included in the + # target_task_graph regardless of filtering. Tasks included in this manner + # will be candidates for optimization even when `optimize_target_tasks` is + # False, unless the task was also explicitly chosen by the target_tasks + # method. + Required("always-target"): bool, + # Optimization to perform on this task during the optimization phase. + # Optimizations are defined in taskcluster/gecko_taskgraph/optimize.py. + Required("optimization"): OptimizationSchema, + # the provisioner-id/worker-type for the task. The following parameters will + # be substituted in this string: + # {level} -- the scm level of this push + "worker-type": str, + # Whether the job should use sccache compiler caching. + Required("use-sccache"): bool, + # information specific to the worker implementation that will run this task + Optional("worker"): { + Required("implementation"): str, + Extra: object, + }, + # Override the default priority for the project + Optional("priority"): str, + } +) + +TC_TREEHERDER_SCHEMA_URL = ( + "https://github.com/taskcluster/taskcluster-treeherder/" + "blob/master/schemas/task-treeherder-config.yml" +) + + +UNKNOWN_GROUP_NAME = ( + "Treeherder group {} (from {}) has no name; " "add it to taskcluster/ci/config.yml" +) + +V2_ROUTE_TEMPLATES = [ + "index.{trust-domain}.v2.{project}.latest.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.pushdate.{build_date_long}.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.pushdate.{build_date}.latest.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.pushlog-id.{pushlog_id}.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.revision.{branch_rev}.{product}.{job-name}", +] + +# {central, inbound, autoland} write to a "trunk" index prefix. This facilitates +# walking of tasks with similar configurations. +V2_TRUNK_ROUTE_TEMPLATES = [ + "index.{trust-domain}.v2.trunk.revision.{branch_rev}.{product}.{job-name}", +] + +V2_SHIPPABLE_TEMPLATES = [ + "index.{trust-domain}.v2.{project}.shippable.latest.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.shippable.{build_date}.revision.{branch_rev}.{product}.{job-name}", # noqa - too long + "index.{trust-domain}.v2.{project}.shippable.{build_date}.latest.{product}.{job-name}", + "index.{trust-domain}.v2.{project}.shippable.revision.{branch_rev}.{product}.{job-name}", +] + +V2_SHIPPABLE_L10N_TEMPLATES = [ + "index.{trust-domain}.v2.{project}.shippable.latest.{product}-l10n.{job-name}.{locale}", + "index.{trust-domain}.v2.{project}.shippable.{build_date}.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}", # noqa - too long + "index.{trust-domain}.v2.{project}.shippable.{build_date}.latest.{product}-l10n.{job-name}.{locale}", # noqa - too long + "index.{trust-domain}.v2.{project}.shippable.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}", # noqa - too long +] + +V2_L10N_TEMPLATES = [ + "index.{trust-domain}.v2.{project}.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}", + "index.{trust-domain}.v2.{project}.pushdate.{build_date_long}.{product}-l10n.{job-name}.{locale}", # noqa - too long + "index.{trust-domain}.v2.{project}.pushlog-id.{pushlog_id}.{product}-l10n.{job-name}.{locale}", + "index.{trust-domain}.v2.{project}.latest.{product}-l10n.{job-name}.{locale}", +] + +# This index is specifically for builds that include geckoview releases, +# so we can hard-code the project to "geckoview" +V2_GECKOVIEW_RELEASE = "index.{trust-domain}.v2.{project}.geckoview-version.{geckoview-version}.{product}.{job-name}" # noqa - too long + +# the roots of the treeherder routes +TREEHERDER_ROUTE_ROOT = "tc-treeherder" + + +def get_branch_rev(config): + return config.params[ + "{}head_rev".format(config.graph_config["project-repo-param-prefix"]) + ] + + +def get_branch_repo(config): + return config.params[ + "{}head_repository".format( + config.graph_config["project-repo-param-prefix"], + ) + ] + + +@memoize +def get_default_priority(graph_config, project): + return evaluate_keyed_by( + graph_config["task-priority"], "Graph Config", {"project": project} + ) + + +# define a collection of payload builders, depending on the worker implementation +payload_builders = {} + + +@attr.s(frozen=True) +class PayloadBuilder: + schema = attr.ib(type=Schema) + builder = attr.ib() + + +def payload_builder(name, schema): + schema = Schema({Required("implementation"): name, Optional("os"): str}).extend( + schema + ) + + def wrap(func): + payload_builders[name] = PayloadBuilder(schema, func) + return func + + return wrap + + +# define a collection of index builders, depending on the type implementation +index_builders = {} + + +def index_builder(name): + def wrap(func): + index_builders[name] = func + return func + + return wrap + + +UNSUPPORTED_INDEX_PRODUCT_ERROR = """\ +The gecko-v2 product {product} is not in the list of configured products in +`taskcluster/ci/config.yml'. +""" + + +def verify_index(config, index): + product = index["product"] + if product not in config.graph_config["index"]["products"]: + raise Exception(UNSUPPORTED_INDEX_PRODUCT_ERROR.format(product=product)) + + +@payload_builder( + "docker-worker", + schema={ + Required("os"): "linux", + # For tasks that will run in docker-worker, this is the + # name of the docker image or in-tree docker image to run the task in. If + # in-tree, then a dependency will be created automatically. This is + # generally `desktop-test`, or an image that acts an awful lot like it. + Required("docker-image"): Any( + # a raw Docker image path (repo/image:tag) + str, + # an in-tree generated docker image (from `taskcluster/docker/`) + {"in-tree": str}, + # an indexed docker image + {"indexed": str}, + ), + # worker features that should be enabled + Required("chain-of-trust"): bool, + Required("taskcluster-proxy"): bool, + Required("allow-ptrace"): bool, + Required("loopback-video"): bool, + Required("loopback-audio"): bool, + Required("docker-in-docker"): bool, # (aka 'dind') + Required("privileged"): bool, + # Paths to Docker volumes. + # + # For in-tree Docker images, volumes can be parsed from Dockerfile. + # This only works for the Dockerfile itself: if a volume is defined in + # a base image, it will need to be declared here. Out-of-tree Docker + # images will also require explicit volume annotation. + # + # Caches are often mounted to the same path as Docker volumes. In this + # case, they take precedence over a Docker volume. But a volume still + # needs to be declared for the path. + Optional("volumes"): [str], + Optional( + "required-volumes", + description=( + "Paths that are required to be volumes for performance reasons. " + "For in-tree images, these paths will be checked to verify that they " + "are defined as volumes." + ), + ): [str], + # caches to set up for the task + Optional("caches"): [ + { + # only one type is supported by any of the workers right now + "type": "persistent", + # name of the cache, allowing re-use by subsequent tasks naming the + # same cache + "name": str, + # location in the task image where the cache will be mounted + "mount-point": str, + # Whether the cache is not used in untrusted environments + # (like the Try repo). + Optional("skip-untrusted"): bool, + } + ], + # artifacts to extract from the task image after completion + Optional("artifacts"): [ + { + # type of artifact -- simple file, or recursive directory + "type": Any("file", "directory"), + # task image path from which to read artifact + "path": str, + # name of the produced artifact (root of the names for + # type=directory) + "name": str, + "expires-after": str, + } + ], + # environment variables + Required("env"): {str: taskref_or_string}, + # the command to run; if not given, docker-worker will default to the + # command in the docker image + Optional("command"): [taskref_or_string], + # the maximum time to run, in seconds + Required("max-run-time"): int, + # the exit status code(s) that indicates the task should be retried + Optional("retry-exit-status"): [int], + # the exit status code(s) that indicates the caches used by the task + # should be purged + Optional("purge-caches-exit-status"): [int], + # Whether any artifacts are assigned to this worker + Optional("skip-artifacts"): bool, + }, +) +def build_docker_worker_payload(config, task, task_def): + worker = task["worker"] + level = int(config.params["level"]) + + image = worker["docker-image"] + if isinstance(image, dict): + if "in-tree" in image: + name = image["in-tree"] + docker_image_task = "docker-image-" + image["in-tree"] + task.setdefault("dependencies", {})["docker-image"] = docker_image_task + + image = { + "path": "public/image.tar.zst", + "taskId": {"task-reference": ""}, + "type": "task-image", + } + + # Find VOLUME in Dockerfile. + volumes = dockerutil.parse_volumes(name) + for v in sorted(volumes): + if v in worker["volumes"]: + raise Exception( + "volume %s already defined; " + "if it is defined in a Dockerfile, " + "it does not need to be specified in the " + "worker definition" % v + ) + + worker["volumes"].append(v) + + elif "indexed" in image: + image = { + "path": "public/image.tar.zst", + "namespace": image["indexed"], + "type": "indexed-image", + } + else: + raise Exception("unknown docker image type") + + features = {} + + if worker.get("taskcluster-proxy"): + features["taskclusterProxy"] = True + + if worker.get("allow-ptrace"): + features["allowPtrace"] = True + task_def["scopes"].append("docker-worker:feature:allowPtrace") + + if worker.get("chain-of-trust"): + features["chainOfTrust"] = True + + if worker.get("docker-in-docker"): + features["dind"] = True + + # Never enable sccache on the toolchains repo, as there is no benefit from it + # because each push uses a different compiler. + if task.get("use-sccache") and config.params["project"] != "toolchains": + features["taskclusterProxy"] = True + task_def["scopes"].append( + "assume:project:taskcluster:{trust_domain}:level-{level}-sccache-buckets".format( + trust_domain=config.graph_config["trust-domain"], + level=config.params["level"], + ) + ) + worker["env"]["USE_SCCACHE"] = "1" + worker["env"]["SCCACHE_GCS_PROJECT"] = SCCACHE_GCS_PROJECT + # Disable sccache idle shutdown. + worker["env"]["SCCACHE_IDLE_TIMEOUT"] = "0" + else: + worker["env"]["SCCACHE_DISABLE"] = "1" + + capabilities = {} + + for lo in "audio", "video": + if worker.get("loopback-" + lo): + capitalized = "loopback" + lo.capitalize() + devices = capabilities.setdefault("devices", {}) + devices[capitalized] = True + task_def["scopes"].append("docker-worker:capability:device:" + capitalized) + + if worker.get("privileged"): + capabilities["privileged"] = True + task_def["scopes"].append("docker-worker:capability:privileged") + + task_def["payload"] = payload = { + "image": image, + "env": worker["env"], + } + if "command" in worker: + payload["command"] = worker["command"] + + if "max-run-time" in worker: + payload["maxRunTime"] = worker["max-run-time"] + + run_task = payload.get("command", [""])[0].endswith("run-task") + + # run-task exits EXIT_PURGE_CACHES if there is a problem with caches. + # Automatically retry the tasks and purge caches if we see this exit + # code. + # TODO move this closer to code adding run-task once bug 1469697 is + # addressed. + if run_task: + worker.setdefault("retry-exit-status", []).append(72) + worker.setdefault("purge-caches-exit-status", []).append(72) + + payload["onExitStatus"] = {} + if "retry-exit-status" in worker: + payload["onExitStatus"]["retry"] = worker["retry-exit-status"] + if "purge-caches-exit-status" in worker: + payload["onExitStatus"]["purgeCaches"] = worker["purge-caches-exit-status"] + + if "artifacts" in worker: + artifacts = {} + expires_policy = get_expiration( + config, task.get("expiration-policy", "default") + ) + now = datetime.datetime.utcnow() + task_exp = task_def["expires"]["relative-datestamp"] + task_exp_from_now = fromNow(task_exp) + for artifact in worker["artifacts"]: + art_exp = artifact.get("expires-after", expires_policy) + expires = art_exp if fromNow(art_exp, now) < task_exp_from_now else task_exp + artifacts[artifact["name"]] = { + "path": artifact["path"], + "type": artifact["type"], + "expires": {"relative-datestamp": expires}, + } + payload["artifacts"] = artifacts + + if isinstance(worker.get("docker-image"), str): + out_of_tree_image = worker["docker-image"] + else: + out_of_tree_image = None + image = worker.get("docker-image", {}).get("in-tree") + + if "caches" in worker: + caches = {} + + # run-task knows how to validate caches. + # + # To help ensure new run-task features and bug fixes don't interfere + # with existing caches, we seed the hash of run-task into cache names. + # So, any time run-task changes, we should get a fresh set of caches. + # This means run-task can make changes to cache interaction at any time + # without regards for backwards or future compatibility. + # + # But this mechanism only works for in-tree Docker images that are built + # with the current run-task! For out-of-tree Docker images, we have no + # way of knowing their content of run-task. So, in addition to varying + # cache names by the contents of run-task, we also take the Docker image + # name into consideration. This means that different Docker images will + # never share the same cache. This is a bit unfortunate. But it is the + # safest thing to do. Fortunately, most images are defined in-tree. + # + # For out-of-tree Docker images, we don't strictly need to incorporate + # the run-task content into the cache name. However, doing so preserves + # the mechanism whereby changing run-task results in new caches + # everywhere. + + # As an additional mechanism to force the use of different caches, the + # string literal in the variable below can be changed. This is + # preferred to changing run-task because it doesn't require images + # to be rebuilt. + cache_version = "v3" + + if run_task: + suffix = f"{cache_version}-{_run_task_suffix()}" + + if out_of_tree_image: + name_hash = hashlib.sha256( + out_of_tree_image.encode("utf-8") + ).hexdigest() + suffix += name_hash[0:12] + + else: + suffix = cache_version + + skip_untrusted = is_try(config.params) or level == 1 + + for cache in worker["caches"]: + # Some caches aren't enabled in environments where we can't + # guarantee certain behavior. Filter those out. + if cache.get("skip-untrusted") and skip_untrusted: + continue + + name = "{trust_domain}-level-{level}-{name}-{suffix}".format( + trust_domain=config.graph_config["trust-domain"], + level=config.params["level"], + name=cache["name"], + suffix=suffix, + ) + + caches[name] = cache["mount-point"] + task_def["scopes"].append("docker-worker:cache:%s" % name) + + # Assertion: only run-task is interested in this. + if run_task: + payload["env"]["TASKCLUSTER_CACHES"] = ";".join(sorted(caches.values())) + + payload["cache"] = caches + + # And send down volumes information to run-task as well. + if run_task and worker.get("volumes"): + payload["env"]["TASKCLUSTER_VOLUMES"] = ";".join(sorted(worker["volumes"])) + + if payload.get("cache") and skip_untrusted: + payload["env"]["TASKCLUSTER_UNTRUSTED_CACHES"] = "1" + + if features: + payload["features"] = features + if capabilities: + payload["capabilities"] = capabilities + + check_caches_are_volumes(task) + check_required_volumes(task) + + +@payload_builder( + "generic-worker", + schema={ + Required("os"): Any("windows", "macosx", "linux", "linux-bitbar"), + # see http://schemas.taskcluster.net/generic-worker/v1/payload.json + # and https://docs.taskcluster.net/reference/workers/generic-worker/payload + # command is a list of commands to run, sequentially + # on Windows, each command is a string, on OS X and Linux, each command is + # a string array + Required("command"): Any( + [taskref_or_string], [[taskref_or_string]] # Windows # Linux / OS X + ), + # artifacts to extract from the task image after completion; note that artifacts + # for the generic worker cannot have names + Optional("artifacts"): [ + { + # type of artifact -- simple file, or recursive directory + "type": Any("file", "directory"), + # filesystem path from which to read artifact + "path": str, + # if not specified, path is used for artifact name + Optional("name"): str, + "expires-after": str, + } + ], + # Directories and/or files to be mounted. + # The actual allowed combinations are stricter than the model below, + # but this provides a simple starting point. + # See https://docs.taskcluster.net/reference/workers/generic-worker/payload + Optional("mounts"): [ + { + # A unique name for the cache volume, implies writable cache directory + # (otherwise mount is a read-only file or directory). + Optional("cache-name"): str, + # Optional content for pre-loading cache, or mandatory content for + # read-only file or directory. Pre-loaded content can come from either + # a task artifact or from a URL. + Optional("content"): { + # *** Either (artifact and task-id) or url must be specified. *** + # Artifact name that contains the content. + Optional("artifact"): str, + # Task ID that has the artifact that contains the content. + Optional("task-id"): taskref_or_string, + # URL that supplies the content in response to an unauthenticated + # GET request. + Optional("url"): str, + }, + # *** Either file or directory must be specified. *** + # If mounting a cache or read-only directory, the filesystem location of + # the directory should be specified as a relative path to the task + # directory here. + Optional("directory"): str, + # If mounting a file, specify the relative path within the task + # directory to mount the file (the file will be read only). + Optional("file"): str, + # Required if and only if `content` is specified and mounting a + # directory (not a file). This should be the archive format of the + # content (either pre-loaded cache or read-only directory). + Optional("format"): Any("rar", "tar.bz2", "tar.gz", "zip"), + } + ], + # environment variables + Required("env"): {str: taskref_or_string}, + # the maximum time to run, in seconds + Required("max-run-time"): int, + # os user groups for test task workers + Optional("os-groups"): [str], + # feature for test task to run as administarotr + Optional("run-as-administrator"): bool, + # optional features + Required("chain-of-trust"): bool, + Optional("taskcluster-proxy"): bool, + # the exit status code(s) that indicates the task should be retried + Optional("retry-exit-status"): [int], + # Wether any artifacts are assigned to this worker + Optional("skip-artifacts"): bool, + }, +) +def build_generic_worker_payload(config, task, task_def): + worker = task["worker"] + features = {} + + task_def["payload"] = { + "command": worker["command"], + "maxRunTime": worker["max-run-time"], + } + + if worker["os"] == "windows": + task_def["payload"]["onExitStatus"] = { + "retry": [ + # These codes (on windows) indicate a process interruption, + # rather than a task run failure. See bug 1544403. + 1073807364, # process force-killed due to system shutdown + 3221225786, # sigint (any interrupt) + ] + } + if "retry-exit-status" in worker: + task_def["payload"].setdefault("onExitStatus", {}).setdefault( + "retry", [] + ).extend(worker["retry-exit-status"]) + if worker["os"] == "linux-bitbar": + task_def["payload"].setdefault("onExitStatus", {}).setdefault("retry", []) + # exit code 4 is used to indicate an intermittent android device error + if 4 not in task_def["payload"]["onExitStatus"]["retry"]: + task_def["payload"]["onExitStatus"]["retry"].extend([4]) + + env = worker.get("env", {}) + + # Never enable sccache on the toolchains repo, as there is no benefit from it + # because each push uses a different compiler. + if task.get("use-sccache") and config.params["project"] != "toolchains": + features["taskclusterProxy"] = True + task_def["scopes"].append( + "assume:project:taskcluster:{trust_domain}:level-{level}-sccache-buckets".format( + trust_domain=config.graph_config["trust-domain"], + level=config.params["level"], + ) + ) + env["USE_SCCACHE"] = "1" + worker["env"]["SCCACHE_GCS_PROJECT"] = SCCACHE_GCS_PROJECT + # Disable sccache idle shutdown. + env["SCCACHE_IDLE_TIMEOUT"] = "0" + else: + env["SCCACHE_DISABLE"] = "1" + + if env: + task_def["payload"]["env"] = env + + artifacts = [] + + expires_policy = get_expiration(config, task.get("expiration-policy", "default")) + now = datetime.datetime.utcnow() + task_exp = task_def["expires"]["relative-datestamp"] + task_exp_from_now = fromNow(task_exp) + for artifact in worker.get("artifacts", []): + art_exp = artifact.get("expires-after", expires_policy) + task_exp = task_def["expires"]["relative-datestamp"] + expires = art_exp if fromNow(art_exp, now) < task_exp_from_now else task_exp + a = { + "path": artifact["path"], + "type": artifact["type"], + "expires": {"relative-datestamp": expires}, + } + if "name" in artifact: + a["name"] = artifact["name"] + artifacts.append(a) + + if artifacts: + task_def["payload"]["artifacts"] = artifacts + + # Need to copy over mounts, but rename keys to respect naming convention + # * 'cache-name' -> 'cacheName' + # * 'task-id' -> 'taskId' + # All other key names are already suitable, and don't need renaming. + mounts = copy_task(worker.get("mounts", [])) + for mount in mounts: + if "cache-name" in mount: + mount["cacheName"] = "{trust_domain}-level-{level}-{name}".format( + trust_domain=config.graph_config["trust-domain"], + level=config.params["level"], + name=mount.pop("cache-name"), + ) + task_def["scopes"].append( + "generic-worker:cache:{}".format(mount["cacheName"]) + ) + if "content" in mount: + if "task-id" in mount["content"]: + mount["content"]["taskId"] = mount["content"].pop("task-id") + if "artifact" in mount["content"]: + if not mount["content"]["artifact"].startswith("public/"): + task_def["scopes"].append( + "queue:get-artifact:{}".format(mount["content"]["artifact"]) + ) + + if mounts: + task_def["payload"]["mounts"] = mounts + + if worker.get("os-groups"): + task_def["payload"]["osGroups"] = worker["os-groups"] + task_def["scopes"].extend( + [ + "generic-worker:os-group:{}/{}".format(task["worker-type"], group) + for group in worker["os-groups"] + ] + ) + + if worker.get("chain-of-trust"): + features["chainOfTrust"] = True + + if worker.get("taskcluster-proxy"): + features["taskclusterProxy"] = True + + if worker.get("run-as-administrator", False): + features["runAsAdministrator"] = True + task_def["scopes"].append( + "generic-worker:run-as-administrator:{}".format(task["worker-type"]), + ) + + if features: + task_def["payload"]["features"] = features + + +@payload_builder( + "scriptworker-signing", + schema={ + # the maximum time to run, in seconds + Required("max-run-time"): int, + # list of artifact URLs for the artifacts that should be signed + Required("upstream-artifacts"): [ + { + # taskId of the task with the artifact + Required("taskId"): taskref_or_string, + # type of signing task (for CoT) + Required("taskType"): str, + # Paths to the artifacts to sign + Required("paths"): [str], + # Signing formats to use on each of the paths + Required("formats"): [str], + Optional("singleFileGlobs"): [str], + } + ], + # behavior for mac iscript + Optional("mac-behavior"): Any( + "apple_notarization", + "mac_sign_and_pkg", + "mac_geckodriver", + "mac_notarize_geckodriver", + "mac_single_file", + "mac_notarize_single_file", + ), + Optional("entitlements-url"): str, + Optional("requirements-plist-url"): str, + }, +) +def build_scriptworker_signing_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = { + "maxRunTime": worker["max-run-time"], + "upstreamArtifacts": worker["upstream-artifacts"], + } + if worker.get("mac-behavior"): + task_def["payload"]["behavior"] = worker["mac-behavior"] + for attribute in ("entitlements-url", "requirements-plist-url"): + if worker.get(attribute): + task_def["payload"][attribute] = worker[attribute] + + artifacts = set(task.setdefault("attributes", {}).get("release_artifacts", [])) + for upstream_artifact in worker["upstream-artifacts"]: + for path in upstream_artifact["paths"]: + artifacts.update( + get_signed_artifacts( + input=path, + formats=upstream_artifact["formats"], + behavior=worker.get("mac-behavior"), + ) + ) + task["attributes"]["release_artifacts"] = sorted(list(artifacts)) + + +@payload_builder( + "beetmover", + schema={ + # the maximum time to run, in seconds + Required("max-run-time"): int, + # locale key, if this is a locale beetmover job + Optional("locale"): str, + Optional("partner-public"): bool, + Required("release-properties"): { + "app-name": str, + "app-version": str, + "branch": str, + "build-id": str, + "hash-type": str, + "platform": str, + }, + # list of artifact URLs for the artifacts that should be beetmoved + Required("upstream-artifacts"): [ + { + # taskId of the task with the artifact + Required("taskId"): taskref_or_string, + # type of signing task (for CoT) + Required("taskType"): str, + # Paths to the artifacts to sign + Required("paths"): [str], + # locale is used to map upload path and allow for duplicate simple names + Required("locale"): str, + } + ], + Optional("artifact-map"): object, + }, +) +def build_beetmover_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + release_properties = worker["release-properties"] + + task_def["payload"] = { + "maxRunTime": worker["max-run-time"], + "releaseProperties": { + "appName": release_properties["app-name"], + "appVersion": release_properties["app-version"], + "branch": release_properties["branch"], + "buildid": release_properties["build-id"], + "hashType": release_properties["hash-type"], + "platform": release_properties["platform"], + }, + "upload_date": config.params["build_date"], + "upstreamArtifacts": worker["upstream-artifacts"], + } + if worker.get("locale"): + task_def["payload"]["locale"] = worker["locale"] + if worker.get("artifact-map"): + task_def["payload"]["artifactMap"] = worker["artifact-map"] + if worker.get("partner-public"): + task_def["payload"]["is_partner_repack_public"] = worker["partner-public"] + if release_config: + task_def["payload"].update(release_config) + + +@payload_builder( + "beetmover-push-to-release", + schema={ + # the maximum time to run, in seconds + Required("max-run-time"): int, + Required("product"): str, + }, +) +def build_beetmover_push_to_release_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + partners = [f"{p}/{s}" for p, s, _ in get_partners_to_be_published(config)] + + task_def["payload"] = { + "maxRunTime": worker["max-run-time"], + "product": worker["product"], + "version": release_config["version"], + "build_number": release_config["build_number"], + "partners": partners, + } + + +@payload_builder( + "beetmover-import-from-gcs-to-artifact-registry", + schema={ + Required("max-run-time"): int, + Required("gcs-sources"): [str], + Required("product"): str, + }, +) +def build_import_from_gcs_to_artifact_registry_payload(config, task, task_def): + task_def["payload"] = { + "product": task["worker"]["product"], + "gcs_sources": task["worker"]["gcs-sources"], + } + + +@payload_builder( + "beetmover-maven", + schema={ + Required("max-run-time"): int, + Required("release-properties"): { + "app-name": str, + "app-version": str, + "branch": str, + "build-id": str, + "artifact-id": str, + "hash-type": str, + "platform": str, + }, + Required("upstream-artifacts"): [ + { + Required("taskId"): taskref_or_string, + Required("taskType"): str, + Required("paths"): [str], + Optional("zipExtract"): bool, + } + ], + Optional("artifact-map"): object, + }, +) +def build_beetmover_maven_payload(config, task, task_def): + build_beetmover_payload(config, task, task_def) + + task_def["payload"]["artifact_id"] = task["worker"]["release-properties"][ + "artifact-id" + ] + if task["worker"].get("artifact-map"): + task_def["payload"]["artifactMap"] = task["worker"]["artifact-map"] + + task_def["payload"]["version"] = _compute_geckoview_version( + task["worker"]["release-properties"]["app-version"], + task["worker"]["release-properties"]["build-id"], + ) + + del task_def["payload"]["releaseProperties"]["hashType"] + del task_def["payload"]["releaseProperties"]["platform"] + + +@payload_builder( + "balrog", + schema={ + Required("balrog-action"): Any(*BALROG_ACTIONS), + Optional("product"): str, + Optional("platforms"): [str], + Optional("release-eta"): str, + Optional("channel-names"): optionally_keyed_by("release-type", [str]), + Optional("require-mirrors"): bool, + Optional("publish-rules"): optionally_keyed_by( + "release-type", "release-level", [int] + ), + Optional("rules-to-update"): optionally_keyed_by( + "release-type", "release-level", [str] + ), + Optional("archive-domain"): optionally_keyed_by("release-level", str), + Optional("download-domain"): optionally_keyed_by("release-level", str), + Optional("blob-suffix"): str, + Optional("complete-mar-filename-pattern"): str, + Optional("complete-mar-bouncer-product-pattern"): str, + Optional("update-line"): object, + Optional("suffixes"): [str], + Optional("background-rate"): optionally_keyed_by( + "release-type", "beta-number", Any(int, None) + ), + Optional("force-fallback-mapping-update"): optionally_keyed_by( + "release-type", "beta-number", bool + ), + Optional("pin-channels"): optionally_keyed_by( + "release-type", "release-level", [str] + ), + # list of artifact URLs for the artifacts that should be beetmoved + Optional("upstream-artifacts"): [ + { + # taskId of the task with the artifact + Required("taskId"): taskref_or_string, + # type of signing task (for CoT) + Required("taskType"): str, + # Paths to the artifacts to sign + Required("paths"): [str], + } + ], + }, +) +def build_balrog_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + beta_number = None + if "b" in release_config["version"]: + beta_number = release_config["version"].split("b")[-1] + + task_def["payload"] = { + "behavior": worker["balrog-action"], + } + + if ( + worker["balrog-action"] == "submit-locale" + or worker["balrog-action"] == "v2-submit-locale" + ): + task_def["payload"].update( + { + "upstreamArtifacts": worker["upstream-artifacts"], + "suffixes": worker["suffixes"], + } + ) + else: + for prop in ( + "archive-domain", + "channel-names", + "download-domain", + "publish-rules", + "rules-to-update", + "background-rate", + "force-fallback-mapping-update", + "pin-channels", + ): + if prop in worker: + resolve_keyed_by( + worker, + prop, + task["description"], + **{ + "release-type": config.params["release_type"], + "release-level": release_level(config.params["project"]), + "beta-number": beta_number, + }, + ) + task_def["payload"].update( + { + "build_number": release_config["build_number"], + "product": worker["product"], + "version": release_config["version"], + } + ) + for prop in ( + "blob-suffix", + "complete-mar-filename-pattern", + "complete-mar-bouncer-product-pattern", + "pin-channels", + ): + if prop in worker: + task_def["payload"][prop.replace("-", "_")] = worker[prop] + if ( + worker["balrog-action"] == "submit-toplevel" + or worker["balrog-action"] == "v2-submit-toplevel" + ): + task_def["payload"].update( + { + "app_version": release_config["appVersion"], + "archive_domain": worker["archive-domain"], + "channel_names": worker["channel-names"], + "download_domain": worker["download-domain"], + "partial_versions": release_config.get("partial_versions", ""), + "platforms": worker["platforms"], + "rules_to_update": worker["rules-to-update"], + "require_mirrors": worker["require-mirrors"], + "update_line": worker["update-line"], + } + ) + else: # schedule / ship + task_def["payload"].update( + { + "publish_rules": worker["publish-rules"], + "release_eta": worker.get( + "release-eta", config.params.get("release_eta") + ) + or "", + } + ) + if worker.get("force-fallback-mapping-update"): + task_def["payload"]["force_fallback_mapping_update"] = worker[ + "force-fallback-mapping-update" + ] + if worker.get("background-rate"): + task_def["payload"]["background_rate"] = worker["background-rate"] + + +@payload_builder( + "bouncer-aliases", + schema={ + Required("entries"): object, + }, +) +def build_bouncer_aliases_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = {"aliases_entries": worker["entries"]} + + +@payload_builder( + "bouncer-locations", + schema={ + Required("implementation"): "bouncer-locations", + Required("bouncer-products"): [str], + }, +) +def build_bouncer_locations_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + + task_def["payload"] = { + "bouncer_products": worker["bouncer-products"], + "version": release_config["version"], + "product": task["shipping-product"], + } + + +@payload_builder( + "bouncer-submission", + schema={ + Required("locales"): [str], + Required("entries"): object, + }, +) +def build_bouncer_submission_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = { + "locales": worker["locales"], + "submission_entries": worker["entries"], + } + + +@payload_builder( + "push-flatpak", + schema={ + Required("channel"): str, + Required("upstream-artifacts"): [ + { + Required("taskId"): taskref_or_string, + Required("taskType"): str, + Required("paths"): [str], + } + ], + }, +) +def build_push_flatpak_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = { + "channel": worker["channel"], + "upstreamArtifacts": worker["upstream-artifacts"], + } + + +@payload_builder( + "push-msix", + schema={ + Required("channel"): str, + Optional("publish-mode"): str, + Required("upstream-artifacts"): [ + { + Required("taskId"): taskref_or_string, + Required("taskType"): str, + Required("paths"): [str], + } + ], + }, +) +def build_push_msix_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = { + "channel": worker["channel"], + "upstreamArtifacts": worker["upstream-artifacts"], + } + if worker.get("publish-mode"): + task_def["payload"]["publishMode"] = worker["publish-mode"] + + +@payload_builder( + "shipit-shipped", + schema={ + Required("release-name"): str, + }, +) +def build_ship_it_shipped_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = {"release_name": worker["release-name"]} + + +@payload_builder( + "shipit-maybe-release", + schema={ + Required("phase"): str, + }, +) +def build_ship_it_maybe_release_payload(config, task, task_def): + # expect branch name, including path + branch = config.params["head_repository"][len("https://hg.mozilla.org/") :] + # 'version' is e.g. '71.0b13' (app_version doesn't have beta number) + version = config.params["version"] + + task_def["payload"] = { + "product": task["shipping-product"], + "branch": branch, + "phase": task["worker"]["phase"], + "version": version, + "cron_revision": config.params["head_rev"], + } + + +@payload_builder( + "push-addons", + schema={ + Required("channel"): Any("listed", "unlisted"), + Required("upstream-artifacts"): [ + { + Required("taskId"): taskref_or_string, + Required("taskType"): str, + Required("paths"): [str], + } + ], + }, +) +def build_push_addons_payload(config, task, task_def): + worker = task["worker"] + + task_def["payload"] = { + "channel": worker["channel"], + "upstreamArtifacts": worker["upstream-artifacts"], + } + + +@payload_builder( + "treescript", + schema={ + Required("tags"): [Any("buildN", "release", None)], + Required("bump"): bool, + Optional("bump-files"): [str], + Optional("repo-param-prefix"): str, + Optional("dontbuild"): bool, + Optional("ignore-closed-tree"): bool, + Optional("force-dry-run"): bool, + Optional("push"): bool, + Optional("source-repo"): str, + Optional("ssh-user"): str, + Optional("l10n-bump-info"): { + Required("name"): str, + Required("path"): str, + Required("version-path"): str, + Optional("l10n-repo-url"): str, + Optional("ignore-config"): object, + Required("platform-configs"): [ + { + Required("platforms"): [str], + Required("path"): str, + Optional("format"): str, + } + ], + }, + Optional("merge-info"): object, + }, +) +def build_treescript_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + + task_def["payload"] = {"actions": []} + actions = task_def["payload"]["actions"] + if worker["tags"]: + tag_names = [] + product = task["shipping-product"].upper() + version = release_config["version"].replace(".", "_") + buildnum = release_config["build_number"] + if "buildN" in worker["tags"]: + tag_names.extend( + [ + f"{product}_{version}_BUILD{buildnum}", + ] + ) + if "release" in worker["tags"]: + tag_names.extend([f"{product}_{version}_RELEASE"]) + tag_info = { + "tags": tag_names, + "revision": config.params[ + "{}head_rev".format(worker.get("repo-param-prefix", "")) + ], + } + task_def["payload"]["tag_info"] = tag_info + actions.append("tag") + + if worker["bump"]: + if not worker["bump-files"]: + raise Exception("Version Bump requested without bump-files") + + bump_info = {} + bump_info["next_version"] = release_config["next_version"] + bump_info["files"] = worker["bump-files"] + task_def["payload"]["version_bump_info"] = bump_info + actions.append("version_bump") + + if worker.get("l10n-bump-info"): + l10n_bump_info = {} + for k, v in worker["l10n-bump-info"].items(): + l10n_bump_info[k.replace("-", "_")] = worker["l10n-bump-info"][k] + task_def["payload"]["l10n_bump_info"] = [l10n_bump_info] + actions.append("l10n_bump") + + if worker.get("merge-info"): + merge_info = { + merge_param_name.replace("-", "_"): merge_param_value + for merge_param_name, merge_param_value in worker["merge-info"].items() + if merge_param_name != "version-files" + } + merge_info["version_files"] = [ + { + file_param_name.replace("-", "_"): file_param_value + for file_param_name, file_param_value in file_entry.items() + } + for file_entry in worker["merge-info"]["version-files"] + ] + task_def["payload"]["merge_info"] = merge_info + actions.append("merge_day") + + if worker["push"]: + actions.append("push") + + if worker.get("force-dry-run"): + task_def["payload"]["dry_run"] = True + + if worker.get("dontbuild"): + task_def["payload"]["dontbuild"] = True + + if worker.get("ignore-closed-tree") is not None: + task_def["payload"]["ignore_closed_tree"] = worker["ignore-closed-tree"] + + if worker.get("source-repo"): + task_def["payload"]["source_repo"] = worker["source-repo"] + + if worker.get("ssh-user"): + task_def["payload"]["ssh_user"] = worker["ssh-user"] + + +@payload_builder( + "invalid", + schema={ + # an invalid task is one which should never actually be created; this is used in + # release automation on branches where the task just doesn't make sense + Extra: object, + }, +) +def build_invalid_payload(config, task, task_def): + task_def["payload"] = "invalid task - should never be created" + + +@payload_builder( + "always-optimized", + schema={ + Extra: object, + }, +) +@payload_builder("succeed", schema={}) +def build_dummy_payload(config, task, task_def): + task_def["payload"] = {} + + +transforms = TransformSequence() + + +@transforms.add +def set_implementation(config, tasks): + """ + Set the worker implementation based on the worker-type alias. + """ + for task in tasks: + if "implementation" in task["worker"]: + yield task + continue + + impl, os = worker_type_implementation( + config.graph_config, config.params, task["worker-type"] + ) + + tags = task.setdefault("tags", {}) + tags["worker-implementation"] = impl + if os: + tags["os"] = os + + worker = task.setdefault("worker", {}) + worker["implementation"] = impl + if os: + worker["os"] = os + + yield task + + +@transforms.add +def set_defaults(config, tasks): + for task in tasks: + task.setdefault("shipping-phase", None) + task.setdefault("shipping-product", None) + task.setdefault("always-target", False) + task.setdefault("optimization", None) + task.setdefault("use-sccache", False) + + worker = task["worker"] + if worker["implementation"] in ("docker-worker",): + worker.setdefault("chain-of-trust", False) + worker.setdefault("taskcluster-proxy", False) + worker.setdefault("allow-ptrace", True) + worker.setdefault("loopback-video", False) + worker.setdefault("loopback-audio", False) + worker.setdefault("docker-in-docker", False) + worker.setdefault("privileged", False) + worker.setdefault("volumes", []) + worker.setdefault("env", {}) + if "caches" in worker: + for c in worker["caches"]: + c.setdefault("skip-untrusted", False) + elif worker["implementation"] == "generic-worker": + worker.setdefault("env", {}) + worker.setdefault("os-groups", []) + if worker["os-groups"] and worker["os"] != "windows": + raise Exception( + "os-groups feature of generic-worker is only supported on " + "Windows, not on {}".format(worker["os"]) + ) + worker.setdefault("chain-of-trust", False) + elif worker["implementation"] in ( + "scriptworker-signing", + "beetmover", + "beetmover-push-to-release", + "beetmover-maven", + "beetmover-import-from-gcs-to-artifact-registry", + ): + worker.setdefault("max-run-time", 600) + elif worker["implementation"] == "push-apk": + worker.setdefault("commit", False) + + yield task + + +@transforms.add +def setup_raptor(config, tasks): + """Add options that are specific to raptor jobs (identified by suite=raptor). + + This variant uses a separate set of transforms for manipulating the tests at the + task-level. Currently only used for setting the taskcluster proxy setting and + the scopes required for perftest secrets. + """ + from gecko_taskgraph.transforms.test.raptor import ( + task_transforms as raptor_transforms, + ) + + for task in tasks: + if task.get("extra", {}).get("suite", "") != "raptor": + yield task + continue + + yield from raptor_transforms(config, [task]) + + +@transforms.add +def task_name_from_label(config, tasks): + for task in tasks: + taskname = task.pop("name", None) + if "label" not in task: + if taskname is None: + raise Exception("task has neither a name nor a label") + task["label"] = "{}-{}".format(config.kind, taskname) + yield task + + +UNSUPPORTED_SHIPPING_PRODUCT_ERROR = """\ +The shipping product {product} is not in the list of configured products in +`taskcluster/ci/config.yml'. +""" + + +def validate_shipping_product(config, product): + if product not in config.graph_config["release-promotion"]["products"]: + raise Exception(UNSUPPORTED_SHIPPING_PRODUCT_ERROR.format(product=product)) + + +@transforms.add +def validate(config, tasks): + for task in tasks: + validate_schema( + task_description_schema, + task, + "In task {!r}:".format(task.get("label", "?no-label?")), + ) + validate_schema( + payload_builders[task["worker"]["implementation"]].schema, + task["worker"], + "In task.run {!r}:".format(task.get("label", "?no-label?")), + ) + if task["shipping-product"] is not None: + validate_shipping_product(config, task["shipping-product"]) + yield task + + +@index_builder("generic") +def add_generic_index_routes(config, task): + index = task.get("index") + routes = task.setdefault("routes", []) + + verify_index(config, index) + + subs = config.params.copy() + subs["job-name"] = index["job-name"] + subs["build_date_long"] = time.strftime( + "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"]) + ) + subs["build_date"] = time.strftime( + "%Y.%m.%d", time.gmtime(config.params["build_date"]) + ) + subs["product"] = index["product"] + subs["trust-domain"] = config.graph_config["trust-domain"] + subs["branch_rev"] = get_branch_rev(config) + + project = config.params.get("project") + + for tpl in V2_ROUTE_TEMPLATES: + routes.append(tpl.format(**subs)) + + # Additionally alias all tasks for "trunk" repos into a common + # namespace. + if project and project in TRUNK_PROJECTS: + for tpl in V2_TRUNK_ROUTE_TEMPLATES: + routes.append(tpl.format(**subs)) + + return task + + +@index_builder("shippable") +def add_shippable_index_routes(config, task): + index = task.get("index") + routes = task.setdefault("routes", []) + + verify_index(config, index) + + subs = config.params.copy() + subs["job-name"] = index["job-name"] + subs["build_date_long"] = time.strftime( + "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"]) + ) + subs["build_date"] = time.strftime( + "%Y.%m.%d", time.gmtime(config.params["build_date"]) + ) + subs["product"] = index["product"] + subs["trust-domain"] = config.graph_config["trust-domain"] + subs["branch_rev"] = get_branch_rev(config) + + for tpl in V2_SHIPPABLE_TEMPLATES: + routes.append(tpl.format(**subs)) + + # Also add routes for en-US + task = add_shippable_l10n_index_routes(config, task, force_locale="en-US") + + return task + + +@index_builder("shippable-with-multi-l10n") +def add_shippable_multi_index_routes(config, task): + task = add_shippable_index_routes(config, task) + task = add_l10n_index_routes(config, task, force_locale="multi") + return task + + +@index_builder("l10n") +def add_l10n_index_routes(config, task, force_locale=None): + index = task.get("index") + routes = task.setdefault("routes", []) + + verify_index(config, index) + + subs = config.params.copy() + subs["job-name"] = index["job-name"] + subs["build_date_long"] = time.strftime( + "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"]) + ) + subs["product"] = index["product"] + subs["trust-domain"] = config.graph_config["trust-domain"] + subs["branch_rev"] = get_branch_rev(config) + + locales = task["attributes"].get( + "chunk_locales", task["attributes"].get("all_locales") + ) + # Some tasks has only one locale set + if task["attributes"].get("locale"): + locales = [task["attributes"]["locale"]] + + if force_locale: + # Used for en-US and multi-locale + locales = [force_locale] + + if not locales: + raise Exception("Error: Unable to use l10n index for tasks without locales") + + # If there are too many locales, we can't write a route for all of them + # See Bug 1323792 + if len(locales) > 18: # 18 * 3 = 54, max routes = 64 + return task + + for locale in locales: + for tpl in V2_L10N_TEMPLATES: + routes.append(tpl.format(locale=locale, **subs)) + + return task + + +@index_builder("shippable-l10n") +def add_shippable_l10n_index_routes(config, task, force_locale=None): + index = task.get("index") + routes = task.setdefault("routes", []) + + verify_index(config, index) + + subs = config.params.copy() + subs["job-name"] = index["job-name"] + subs["build_date_long"] = time.strftime( + "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"]) + ) + subs["product"] = index["product"] + subs["trust-domain"] = config.graph_config["trust-domain"] + subs["branch_rev"] = get_branch_rev(config) + + locales = task["attributes"].get( + "chunk_locales", task["attributes"].get("all_locales") + ) + # Some tasks has only one locale set + if task["attributes"].get("locale"): + locales = [task["attributes"]["locale"]] + + if force_locale: + # Used for en-US and multi-locale + locales = [force_locale] + + if not locales: + raise Exception("Error: Unable to use l10n index for tasks without locales") + + # If there are too many locales, we can't write a route for all of them + # See Bug 1323792 + if len(locales) > 18: # 18 * 3 = 54, max routes = 64 + return task + + for locale in locales: + for tpl in V2_SHIPPABLE_L10N_TEMPLATES: + routes.append(tpl.format(locale=locale, **subs)) + + return task + + +def add_geckoview_index_routes(config, task): + index = task.get("index") + routes = task.setdefault("routes", []) + geckoview_version = _compute_geckoview_version( + config.params["app_version"], config.params["moz_build_date"] + ) + + subs = { + "geckoview-version": geckoview_version, + "job-name": index["job-name"], + "product": index["product"], + "project": config.params["project"], + "trust-domain": config.graph_config["trust-domain"], + } + routes.append(V2_GECKOVIEW_RELEASE.format(**subs)) + + return task + + +@index_builder("android-shippable") +def add_android_shippable_index_routes(config, task): + task = add_shippable_index_routes(config, task) + task = add_geckoview_index_routes(config, task) + + return task + + +@index_builder("android-shippable-with-multi-l10n") +def add_android_shippable_multi_index_routes(config, task): + task = add_shippable_multi_index_routes(config, task) + task = add_geckoview_index_routes(config, task) + + return task + + +@transforms.add +def add_index_routes(config, tasks): + for task in tasks: + index = task.get("index", {}) + + # The default behavior is to rank tasks according to their tier + extra_index = task.setdefault("extra", {}).setdefault("index", {}) + rank = index.get("rank", "by-tier") + + if rank == "by-tier": + # rank is zero for non-tier-1 tasks and based on pushid for others; + # this sorts tier-{2,3} builds below tier-1 in the index + tier = task.get("treeherder", {}).get("tier", 3) + extra_index["rank"] = 0 if tier > 1 else int(config.params["build_date"]) + elif rank == "build_date": + extra_index["rank"] = int(config.params["build_date"]) + else: + extra_index["rank"] = rank + + if not index: + yield task + continue + + index_type = index.get("type", "generic") + task = index_builders[index_type](config, task) + + del task["index"] + yield task + + +@transforms.add +def try_task_config_env(config, tasks): + """Set environment variables in the task.""" + env = config.params["try_task_config"].get("env") + if not env: + yield from tasks + return + + # Find all implementations that have an 'env' key. + implementations = { + name + for name, builder in payload_builders.items() + if "env" in builder.schema.schema + } + for task in tasks: + if task["worker"]["implementation"] in implementations: + task["worker"]["env"].update(env) + yield task + + +@transforms.add +def try_task_config_chemspill_prio(config, tasks): + """Increase the priority from lowest and very-low -> low, but leave others unchanged.""" + chemspill_prio = config.params["try_task_config"].get("chemspill-prio") + if not chemspill_prio: + yield from tasks + return + + for task in tasks: + if task["priority"] in ("lowest", "very-low"): + task["priority"] = "low" + yield task + + +@transforms.add +def try_task_config_routes(config, tasks): + """Set routes in the task.""" + routes = config.params["try_task_config"].get("routes") + for task in tasks: + if routes: + task_routes = task.setdefault("routes", []) + task_routes.extend(routes) + yield task + + +@transforms.add +def set_task_and_artifact_expiry(config, jobs): + """Set the default expiry for tasks and their artifacts. + + These values are read from ci/config.yml + """ + now = datetime.datetime.utcnow() + for job in jobs: + expires = get_expiration(config, job.get("expiration-policy", "default")) + job_expiry = job.setdefault("expires-after", expires) + job_expiry_from_now = fromNow(job_expiry) + + for artifact in job["worker"].get("artifacts", ()): + artifact_expiry = artifact.setdefault("expires-after", expires) + + # By using > instead of >=, there's a chance of mismatch + # where the artifact expires sooner than the task. + # There is no chance, however, of mismatch where artifacts + # expire _after_ the task. + # Currently this leads to some build tasks having logs + # that expire in 1 year while the task expires in 3 years. + if fromNow(artifact_expiry, now) > job_expiry_from_now: + artifact["expires-after"] = job_expiry + + yield job + + +@transforms.add +def build_task(config, tasks): + for task in tasks: + level = str(config.params["level"]) + + task_worker_type = task["worker-type"] + worker_overrides = config.params["try_task_config"].get("worker-overrides", {}) + if task_worker_type in worker_overrides: + worker_pool = worker_overrides[task_worker_type] + provisioner_id, worker_type = worker_pool.split("/", 1) + else: + provisioner_id, worker_type = get_worker_type( + config.graph_config, + config.params, + task_worker_type, + ) + task["worker-type"] = "/".join([provisioner_id, worker_type]) + project = config.params["project"] + + routes = task.get("routes", []) + scopes = [ + s.format(level=level, project=project) for s in task.get("scopes", []) + ] + + # set up extra + extra = task.get("extra", {}) + extra["parent"] = {"task-reference": ""} + task_th = task.get("treeherder") + if task_th: + extra.setdefault("treeherder-platform", task_th["platform"]) + treeherder = extra.setdefault("treeherder", {}) + + machine_platform, collection = task_th["platform"].split("/", 1) + treeherder["machine"] = {"platform": machine_platform} + treeherder["collection"] = {collection: True} + + group_names = config.graph_config["treeherder"]["group-names"] + groupSymbol, symbol = split_symbol(task_th["symbol"]) + if groupSymbol != "?": + treeherder["groupSymbol"] = groupSymbol + if groupSymbol not in group_names: + path = os.path.join(config.path, task.get("job-from", "")) + raise Exception(UNKNOWN_GROUP_NAME.format(groupSymbol, path)) + treeherder["groupName"] = group_names[groupSymbol] + treeherder["symbol"] = symbol + if len(symbol) > 25 or len(groupSymbol) > 25: + raise RuntimeError( + "Treeherder group and symbol names must not be longer than " + "25 characters: {} (see {})".format( + task_th["symbol"], + TC_TREEHERDER_SCHEMA_URL, + ) + ) + treeherder["jobKind"] = task_th["kind"] + treeherder["tier"] = task_th["tier"] + + branch_rev = get_branch_rev(config) + + routes.append( + "{}.v2.{}.{}".format( + TREEHERDER_ROUTE_ROOT, + config.params["project"], + branch_rev, + ) + ) + + if "deadline-after" not in task: + task["deadline-after"] = "1 day" + + if "priority" not in task: + task["priority"] = get_default_priority( + config.graph_config, config.params["project"] + ) + + tags = task.get("tags", {}) + attributes = task.get("attributes", {}) + + tags.update( + { + "createdForUser": config.params["owner"], + "kind": config.kind, + "label": task["label"], + "retrigger": "true" if attributes.get("retrigger", False) else "false", + } + ) + + task_def = { + "provisionerId": provisioner_id, + "workerType": worker_type, + "routes": routes, + "created": {"relative-datestamp": "0 seconds"}, + "deadline": {"relative-datestamp": task["deadline-after"]}, + "expires": {"relative-datestamp": task["expires-after"]}, + "scopes": scopes, + "metadata": { + "description": task["description"], + "name": task["label"], + "owner": config.params["owner"], + "source": config.params.file_url(config.path, pretty=True), + }, + "extra": extra, + "tags": tags, + "priority": task["priority"], + } + + if task.get("requires", None): + task_def["requires"] = task["requires"] + + if task_th: + # link back to treeherder in description + th_job_link = ( + "https://treeherder.mozilla.org/#/jobs?repo={}&revision={}&selectedTaskRun=" + ).format(config.params["project"], branch_rev) + task_def["metadata"]["description"] = { + "task-reference": "{description} ([Treeherder job]({th_job_link}))".format( + description=task_def["metadata"]["description"], + th_job_link=th_job_link, + ) + } + + # add the payload and adjust anything else as required (e.g., scopes) + payload_builders[task["worker"]["implementation"]].builder( + config, task, task_def + ) + + # Resolve run-on-projects + build_platform = attributes.get("build_platform") + resolve_keyed_by( + task, + "run-on-projects", + item_name=task["label"], + **{"build-platform": build_platform}, + ) + attributes["run_on_projects"] = task.get("run-on-projects", ["all"]) + attributes["always_target"] = task["always-target"] + # This logic is here since downstream tasks don't always match their + # upstream dependency's shipping_phase. + # A text_type task['shipping-phase'] takes precedence, then + # an existing attributes['shipping_phase'], then fall back to None. + if task.get("shipping-phase") is not None: + attributes["shipping_phase"] = task["shipping-phase"] + else: + attributes.setdefault("shipping_phase", None) + # shipping_product will always match the upstream task's + # shipping_product, so a pre-set existing attributes['shipping_product'] + # takes precedence over task['shipping-product']. However, make sure + # we don't have conflicting values. + if task.get("shipping-product") and attributes.get("shipping_product") not in ( + None, + task["shipping-product"], + ): + raise Exception( + "{} shipping_product {} doesn't match task shipping-product {}!".format( + task["label"], + attributes["shipping_product"], + task["shipping-product"], + ) + ) + attributes.setdefault("shipping_product", task["shipping-product"]) + + # Set MOZ_AUTOMATION on all jobs. + if task["worker"]["implementation"] in ( + "generic-worker", + "docker-worker", + ): + payload = task_def.get("payload") + if payload: + env = payload.setdefault("env", {}) + env["MOZ_AUTOMATION"] = "1" + + dependencies = task.get("dependencies", {}) + if_dependencies = task.get("if-dependencies", []) + if if_dependencies: + for i, dep in enumerate(if_dependencies): + if dep in dependencies: + if_dependencies[i] = dependencies[dep] + continue + + raise Exception( + "{label} specifies '{dep}' in if-dependencies, " + "but {dep} is not a dependency!".format( + label=task["label"], dep=dep + ) + ) + + yield { + "label": task["label"], + "description": task["description"], + "task": task_def, + "dependencies": dependencies, + "if-dependencies": if_dependencies, + "soft-dependencies": task.get("soft-dependencies", []), + "attributes": attributes, + "optimization": task.get("optimization", None), + } + + +@transforms.add +def chain_of_trust(config, tasks): + for task in tasks: + if task["task"].get("payload", {}).get("features", {}).get("chainOfTrust"): + image = task.get("dependencies", {}).get("docker-image") + if image: + cot = ( + task["task"].setdefault("extra", {}).setdefault("chainOfTrust", {}) + ) + cot.setdefault("inputs", {})["docker-image"] = { + "task-reference": "" + } + yield task + + +@transforms.add +def check_task_identifiers(config, tasks): + """Ensures that all tasks have well defined identifiers: + ``^[a-zA-Z0-9_-]{1,38}$`` + """ + e = re.compile("^[a-zA-Z0-9_-]{1,38}$") + for task in tasks: + for attrib in ("workerType", "provisionerId"): + if not e.match(task["task"][attrib]): + raise Exception( + "task {}.{} is not a valid identifier: {}".format( + task["label"], attrib, task["task"][attrib] + ) + ) + yield task + + +@transforms.add +def check_task_dependencies(config, tasks): + """Ensures that tasks don't have more than 100 dependencies.""" + for task in tasks: + if len(task["dependencies"]) > MAX_DEPENDENCIES: + raise Exception( + "task {}/{} has too many dependencies ({} > {})".format( + config.kind, + task["label"], + len(task["dependencies"]), + MAX_DEPENDENCIES, + ) + ) + yield task + + +def check_caches_are_volumes(task): + """Ensures that all cache paths are defined as volumes. + + Caches and volumes are the only filesystem locations whose content + isn't defined by the Docker image itself. Some caches are optional + depending on the job environment. We want paths that are potentially + caches to have as similar behavior regardless of whether a cache is + used. To help enforce this, we require that all paths used as caches + to be declared as Docker volumes. This check won't catch all offenders. + But it is better than nothing. + """ + volumes = {s for s in task["worker"]["volumes"]} + paths = {c["mount-point"] for c in task["worker"].get("caches", [])} + missing = paths - volumes + + if not missing: + return + + raise Exception( + "task %s (image %s) has caches that are not declared as " + "Docker volumes: %s " + "(have you added them as VOLUMEs in the Dockerfile?)" + % (task["label"], task["worker"]["docker-image"], ", ".join(sorted(missing))) + ) + + +def check_required_volumes(task): + """ + Ensures that all paths that are required to be volumes are defined as volumes. + + Performance of writing to files in poor in directories not marked as + volumes, in docker. Ensure that paths that are often written to are marked + as volumes. + """ + volumes = set(task["worker"]["volumes"]) + paths = set(task["worker"].get("required-volumes", [])) + missing = paths - volumes + + if not missing: + return + + raise Exception( + "task %s (image %s) has paths that should be volumes for peformance " + "that are not declared as Docker volumes: %s " + "(have you added them as VOLUMEs in the Dockerfile?)" + % (task["label"], task["worker"]["docker-image"], ", ".join(sorted(missing))) + ) + + +@transforms.add +def check_run_task_caches(config, tasks): + """Audit for caches requiring run-task. + + run-task manages caches in certain ways. If a cache managed by run-task + is used by a non run-task task, it could cause problems. So we audit for + that and make sure certain cache names are exclusive to run-task. + + IF YOU ARE TEMPTED TO MAKE EXCLUSIONS TO THIS POLICY, YOU ARE LIKELY + CONTRIBUTING TECHNICAL DEBT AND WILL HAVE TO SOLVE MANY OF THE PROBLEMS + THAT RUN-TASK ALREADY SOLVES. THINK LONG AND HARD BEFORE DOING THAT. + """ + re_reserved_caches = re.compile( + """^ + (checkouts|tooltool-cache) + """, + re.VERBOSE, + ) + + re_sparse_checkout_cache = re.compile("^checkouts-sparse") + + cache_prefix = "{trust_domain}-level-{level}-".format( + trust_domain=config.graph_config["trust-domain"], + level=config.params["level"], + ) + + suffix = _run_task_suffix() + + for task in tasks: + payload = task["task"].get("payload", {}) + command = payload.get("command") or [""] + + main_command = command[0] if isinstance(command[0], str) else "" + run_task = main_command.endswith("run-task") + + require_sparse_cache = False + have_sparse_cache = False + + if run_task: + for arg in command[1:]: + if not isinstance(arg, str): + continue + + if arg == "--": + break + + if arg.startswith("--gecko-sparse-profile"): + if "=" not in arg: + raise Exception( + "{} is specifying `--gecko-sparse-profile` to run-task " + "as two arguments. Unable to determine if the sparse " + "profile exists.".format(task["label"]) + ) + _, sparse_profile = arg.split("=", 1) + if not os.path.exists(os.path.join(GECKO, sparse_profile)): + raise Exception( + "{} is using non-existant sparse profile {}.".format( + task["label"], sparse_profile + ) + ) + require_sparse_cache = True + break + + for cache in payload.get("cache", {}): + if not cache.startswith(cache_prefix): + raise Exception( + "{} is using a cache ({}) which is not appropriate " + "for its trust-domain and level. It should start with {}.".format( + task["label"], cache, cache_prefix + ) + ) + + cache = cache[len(cache_prefix) :] + + if re_sparse_checkout_cache.match(cache): + have_sparse_cache = True + + if not re_reserved_caches.match(cache): + continue + + if not run_task: + raise Exception( + "%s is using a cache (%s) reserved for run-task " + "change the task to use run-task or use a different " + "cache name" % (task["label"], cache) + ) + + if not cache.endswith(suffix): + raise Exception( + "%s is using a cache (%s) reserved for run-task " + "but the cache name is not dependent on the contents " + "of run-task; change the cache name to conform to the " + "naming requirements" % (task["label"], cache) + ) + + if require_sparse_cache and not have_sparse_cache: + raise Exception( + "%s is using a sparse checkout but not using " + "a sparse checkout cache; change the checkout " + "cache name so it is sparse aware" % task["label"] + ) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/test/__init__.py b/taskcluster/gecko_taskgraph/transforms/test/__init__.py new file mode 100644 index 0000000000..ac17554baa --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/__init__.py @@ -0,0 +1,538 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +These transforms construct a task description to run the given test, based on a +test description. The implementation here is shared among all test kinds, but +contains specific support for how we run tests in Gecko (via mozharness, +invoked in particular ways). + +This is a good place to translate a test-description option such as +`single-core: true` to the implementation of that option in a task description +(worker options, mozharness commandline, environment variables, etc.) + +The test description should be fully formed by the time it reaches these +transforms, and these transforms should not embody any specific knowledge about +what should run where. this is the wrong place for special-casing platforms, +for example - use `all_tests.py` instead. +""" + + +import logging +from importlib import import_module + +from mozbuild.schedules import INCLUSIVE_COMPONENTS +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from voluptuous import Any, Exclusive, Optional, Required + +from gecko_taskgraph.optimize.schema import OptimizationSchema +from gecko_taskgraph.transforms.test.other import get_mobile_project +from gecko_taskgraph.util.chunking import manifest_loaders + +logger = logging.getLogger(__name__) +transforms = TransformSequence() + + +# Schema for a test description +# +# *****WARNING***** +# +# This is a great place for baffling cruft to accumulate, and that makes +# everyone move more slowly. Be considerate of your fellow hackers! +# See the warnings in taskcluster/docs/how-tos.rst +# +# *****WARNING***** +test_description_schema = Schema( + { + # description of the suite, for the task metadata + Required("description"): str, + # test suite category and name + Optional("suite"): Any( + optionally_keyed_by("variant", str), + { + Optional("category"): str, + Optional("name"): optionally_keyed_by("variant", str), + }, + ), + # base work directory used to set up the task. + Optional("workdir"): optionally_keyed_by("test-platform", Any(str, "default")), + # the name by which this test suite is addressed in try syntax; defaults to + # the test-name. This will translate to the `unittest_try_name` or + # `talos_try_name` attribute. + Optional("try-name"): str, + # additional tags to mark up this type of test + Optional("tags"): {str: object}, + # the symbol, or group(symbol), under which this task should appear in + # treeherder. + Required("treeherder-symbol"): str, + # the value to place in task.extra.treeherder.machine.platform; ideally + # this is the same as build-platform, and that is the default, but in + # practice it's not always a match. + Optional("treeherder-machine-platform"): str, + # attributes to appear in the resulting task (later transforms will add the + # common attributes) + Optional("attributes"): {str: object}, + # relative path (from config.path) to the file task was defined in + Optional("job-from"): str, + # The `run_on_projects` attribute, defaulting to "all". This dictates the + # projects on which this task should be included in the target task set. + # See the attributes documentation for details. + # + # Note that the special case 'built-projects', the default, uses the parent + # build task's run-on-projects, meaning that tests run only on platforms + # that are built. + Optional("run-on-projects"): optionally_keyed_by( + "app", + "subtest", + "test-platform", + "test-name", + "variant", + Any([str], "built-projects"), + ), + # When set only run on projects where the build would already be running. + # This ensures tasks where this is True won't be the cause of the build + # running on a project it otherwise wouldn't have. + Optional("built-projects-only"): bool, + # the sheriffing tier for this task (default: set based on test platform) + Optional("tier"): optionally_keyed_by( + "test-platform", "variant", "app", "subtest", Any(int, "default") + ), + # number of chunks to create for this task. This can be keyed by test + # platform by passing a dictionary in the `by-test-platform` key. If the + # test platform is not found, the key 'default' will be tried. + Required("chunks"): optionally_keyed_by( + "test-platform", "variant", Any(int, "dynamic") + ), + # Custom 'test_manifest_loader' to use, overriding the one configured in the + # parameters. When 'null', no test chunking will be performed. Can also + # be used to disable "manifest scheduling". + Optional("test-manifest-loader"): Any(None, *list(manifest_loaders)), + # the time (with unit) after which this task is deleted; default depends on + # the branch (see below) + Optional("expires-after"): str, + # The different configurations that should be run against this task, defined + # in the TEST_VARIANTS object in the variant.py transforms. + Optional("variants"): [str], + # Whether to run this task without any variants applied. + Required("run-without-variant"): optionally_keyed_by("test-platform", bool), + # The EC2 instance size to run these tests on. + Required("instance-size"): optionally_keyed_by( + "test-platform", Any("default", "large", "xlarge") + ), + # type of virtualization or hardware required by test. + Required("virtualization"): optionally_keyed_by( + "test-platform", Any("virtual", "virtual-with-gpu", "hardware") + ), + # Whether the task requires loopback audio or video (whatever that may mean + # on the platform) + Required("loopback-audio"): bool, + Required("loopback-video"): bool, + # Whether the test can run using a software GL implementation on Linux + # using the GL compositor. May not be used with "legacy" sized instances + # due to poor LLVMPipe performance (bug 1296086). Defaults to true for + # unit tests on linux platforms and false otherwise + Optional("allow-software-gl-layers"): bool, + # For tasks that will run in docker-worker, this is the + # name of the docker image or in-tree docker image to run the task in. If + # in-tree, then a dependency will be created automatically. This is + # generally `desktop-test`, or an image that acts an awful lot like it. + Required("docker-image"): optionally_keyed_by( + "test-platform", + Any( + # a raw Docker image path (repo/image:tag) + str, + # an in-tree generated docker image (from `taskcluster/docker/`) + {"in-tree": str}, + # an indexed docker image + {"indexed": str}, + ), + ), + # seconds of runtime after which the task will be killed. Like 'chunks', + # this can be keyed by test platform, but also variant. + Required("max-run-time"): optionally_keyed_by( + "test-platform", "subtest", "variant", "app", int + ), + # the exit status code that indicates the task should be retried + Optional("retry-exit-status"): [int], + # Whether to perform a gecko checkout. + Required("checkout"): bool, + # Wheter to perform a machine reboot after test is done + Optional("reboot"): Any(False, "always", "on-exception", "on-failure"), + # What to run + Required("mozharness"): { + # the mozharness script used to run this task + Required("script"): optionally_keyed_by("test-platform", str), + # the config files required for the task + Required("config"): optionally_keyed_by("test-platform", [str]), + # mochitest flavor for mochitest runs + Optional("mochitest-flavor"): str, + # any additional actions to pass to the mozharness command + Optional("actions"): [str], + # additional command-line options for mozharness, beyond those + # automatically added + Required("extra-options"): optionally_keyed_by("test-platform", [str]), + # the artifact name (including path) to test on the build task; this is + # generally set in a per-kind transformation + Optional("build-artifact-name"): str, + Optional("installer-url"): str, + # If not false, tooltool downloads will be enabled via relengAPIProxy + # for either just public files, or all files. Not supported on Windows + Required("tooltool-downloads"): Any( + False, + "public", + "internal", + ), + # Add --blob-upload-branch= mozharness parameter + Optional("include-blob-upload-branch"): bool, + # The setting for --download-symbols (if omitted, the option will not + # be passed to mozharness) + Optional("download-symbols"): Any(True, "ondemand"), + # If set, then MOZ_NODE_PATH=/usr/local/bin/node is included in the + # environment. This is more than just a helpful path setting -- it + # causes xpcshell tests to start additional servers, and runs + # additional tests. + Required("set-moz-node-path"): bool, + # If true, include chunking information in the command even if the number + # of chunks is 1 + Required("chunked"): optionally_keyed_by("test-platform", bool), + Required("requires-signed-builds"): optionally_keyed_by( + "test-platform", "variant", bool + ), + }, + # The set of test manifests to run. + Optional("test-manifests"): Any( + [str], + {"active": [str], "skipped": [str]}, + ), + # The current chunk (if chunking is enabled). + Optional("this-chunk"): int, + # os user groups for test task workers; required scopes, will be + # added automatically + Optional("os-groups"): optionally_keyed_by("test-platform", [str]), + Optional("run-as-administrator"): optionally_keyed_by("test-platform", bool), + # -- values supplied by the task-generation infrastructure + # the platform of the build this task is testing + Required("build-platform"): str, + # the label of the build task generating the materials to test + Required("build-label"): str, + # the label of the signing task generating the materials to test. + # Signed builds are used in xpcshell tests on Windows, for instance. + Optional("build-signing-label"): optionally_keyed_by("variant", str), + # the build's attributes + Required("build-attributes"): {str: object}, + # the platform on which the tests will run + Required("test-platform"): str, + # limit the test-platforms (as defined in test-platforms.yml) + # that the test will run on + Optional("limit-platforms"): optionally_keyed_by("app", "subtest", [str]), + # the name of the test (the key in tests.yml) + Required("test-name"): str, + # the product name, defaults to firefox + Optional("product"): str, + # conditional files to determine when these tests should be run + Exclusive("when", "optimization"): { + Optional("files-changed"): [str], + }, + # Optimization to perform on this task during the optimization phase. + # Optimizations are defined in taskcluster/gecko_taskgraph/optimize.py. + Exclusive("optimization", "optimization"): OptimizationSchema, + # The SCHEDULES component for this task; this defaults to the suite + # (not including the flavor) but can be overridden here. + Exclusive("schedules-component", "optimization"): Any( + str, + [str], + ), + Optional("worker-type"): optionally_keyed_by( + "test-platform", + Any(str, None), + ), + Optional( + "require-signed-extensions", + description="Whether the build being tested requires extensions be signed.", + ): optionally_keyed_by("release-type", "test-platform", bool), + # The target name, specifying the build artifact to be tested. + # If None or not specified, a transform sets the target based on OS: + # target.dmg (Mac), target.apk (Android), target.tar.bz2 (Linux), + # or target.zip (Windows). + Optional("target"): optionally_keyed_by( + "app", + "test-platform", + "variant", + Any( + str, + None, + {Required("index"): str, Required("name"): str}, + ), + ), + # A list of artifacts to install from 'fetch' tasks. Validation deferred + # to 'job' transforms. + Optional("fetches"): object, + # Raptor / browsertime specific keys, defer validation to 'raptor.py' + # transform. + Optional("raptor"): object, + # Raptor / browsertime specific keys that need to be here since 'raptor' schema + # is evluated *before* test_description_schema + Optional("app"): str, + Optional("subtest"): str, + # Define if a given task supports artifact builds or not, see bug 1695325. + Optional("supports-artifact-builds"): bool, + } +) + + +@transforms.add +def handle_keyed_by_mozharness(config, tasks): + """Resolve a mozharness field if it is keyed by something""" + fields = [ + "mozharness", + "mozharness.chunked", + "mozharness.config", + "mozharness.extra-options", + "mozharness.script", + ] + for task in tasks: + for field in fields: + resolve_keyed_by( + task, + field, + item_name=task["test-name"], + enforce_single_match=False, + ) + yield task + + +@transforms.add +def set_defaults(config, tasks): + for task in tasks: + build_platform = task["build-platform"] + if build_platform.startswith("android"): + # all Android test tasks download internal objects from tooltool + task["mozharness"]["tooltool-downloads"] = "internal" + task["mozharness"]["actions"] = ["get-secrets"] + + # loopback-video is always true for Android, but false for other + # platform phyla + task["loopback-video"] = True + task["mozharness"]["set-moz-node-path"] = True + + # software-gl-layers is only meaningful on linux unittests, where it defaults to True + if task["test-platform"].startswith("linux") and task["suite"] not in [ + "talos", + "raptor", + ]: + task.setdefault("allow-software-gl-layers", True) + else: + task["allow-software-gl-layers"] = False + + task.setdefault("try-name", task["test-name"]) + task.setdefault("os-groups", []) + task.setdefault("run-as-administrator", False) + task.setdefault("chunks", 1) + task.setdefault("run-on-projects", "built-projects") + task.setdefault("built-projects-only", False) + task.setdefault("instance-size", "default") + task.setdefault("max-run-time", 3600) + task.setdefault("reboot", False) + task.setdefault("virtualization", "virtual") + task.setdefault("loopback-audio", False) + task.setdefault("loopback-video", False) + task.setdefault("limit-platforms", []) + task.setdefault("docker-image", {"in-tree": "ubuntu1804-test"}) + task.setdefault("checkout", False) + task.setdefault("require-signed-extensions", False) + task.setdefault("run-without-variant", True) + task.setdefault("variants", []) + task.setdefault("supports-artifact-builds", True) + + task["mozharness"].setdefault("extra-options", []) + task["mozharness"].setdefault("requires-signed-builds", False) + task["mozharness"].setdefault("tooltool-downloads", "public") + task["mozharness"].setdefault("set-moz-node-path", False) + task["mozharness"].setdefault("chunked", False) + yield task + + +transforms.add_validate(test_description_schema) + + +@transforms.add +def run_variant_transforms(config, tasks): + """Variant transforms are run as soon as possible to allow other transforms + to key by variant.""" + for task in tasks: + xforms = TransformSequence() + mod = import_module("gecko_taskgraph.transforms.test.variant") + xforms.add(mod.transforms) + + yield from xforms(config, [task]) + + +@transforms.add +def resolve_keys(config, tasks): + keys = ("require-signed-extensions", "run-without-variant", "suite", "suite.name") + for task in tasks: + for key in keys: + resolve_keyed_by( + task, + key, + item_name=task["test-name"], + enforce_single_match=False, + **{ + "release-type": config.params["release_type"], + "variant": task["attributes"].get("unittest_variant"), + }, + ) + yield task + + +@transforms.add +def run_remaining_transforms(config, tasks): + """Runs other transform files next to this module.""" + # List of modules to load transforms from in order. + transform_modules = ( + ("raptor", lambda t: t["suite"] == "raptor"), + ("other", None), + ("worker", None), + # These transforms should always run last as there is never any + # difference in configuration from one chunk to another (other than + # chunk number). + ("chunk", None), + ) + + for task in tasks: + xforms = TransformSequence() + for name, filterfn in transform_modules: + if filterfn and not filterfn(task): + continue + + mod = import_module(f"gecko_taskgraph.transforms.test.{name}") + xforms.add(mod.transforms) + + yield from xforms(config, [task]) + + +@transforms.add +def make_job_description(config, tasks): + """Convert *test* descriptions to *job* descriptions (input to + gecko_taskgraph.transforms.job)""" + + for task in tasks: + attributes = task.get("attributes", {}) + + mobile = get_mobile_project(task) + if mobile and (mobile not in task["test-name"]): + label = "{}-{}-{}-{}".format( + config.kind, task["test-platform"], mobile, task["test-name"] + ) + else: + label = "{}-{}-{}".format( + config.kind, task["test-platform"], task["test-name"] + ) + + try_name = task["try-name"] + if attributes.get("unittest_variant"): + suffix = task.pop("variant-suffix") + label += suffix + try_name += suffix + + if task["chunks"] > 1: + label += "-{}".format(task["this-chunk"]) + + build_label = task["build-label"] + + if task["suite"] == "talos": + attr_try_name = "talos_try_name" + elif task["suite"] == "raptor": + attr_try_name = "raptor_try_name" + else: + attr_try_name = "unittest_try_name" + + attr_build_platform, attr_build_type = task["build-platform"].split("/", 1) + attributes.update( + { + "build_platform": attr_build_platform, + "build_type": attr_build_type, + "test_platform": task["test-platform"], + "test_chunk": str(task["this-chunk"]), + "supports-artifact-builds": task["supports-artifact-builds"], + attr_try_name: try_name, + } + ) + + if "test-manifests" in task: + attributes["test_manifests"] = task["test-manifests"] + + jobdesc = {} + name = "{}-{}".format(task["test-platform"], task["test-name"]) + jobdesc["name"] = name + jobdesc["label"] = label + jobdesc["description"] = task["description"] + jobdesc["attributes"] = attributes + jobdesc["dependencies"] = {"build": build_label} + jobdesc["job-from"] = task["job-from"] + + if task.get("fetches"): + jobdesc["fetches"] = task["fetches"] + + if task["mozharness"]["requires-signed-builds"] is True: + jobdesc["dependencies"]["build-signing"] = task["build-signing-label"] + + if "expires-after" in task: + jobdesc["expires-after"] = task["expires-after"] + + jobdesc["routes"] = [] + jobdesc["run-on-projects"] = sorted(task["run-on-projects"]) + jobdesc["scopes"] = [] + jobdesc["tags"] = task.get("tags", {}) + jobdesc["extra"] = { + "chunks": { + "current": task["this-chunk"], + "total": task["chunks"], + }, + "suite": attributes["unittest_suite"], + "test-setting": task.pop("test-setting"), + } + jobdesc["treeherder"] = { + "symbol": task["treeherder-symbol"], + "kind": "test", + "tier": task["tier"], + "platform": task.get("treeherder-machine-platform", task["build-platform"]), + } + + schedules = task.get("schedules-component", []) + if task.get("when"): + # This may still be used by comm-central. + jobdesc["when"] = task["when"] + elif "optimization" in task: + jobdesc["optimization"] = task["optimization"] + elif set(schedules) & set(INCLUSIVE_COMPONENTS): + jobdesc["optimization"] = {"test-inclusive": schedules} + else: + jobdesc["optimization"] = {"test": schedules} + + run = jobdesc["run"] = {} + run["using"] = "mozharness-test" + run["test"] = task + + if "workdir" in task: + run["workdir"] = task.pop("workdir") + + jobdesc["worker-type"] = task.pop("worker-type") + + if "worker" in task: + jobdesc["worker"] = task.pop("worker") + + if task.get("fetches"): + jobdesc["fetches"] = task.pop("fetches") + + yield jobdesc + + +def normpath(path): + return path.replace("/", "\\") + + +def get_firefox_version(): + with open("browser/config/version.txt") as f: + return f.readline().strip() diff --git a/taskcluster/gecko_taskgraph/transforms/test/chunk.py b/taskcluster/gecko_taskgraph/transforms/test/chunk.py new file mode 100644 index 0000000000..f6442e3755 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/chunk.py @@ -0,0 +1,262 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import json + +import taskgraph +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.attributes import keymatch +from taskgraph.util.treeherder import join_symbol, split_symbol + +from gecko_taskgraph.util.attributes import is_try +from gecko_taskgraph.util.chunking import ( + DefaultLoader, + chunk_manifests, + get_manifest_loader, + get_runtimes, + guess_mozinfo_from_task, +) +from gecko_taskgraph.util.copy_task import copy_task +from gecko_taskgraph.util.perfile import perfile_number_of_chunks + +DYNAMIC_CHUNK_DURATION = 20 * 60 # seconds +"""The approximate time each test chunk should take to run.""" + + +DYNAMIC_CHUNK_MULTIPLIER = { + # Desktop xpcshell tests run in parallel. Reduce the total runtime to + # compensate. + "^(?!android).*-xpcshell.*": 0.2, +} +"""A multiplication factor to tweak the total duration per platform / suite.""" + + +transforms = TransformSequence() + + +@transforms.add +def set_test_verify_chunks(config, tasks): + """Set the number of chunks we use for test-verify.""" + for task in tasks: + if any(task["suite"].startswith(s) for s in ("test-verify", "test-coverage")): + env = config.params.get("try_task_config", {}) or {} + env = env.get("templates", {}).get("env", {}) + task["chunks"] = perfile_number_of_chunks( + is_try(config.params), + env.get("MOZHARNESS_TEST_PATHS", ""), + config.params.get("head_repository", ""), + config.params.get("head_rev", ""), + task["test-name"], + ) + + # limit the number of chunks we run for test-verify mode because + # test-verify is comprehensive and takes a lot of time, if we have + # >30 tests changed, this is probably an import of external tests, + # or a patch renaming/moving files in bulk + maximum_number_verify_chunks = 3 + if task["chunks"] > maximum_number_verify_chunks: + task["chunks"] = maximum_number_verify_chunks + + yield task + + +@transforms.add +def set_test_manifests(config, tasks): + """Determine the set of test manifests that should run in this task.""" + + for task in tasks: + # When a task explicitly requests no 'test_manifest_loader', test + # resolving will happen at test runtime rather than in the taskgraph. + if "test-manifest-loader" in task and task["test-manifest-loader"] is None: + yield task + continue + + # Set 'tests_grouped' to "1", so we can differentiate between suites that are + # chunked at the test runtime and those that are chunked in the taskgraph. + task.setdefault("tags", {})["tests_grouped"] = "1" + + if taskgraph.fast: + # We want to avoid evaluating manifests when taskgraph.fast is set. But + # manifests are required for dynamic chunking. Just set the number of + # chunks to one in this case. + if task["chunks"] == "dynamic": + task["chunks"] = 1 + yield task + continue + + manifests = task.get("test-manifests") + if manifests: + if isinstance(manifests, list): + task["test-manifests"] = {"active": manifests, "skipped": []} + yield task + continue + + mozinfo = guess_mozinfo_from_task( + task, config.params.get("head_repository", "") + ) + + loader_name = task.pop( + "test-manifest-loader", config.params["test_manifest_loader"] + ) + loader = get_manifest_loader(loader_name, config.params) + + task["test-manifests"] = loader.get_manifests( + task["suite"], + frozenset(mozinfo.items()), + ) + + # When scheduling with test paths, we often find manifests scheduled but all tests + # are skipped on a given config. This will remove the task from the task set if + # no manifests have active tests for the given task/config + mh_test_paths = {} + if "MOZHARNESS_TEST_PATHS" in config.params.get("try_task_config", {}).get( + "env", {} + ): + mh_test_paths = json.loads( + config.params["try_task_config"]["env"]["MOZHARNESS_TEST_PATHS"] + ) + + if task["attributes"]["unittest_suite"] in mh_test_paths.keys(): + input_paths = mh_test_paths[task["attributes"]["unittest_suite"]] + remaining_manifests = [] + + # if we have web-platform tests incoming, just yield task + for m in input_paths: + if m.startswith("testing/web-platform/tests/"): + if not isinstance(loader, DefaultLoader): + task["chunks"] = "dynamic" + yield task + break + + # input paths can exist in other directories (i.e. [../../dir/test.js]) + # we need to look for all [active] manifests that include tests in the path + for m in input_paths: + if [tm for tm in task["test-manifests"]["active"] if tm.startswith(m)]: + remaining_manifests.append(m) + + # look in the 'other' manifests + for m in input_paths: + man = m + for tm in task["test-manifests"]["other_dirs"]: + matched_dirs = [ + dp + for dp in task["test-manifests"]["other_dirs"].get(tm) + if dp.startswith(man) + ] + if matched_dirs: + if tm not in task["test-manifests"]["active"]: + continue + if m not in remaining_manifests: + remaining_manifests.append(m) + + if remaining_manifests == []: + continue + + # The default loader loads all manifests. If we use a non-default + # loader, we'll only run some subset of manifests and the hardcoded + # chunk numbers will no longer be valid. Dynamic chunking should yield + # better results. + if not isinstance(loader, DefaultLoader): + task["chunks"] = "dynamic" + + yield task + + +@transforms.add +def resolve_dynamic_chunks(config, tasks): + """Determine how many chunks are needed to handle the given set of manifests.""" + + for task in tasks: + if task["chunks"] != "dynamic": + yield task + continue + + if not task.get("test-manifests"): + raise Exception( + "{} must define 'test-manifests' to use dynamic chunking!".format( + task["test-name"] + ) + ) + + runtimes = { + m: r + for m, r in get_runtimes(task["test-platform"], task["suite"]).items() + if m in task["test-manifests"]["active"] + } + + # Truncate runtimes that are above the desired chunk duration. They + # will be assigned to a chunk on their own and the excess duration + # shouldn't cause additional chunks to be needed. + times = [min(DYNAMIC_CHUNK_DURATION, r) for r in runtimes.values()] + avg = round(sum(times) / len(times), 2) if times else 0 + total = sum(times) + + # If there are manifests missing from the runtimes data, fill them in + # with the average of all present manifests. + missing = [m for m in task["test-manifests"]["active"] if m not in runtimes] + total += avg * len(missing) + + # Apply any chunk multipliers if found. + key = "{}-{}".format(task["test-platform"], task["test-name"]) + matches = keymatch(DYNAMIC_CHUNK_MULTIPLIER, key) + if len(matches) > 1: + raise Exception( + "Multiple matching values for {} found while " + "determining dynamic chunk multiplier!".format(key) + ) + elif matches: + total = total * matches[0] + + chunks = int(round(total / DYNAMIC_CHUNK_DURATION)) + + # Make sure we never exceed the number of manifests, nor have a chunk + # length of 0. + task["chunks"] = min(chunks, len(task["test-manifests"]["active"])) or 1 + yield task + + +@transforms.add +def split_chunks(config, tasks): + """Based on the 'chunks' key, split tests up into chunks by duplicating + them and assigning 'this-chunk' appropriately and updating the treeherder + symbol. + """ + + for task in tasks: + # If test-manifests are set, chunk them ahead of time to avoid running + # the algorithm more than once. + chunked_manifests = None + if "test-manifests" in task: + manifests = task["test-manifests"] + chunked_manifests = chunk_manifests( + task["suite"], + task["test-platform"], + task["chunks"], + manifests["active"], + ) + + # Add all skipped manifests to the first chunk of backstop pushes + # so they still show up in the logs. They won't impact runtime much + # and this way tools like ActiveData are still aware that they + # exist. + if config.params["backstop"] and manifests["active"]: + chunked_manifests[0].extend(manifests["skipped"]) + + for i in range(task["chunks"]): + this_chunk = i + 1 + + # copy the test and update with the chunk number + chunked = copy_task(task) + chunked["this-chunk"] = this_chunk + + if chunked_manifests is not None: + chunked["test-manifests"] = sorted(chunked_manifests[i]) + + group, symbol = split_symbol(chunked["treeherder-symbol"]) + if task["chunks"] > 1 or not symbol: + # add the chunk number to the TH symbol + symbol += str(this_chunk) + chunked["treeherder-symbol"] = join_symbol(group, symbol) + + yield chunked diff --git a/taskcluster/gecko_taskgraph/transforms/test/other.py b/taskcluster/gecko_taskgraph/transforms/test/other.py new file mode 100644 index 0000000000..1c08d290e4 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/other.py @@ -0,0 +1,1081 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import hashlib +import json +import re + +from mozbuild.schedules import INCLUSIVE_COMPONENTS +from mozbuild.util import ReadOnlyDict +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.attributes import keymatch +from taskgraph.util.keyed_by import evaluate_keyed_by +from taskgraph.util.schema import Schema, resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_path, get_index_url +from voluptuous import Any, Optional, Required + +from gecko_taskgraph.transforms.test.variant import TEST_VARIANTS +from gecko_taskgraph.util.platforms import platform_family + +transforms = TransformSequence() + + +@transforms.add +def limit_platforms(config, tasks): + for task in tasks: + if not task["limit-platforms"]: + yield task + continue + + limited_platforms = {key: key for key in task["limit-platforms"]} + if keymatch(limited_platforms, task["test-platform"]): + yield task + + +@transforms.add +def handle_suite_category(config, tasks): + for task in tasks: + task.setdefault("suite", {}) + + if isinstance(task["suite"], str): + task["suite"] = {"name": task["suite"]} + + suite = task["suite"].setdefault("name", task["test-name"]) + category = task["suite"].setdefault("category", suite) + + task.setdefault("attributes", {}) + task["attributes"]["unittest_suite"] = suite + task["attributes"]["unittest_category"] = category + + script = task["mozharness"]["script"] + category_arg = None + if suite.startswith("test-verify") or suite.startswith("test-coverage"): + pass + elif script in ("android_emulator_unittest.py", "android_hardware_unittest.py"): + category_arg = "--test-suite" + elif script == "desktop_unittest.py": + category_arg = f"--{category}-suite" + + if category_arg: + task["mozharness"].setdefault("extra-options", []) + extra = task["mozharness"]["extra-options"] + if not any(arg.startswith(category_arg) for arg in extra): + extra.append(f"{category_arg}={suite}") + + # From here on out we only use the suite name. + task["suite"] = suite + yield task + + +@transforms.add +def setup_talos(config, tasks): + """Add options that are specific to talos jobs (identified by suite=talos)""" + for task in tasks: + if task["suite"] != "talos": + yield task + continue + + extra_options = task.setdefault("mozharness", {}).setdefault( + "extra-options", [] + ) + extra_options.append("--use-talos-json") + + # win7 needs to test skip + if task["build-platform"].startswith("win32"): + extra_options.append("--add-option") + extra_options.append("--setpref,gfx.direct2d.disabled=true") + + if config.params.get("project", None): + extra_options.append("--project=%s" % config.params["project"]) + + yield task + + +@transforms.add +def setup_browsertime_flag(config, tasks): + """Optionally add `--browsertime` flag to Raptor pageload tests.""" + + browsertime_flag = config.params["try_task_config"].get("browsertime", False) + + for task in tasks: + if not browsertime_flag or task["suite"] != "raptor": + yield task + continue + + if task["treeherder-symbol"].startswith("Rap"): + # The Rap group is subdivided as Rap{-fenix,-refbrow(...), + # so `taskgraph.util.treeherder.replace_group` isn't appropriate. + task["treeherder-symbol"] = task["treeherder-symbol"].replace( + "Rap", "Btime", 1 + ) + + extra_options = task.setdefault("mozharness", {}).setdefault( + "extra-options", [] + ) + extra_options.append("--browsertime") + + yield task + + +@transforms.add +def handle_artifact_prefix(config, tasks): + """Handle translating `artifact_prefix` appropriately""" + for task in tasks: + if task["build-attributes"].get("artifact_prefix"): + task.setdefault("attributes", {}).setdefault( + "artifact_prefix", task["build-attributes"]["artifact_prefix"] + ) + yield task + + +@transforms.add +def set_treeherder_machine_platform(config, tasks): + """Set the appropriate task.extra.treeherder.machine.platform""" + translation = { + # Linux64 build platform for asan is specified differently to + # treeherder. + "macosx1100-64/opt": "osx-1100/opt", + "macosx1100-64-shippable/opt": "osx-1100-shippable/opt", + "win64-asan/opt": "windows10-64/asan", + "win64-aarch64/opt": "windows10-aarch64/opt", + } + for task in tasks: + # For most desktop platforms, the above table is not used for "regular" + # builds, so we'll always pick the test platform here. + # On macOS though, the regular builds are in the table. This causes a + # conflict in `verify_task_graph_symbol` once you add a new test + # platform based on regular macOS builds, such as for QR. + # Since it's unclear if the regular macOS builds can be removed from + # the table, workaround the issue for QR. + if "android" in task["test-platform"] and "pgo/opt" in task["test-platform"]: + platform_new = task["test-platform"].replace("-pgo/opt", "/pgo") + task["treeherder-machine-platform"] = platform_new + elif "android-em-7.0-x86_64-qr" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + elif "android-em-7.0-x86_64-shippable-qr" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + elif "android-em-7.0-x86_64-lite-qr" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + elif "android-em-7.0-x86_64-shippable-lite-qr" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + elif "-qr" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"] + elif "android-hw" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"] + elif "android-em-7.0-x86_64" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + elif "android-em-7.0-x86" in task["test-platform"]: + task["treeherder-machine-platform"] = task["test-platform"].replace( + ".", "-" + ) + # Bug 1602863 - must separately define linux64/asan and linux1804-64/asan + # otherwise causes an exception during taskgraph generation about + # duplicate treeherder platform/symbol. + elif "linux64-asan/opt" in task["test-platform"]: + task["treeherder-machine-platform"] = "linux64/asan" + elif "linux1804-asan/opt" in task["test-platform"]: + task["treeherder-machine-platform"] = "linux1804-64/asan" + else: + task["treeherder-machine-platform"] = translation.get( + task["build-platform"], task["test-platform"] + ) + yield task + + +@transforms.add +def set_download_symbols(config, tasks): + """In general, we download symbols immediately for debug builds, but only + on demand for everything else. ASAN builds shouldn't download + symbols since they don't product symbol zips see bug 1283879""" + for task in tasks: + if task["test-platform"].split("/")[-1] == "debug": + task["mozharness"]["download-symbols"] = True + elif "asan" in task["build-platform"] or "tsan" in task["build-platform"]: + if "download-symbols" in task["mozharness"]: + del task["mozharness"]["download-symbols"] + else: + task["mozharness"]["download-symbols"] = "ondemand" + yield task + + +@transforms.add +def handle_keyed_by(config, tasks): + """Resolve fields that can be keyed by platform, etc.""" + fields = [ + "instance-size", + "docker-image", + "max-run-time", + "chunks", + "suite", + "run-on-projects", + "os-groups", + "run-as-administrator", + "workdir", + "worker-type", + "virtualization", + "fetches.fetch", + "fetches.toolchain", + "target", + "webrender-run-on-projects", + "mozharness.requires-signed-builds", + "build-signing-label", + ] + for task in tasks: + for field in fields: + resolve_keyed_by( + task, + field, + item_name=task["test-name"], + enforce_single_match=False, + project=config.params["project"], + variant=task["attributes"].get("unittest_variant"), + ) + yield task + + +@transforms.add +def set_target(config, tasks): + for task in tasks: + build_platform = task["build-platform"] + target = None + if "target" in task: + target = task["target"] + if not target: + if build_platform.startswith("macosx"): + target = "target.dmg" + elif build_platform.startswith("android"): + target = "target.apk" + elif build_platform.startswith("win"): + target = "target.zip" + else: + target = "target.tar.bz2" + + if isinstance(target, dict): + # TODO Remove hardcoded mobile artifact prefix + index_url = get_index_url(target["index"]) + installer_url = "{}/artifacts/public/{}".format(index_url, target["name"]) + task["mozharness"]["installer-url"] = installer_url + else: + task["mozharness"]["build-artifact-name"] = get_artifact_path(task, target) + + yield task + + +@transforms.add +def setup_browsertime(config, tasks): + """Configure browsertime dependencies for Raptor pageload tests that have + `--browsertime` extra option.""" + + for task in tasks: + # We need to make non-trivial changes to various fetches, and our + # `by-test-platform` may not be "compatible" with existing + # `by-test-platform` filters. Therefore we do everything after + # `handle_keyed_by` so that existing fields have been resolved down to + # simple lists. But we use the `by-test-platform` machinery to express + # filters so that when the time comes to move browsertime into YAML + # files, the transition is straight-forward. + extra_options = task.get("mozharness", {}).get("extra-options", []) + + if task["suite"] != "raptor" or "--webext" in extra_options: + yield task + continue + + ts = { + "by-test-platform": { + "android.*": ["browsertime", "linux64-geckodriver", "linux64-node-16"], + "linux.*": ["browsertime", "linux64-geckodriver", "linux64-node-16"], + "macosx.*": ["browsertime", "macosx64-geckodriver", "macosx64-node-16"], + "windows.*aarch64.*": [ + "browsertime", + "win32-geckodriver", + "win32-node-16", + ], + "windows.*-32.*": ["browsertime", "win32-geckodriver", "win32-node-16"], + "windows.*-64.*": ["browsertime", "win64-geckodriver", "win64-node-16"], + }, + } + + task.setdefault("fetches", {}).setdefault("toolchain", []).extend( + evaluate_keyed_by(ts, "fetches.toolchain", task) + ) + + fs = { + "by-test-platform": { + "android.*": ["linux64-ffmpeg-4.4.1"], + "linux.*": ["linux64-ffmpeg-4.4.1"], + "macosx.*": ["mac64-ffmpeg-4.4.1"], + "windows.*aarch64.*": ["win64-ffmpeg-4.4.1"], + "windows.*-32.*": ["win64-ffmpeg-4.4.1"], + "windows.*-64.*": ["win64-ffmpeg-4.4.1"], + }, + } + + cd_fetches = { + "android.*": [ + "linux64-chromedriver-109", + "linux64-chromedriver-110", + "linux64-chromedriver-111", + "linux64-chromedriver-112", + "linux64-chromedriver-113", + "linux64-chromedriver-114", + ], + "linux.*": [ + "linux64-chromedriver-112", + "linux64-chromedriver-113", + "linux64-chromedriver-114", + ], + "macosx.*": [ + "mac64-chromedriver-109", + "mac64-chromedriver-110", + "mac64-chromedriver-111", + "mac64-chromedriver-112", + "mac64-chromedriver-113", + "mac64-chromedriver-114", + ], + "windows.*aarch64.*": [ + "win32-chromedriver-112", + "win32-chromedriver-113", + "win32-chromedriver-114", + ], + "windows.*-32.*": [ + "win32-chromedriver-112", + "win32-chromedriver-113", + "win32-chromedriver-114", + ], + "windows.*-64.*": [ + "win32-chromedriver-112", + "win32-chromedriver-113", + "win32-chromedriver-114", + ], + } + + chromium_fetches = { + "linux.*": ["linux64-chromium"], + "macosx.*": ["mac-chromium"], + "windows.*aarch64.*": ["win32-chromium"], + "windows.*-32.*": ["win32-chromium"], + "windows.*-64.*": ["win64-chromium"], + } + + cd_extracted_name = { + "windows": "{}chromedriver.exe", + "mac": "{}chromedriver", + "default": "{}chromedriver", + } + + if "--app=chrome" in extra_options or "--app=chrome-m" in extra_options: + # Only add the chromedriver fetches when chrome is running + for platform in cd_fetches: + fs["by-test-platform"][platform].extend(cd_fetches[platform]) + if "--app=chromium" in extra_options or "--app=custom-car" in extra_options: + for platform in chromium_fetches: + fs["by-test-platform"][platform].extend(chromium_fetches[platform]) + + # The chromedrivers for chromium are repackaged into the archives + # that we get the chromium binary from so we always have a compatible + # version. + cd_extracted_name = { + "windows": "chrome-win/chromedriver.exe", + "mac": "chrome-mac/chromedriver", + "default": "chrome-linux/chromedriver", + } + + # Disable the Raptor install step + if "--app=chrome-m" in extra_options: + extra_options.append("--noinstall") + + task.setdefault("fetches", {}).setdefault("fetch", []).extend( + evaluate_keyed_by(fs, "fetches.fetch", task) + ) + + extra_options.extend( + ( + "--browsertime-browsertimejs", + "$MOZ_FETCHES_DIR/browsertime/node_modules/browsertime/bin/browsertime.js", + ) + ) # noqa: E501 + + eos = { + "by-test-platform": { + "windows.*": [ + "--browsertime-node", + "$MOZ_FETCHES_DIR/node/node.exe", + "--browsertime-geckodriver", + "$MOZ_FETCHES_DIR/geckodriver.exe", + "--browsertime-chromedriver", + "$MOZ_FETCHES_DIR/" + cd_extracted_name["windows"], + "--browsertime-ffmpeg", + "$MOZ_FETCHES_DIR/ffmpeg-4.4.1-full_build/bin/ffmpeg.exe", + ], + "macosx.*": [ + "--browsertime-node", + "$MOZ_FETCHES_DIR/node/bin/node", + "--browsertime-geckodriver", + "$MOZ_FETCHES_DIR/geckodriver", + "--browsertime-chromedriver", + "$MOZ_FETCHES_DIR/" + cd_extracted_name["mac"], + "--browsertime-ffmpeg", + "$MOZ_FETCHES_DIR/ffmpeg-macos/ffmpeg", + ], + "default": [ + "--browsertime-node", + "$MOZ_FETCHES_DIR/node/bin/node", + "--browsertime-geckodriver", + "$MOZ_FETCHES_DIR/geckodriver", + "--browsertime-chromedriver", + "$MOZ_FETCHES_DIR/" + cd_extracted_name["default"], + "--browsertime-ffmpeg", + "$MOZ_FETCHES_DIR/ffmpeg-4.4.1-i686-static/ffmpeg", + ], + } + } + + extra_options.extend(evaluate_keyed_by(eos, "mozharness.extra-options", task)) + + yield task + + +def get_mobile_project(task): + """Returns the mobile project of the specified task or None.""" + + if not task["build-platform"].startswith("android"): + return + + mobile_projects = ("fenix", "geckoview", "refbrow", "chrome-m") + + for name in mobile_projects: + if name in task["test-name"]: + return name + + target = None + if "target" in task: + resolve_keyed_by( + task, "target", item_name=task["test-name"], enforce_single_match=False + ) + target = task["target"] + if target: + if isinstance(target, dict): + target = target["name"] + + for name in mobile_projects: + if name in target: + return name + + return None + + +@transforms.add +def disable_wpt_timeouts_on_autoland(config, tasks): + """do not run web-platform-tests that are expected TIMEOUT on autoland""" + for task in tasks: + if ( + "web-platform-tests" in task["test-name"] + and config.params["project"] == "autoland" + ): + task["mozharness"].setdefault("extra-options", []).append("--skip-timeout") + yield task + + +@transforms.add +def enable_code_coverage(config, tasks): + """Enable code coverage for the ccov build-platforms""" + for task in tasks: + if "ccov" in task["build-platform"]: + # Do not run tests on fuzzing builds + if "fuzzing" in task["build-platform"]: + task["run-on-projects"] = [] + continue + + # Skip this transform for android code coverage builds. + if "android" in task["build-platform"]: + task.setdefault("fetches", {}).setdefault("toolchain", []).append( + "linux64-grcov" + ) + task["mozharness"].setdefault("extra-options", []).append( + "--java-code-coverage" + ) + yield task + continue + task["mozharness"].setdefault("extra-options", []).append("--code-coverage") + task["instance-size"] = "xlarge" + + # Temporarily disable Mac tests on mozilla-central + if "mac" in task["build-platform"]: + task["run-on-projects"] = [] + + # Ensure we always run on the projects defined by the build, unless the test + # is try only or shouldn't run at all. + if task["run-on-projects"] not in [[]]: + task["run-on-projects"] = "built-projects" + + # Ensure we don't optimize test suites out. + # We always want to run all test suites for coverage purposes. + task.pop("schedules-component", None) + task.pop("when", None) + task["optimization"] = None + + # Add a toolchain and a fetch task for the grcov binary. + if any(p in task["build-platform"] for p in ("linux", "osx", "win")): + task.setdefault("fetches", {}) + task["fetches"].setdefault("fetch", []) + task["fetches"].setdefault("toolchain", []) + task["fetches"].setdefault("build", []) + + if "linux" in task["build-platform"]: + task["fetches"]["toolchain"].append("linux64-grcov") + elif "osx" in task["build-platform"]: + task["fetches"]["toolchain"].append("macosx64-grcov") + elif "win" in task["build-platform"]: + task["fetches"]["toolchain"].append("win64-grcov") + + task["fetches"]["build"].append({"artifact": "target.mozinfo.json"}) + + if "talos" in task["test-name"]: + task["max-run-time"] = 7200 + if "linux" in task["build-platform"]: + task["docker-image"] = {"in-tree": "ubuntu1804-test"} + task["mozharness"]["extra-options"].append("--add-option") + task["mozharness"]["extra-options"].append("--cycles,1") + task["mozharness"]["extra-options"].append("--add-option") + task["mozharness"]["extra-options"].append("--tppagecycles,1") + task["mozharness"]["extra-options"].append("--add-option") + task["mozharness"]["extra-options"].append("--no-upload-results") + task["mozharness"]["extra-options"].append("--add-option") + task["mozharness"]["extra-options"].append("--tptimeout,15000") + if "raptor" in task["test-name"]: + task["max-run-time"] = 1800 + yield task + + +@transforms.add +def handle_run_on_projects(config, tasks): + """Handle translating `built-projects` appropriately""" + for task in tasks: + if task["run-on-projects"] == "built-projects": + task["run-on-projects"] = task["build-attributes"].get( + "run_on_projects", ["all"] + ) + + if task.pop("built-projects-only", False): + built_projects = set( + task["build-attributes"].get("run_on_projects", {"all"}) + ) + run_on_projects = set(task.get("run-on-projects", set())) + + # If 'all' exists in run-on-projects, then the intersection of both + # is built-projects. Similarly if 'all' exists in built-projects, + # the intersection is run-on-projects (so do nothing). When neither + # contains 'all', take the actual set intersection. + if "all" in run_on_projects: + task["run-on-projects"] = sorted(built_projects) + elif "all" not in built_projects: + task["run-on-projects"] = sorted(run_on_projects & built_projects) + yield task + + +@transforms.add +def handle_tier(config, tasks): + """Set the tier based on policy for all test descriptions that do not + specify a tier otherwise.""" + for task in tasks: + if "tier" in task: + resolve_keyed_by( + task, + "tier", + item_name=task["test-name"], + variant=task["attributes"].get("unittest_variant"), + enforce_single_match=False, + ) + + # only override if not set for the test + if "tier" not in task or task["tier"] == "default": + if task["test-platform"] in [ + "linux64/opt", + "linux64/debug", + "linux64-shippable/opt", + "linux64-devedition/opt", + "linux64-asan/opt", + "linux64-qr/opt", + "linux64-qr/debug", + "linux64-shippable-qr/opt", + "linux1804-64/opt", + "linux1804-64/debug", + "linux1804-64-shippable/opt", + "linux1804-64-devedition/opt", + "linux1804-64-qr/opt", + "linux1804-64-qr/debug", + "linux1804-64-shippable-qr/opt", + "linux1804-64-asan-qr/opt", + "linux1804-64-tsan-qr/opt", + "windows7-32-qr/debug", + "windows7-32-qr/opt", + "windows7-32-devedition-qr/opt", + "windows7-32-shippable-qr/opt", + "windows10-32-qr/debug", + "windows10-32-qr/opt", + "windows10-32-shippable-qr/opt", + "windows10-32-2004-qr/debug", + "windows10-32-2004-qr/opt", + "windows10-32-2004-shippable-qr/opt", + "windows10-aarch64-qr/opt", + "windows10-64/debug", + "windows10-64/opt", + "windows10-64-shippable/opt", + "windows10-64-devedition/opt", + "windows10-64-qr/opt", + "windows10-64-qr/debug", + "windows10-64-shippable-qr/opt", + "windows10-64-devedition-qr/opt", + "windows10-64-asan-qr/opt", + "windows10-64-2004-qr/opt", + "windows10-64-2004-qr/debug", + "windows10-64-2004-shippable-qr/opt", + "windows10-64-2004-devedition-qr/opt", + "windows10-64-2004-asan-qr/opt", + "windows11-32-2009-qr/debug", + "windows11-32-2009-qr/opt", + "windows11-32-2009-shippable-qr/opt", + "windows11-64-2009-qr/opt", + "windows11-64-2009-qr/debug", + "windows11-64-2009-shippable-qr/opt", + "windows11-64-2009-devedition-qr/opt", + "windows11-64-2009-asan-qr/opt", + "macosx1015-64/opt", + "macosx1015-64/debug", + "macosx1015-64-shippable/opt", + "macosx1015-64-devedition/opt", + "macosx1015-64-devedition-qr/opt", + "macosx1015-64-qr/opt", + "macosx1015-64-shippable-qr/opt", + "macosx1015-64-qr/debug", + "macosx1100-64-shippable-qr/opt", + "macosx1100-64-qr/debug", + "android-em-7.0-x86_64-shippable/opt", + "android-em-7.0-x86_64-shippable-lite/opt", + "android-em-7.0-x86_64/debug", + "android-em-7.0-x86_64/debug-isolated-process", + "android-em-7.0-x86_64/opt", + "android-em-7.0-x86_64-lite/opt", + "android-em-7.0-x86-shippable/opt", + "android-em-7.0-x86-shippable-lite/opt", + "android-em-7.0-x86_64-shippable-qr/opt", + "android-em-7.0-x86_64-qr/debug", + "android-em-7.0-x86_64-qr/debug-isolated-process", + "android-em-7.0-x86_64-qr/opt", + "android-em-7.0-x86_64-shippable-lite-qr/opt", + "android-em-7.0-x86_64-lite-qr/debug", + "android-em-7.0-x86_64-lite-qr/opt", + ]: + task["tier"] = 1 + else: + task["tier"] = 2 + + yield task + + +@transforms.add +def apply_raptor_tier_optimization(config, tasks): + for task in tasks: + if task["suite"] != "raptor": + yield task + continue + + if "regression-tests" in task["test-name"]: + # Don't optimize the regression tests + yield task + continue + + if not task["test-platform"].startswith("android-hw"): + task["optimization"] = {"skip-unless-expanded": None} + if task["tier"] > 1: + task["optimization"] = {"skip-unless-backstop": None} + + if task["attributes"].get("unittest_variant"): + task["tier"] = max(task["tier"], 2) + yield task + + +@transforms.add +def disable_try_only_platforms(config, tasks): + """Turns off platforms that should only run on try.""" + try_only_platforms = () + for task in tasks: + if any(re.match(k + "$", task["test-platform"]) for k in try_only_platforms): + task["run-on-projects"] = [] + yield task + + +@transforms.add +def ensure_spi_disabled_on_all_but_spi(config, tasks): + for task in tasks: + variant = task["attributes"].get("unittest_variant", "") + has_no_setpref = ("gtest", "cppunit", "jittest", "junit", "raptor") + + if ( + all(s not in task["suite"] for s in has_no_setpref) + and "socketprocess" not in variant + ): + task["mozharness"]["extra-options"].append( + "--setpref=media.peerconnection.mtransport_process=false" + ) + task["mozharness"]["extra-options"].append( + "--setpref=network.process.enabled=false" + ) + + yield task + + +test_setting_description_schema = Schema( + { + Required("_hash"): str, + "platform": { + Required("arch"): Any("32", "64", "aarch64", "arm7", "x86_64"), + Required("os"): { + Required("name"): Any("android", "linux", "macosx", "windows"), + Required("version"): str, + Optional("build"): str, + }, + Optional("device"): str, + Optional("display"): "wayland", + Optional("machine"): Any("ref-hw-2017"), + }, + "build": { + Required("type"): Any("opt", "debug", "debug-isolated-process"), + Any( + "asan", + "ccov", + "clang-trunk", + "devedition", + "domstreams", + "lite", + "mingwclang", + "nightlyasrelease", + "shippable", + "tsan", + ): bool, + }, + "runtime": {Any(*list(TEST_VARIANTS.keys()) + ["1proc"]): bool}, + }, + check=False, +) +"""Schema test settings must conform to. Validated by +:py:func:`~test.test_mozilla_central.test_test_setting`""" + + +@transforms.add +def set_test_setting(config, tasks): + """A test ``setting`` is the set of configuration that uniquely + distinguishes a test task from other tasks that run the same suite + (ignoring chunks). + + There are three different types of information that make up a setting: + + 1. Platform - Information describing the underlying platform tests run on, + e.g, OS, CPU architecture, etc. + + 2. Build - Information describing the build being tested, e.g build type, + ccov, asan/tsan, etc. + + 3. Runtime - Information describing which runtime parameters are enabled, + e.g, prefs, environment variables, etc. + + This transform adds a ``test-setting`` object to the ``extra`` portion of + all test tasks, of the form: + + .. code-block:: + + { + "platform": { ... }, + "build": { ... }, + "runtime": { ... } + } + + This information could be derived from the label, but consuming this + object is less brittle. + """ + # Some attributes have a dash in them which complicates parsing. Ensure we + # don't split them up. + # TODO Rename these so they don't have a dash. + dash_attrs = [ + "clang-trunk", + "ref-hw-2017", + ] + dash_token = "%D%" + platform_re = re.compile(r"(\D+)(\d*)") + + for task in tasks: + setting = { + "platform": { + "os": {}, + }, + "build": {}, + "runtime": {}, + } + + # parse platform and build information out of 'test-platform' + platform, build_type = task["test-platform"].split("/", 1) + + # ensure dashed attributes don't get split up + for attr in dash_attrs: + if attr in platform: + platform = platform.replace(attr, attr.replace("-", dash_token)) + + parts = platform.split("-") + + # restore dashes now that split is finished + for i, part in enumerate(parts): + if dash_token in part: + parts[i] = part.replace(dash_token, "-") + + match = platform_re.match(parts.pop(0)) + assert match + os_name, os_version = match.groups() + + device = machine = os_build = display = None + if os_name == "android": + device = parts.pop(0) + if device == "hw": + device = parts.pop(0) + else: + device = "emulator" + + os_version = parts.pop(0) + if parts[0].isdigit(): + os_version = f"{os_version}.{parts.pop(0)}" + + if parts[0] == "android": + parts.pop(0) + + arch = parts.pop(0) + + else: + arch = parts.pop(0) + if parts[0].isdigit(): + os_build = parts.pop(0) + + if parts[0] == "ref-hw-2017": + machine = parts.pop(0) + + if parts[0] == "wayland": + display = parts.pop(0) + + # It's not always possible to glean the exact architecture used from + # the task, so sometimes this will just be set to "32" or "64". + setting["platform"]["arch"] = arch + setting["platform"]["os"] = { + "name": os_name, + "version": os_version, + } + + if os_build: + setting["platform"]["os"]["build"] = os_build + + if device: + setting["platform"]["device"] = device + + if machine: + setting["platform"]["machine"] = machine + + if display: + setting["platform"]["display"] = display + + # parse remaining parts as build attributes + setting["build"]["type"] = build_type + while parts: + attr = parts.pop(0) + if attr == "qr": + # all tasks are webrender now, no need to store it + continue + + setting["build"][attr] = True + + unittest_variant = task["attributes"].get("unittest_variant") + if unittest_variant: + for variant in unittest_variant.split("+"): + setting["runtime"][variant] = True + + # add a hash of the setting object for easy comparisons + setting["_hash"] = hashlib.sha256( + json.dumps(setting, sort_keys=True).encode("utf-8") + ).hexdigest()[:12] + + task["test-setting"] = ReadOnlyDict(**setting) + yield task + + +@transforms.add +def allow_software_gl_layers(config, tasks): + """ + Handle the "allow-software-gl-layers" property for platforms where it + applies. + """ + for task in tasks: + if task.get("allow-software-gl-layers"): + # This should be set always once bug 1296086 is resolved. + task["mozharness"].setdefault("extra-options", []).append( + "--allow-software-gl-layers" + ) + + yield task + + +@transforms.add +def enable_webrender(config, tasks): + """ + Handle the "webrender" property by passing a flag to mozharness if it is + enabled. + """ + for task in tasks: + # TODO: this was all conditionally in enable_webrender- do we still need this? + extra_options = task["mozharness"].setdefault("extra-options", []) + # We only want to 'setpref' on tests that have a profile + if not task["attributes"]["unittest_category"] in [ + "cppunittest", + "geckoview-junit", + "gtest", + "jittest", + "raptor", + ]: + extra_options.append("--setpref=layers.d3d11.enable-blacklist=false") + + yield task + + +@transforms.add +def set_schedules_for_webrender_android(config, tasks): + """android-hw has limited resources, we need webrender on phones""" + for task in tasks: + if task["suite"] in ["crashtest", "reftest"] and task[ + "test-platform" + ].startswith("android-hw"): + task["schedules-component"] = "android-hw-gfx" + yield task + + +@transforms.add +def set_retry_exit_status(config, tasks): + """Set the retry exit status to TBPL_RETRY, the value returned by mozharness + scripts to indicate a transient failure that should be retried.""" + for task in tasks: + # add in 137 as it is an error with GCP workers + task["retry-exit-status"] = [4, 137] + yield task + + +@transforms.add +def set_profile(config, tasks): + """Set profiling mode for tests.""" + ttconfig = config.params["try_task_config"] + profile = ttconfig.get("gecko-profile", False) + settings = ( + "gecko-profile-interval", + "gecko-profile-entries", + "gecko-profile-threads", + "gecko-profile-features", + ) + + for task in tasks: + if profile and task["suite"] in ["talos", "raptor"]: + extras = task["mozharness"]["extra-options"] + extras.append("--gecko-profile") + for setting in settings: + value = ttconfig.get(setting) + if value is not None: + # These values can contain spaces (eg the "DOM Worker" + # thread) and the command is constructed in different, + # incompatible ways on different platforms. + + if task["test-platform"].startswith("win"): + # Double quotes for Windows (single won't work). + extras.append("--" + setting + '="' + str(value) + '"') + else: + # Other platforms keep things as separate values, + # rather than joining with spaces. + extras.append("--" + setting + "=" + str(value)) + + yield task + + +@transforms.add +def set_tag(config, tasks): + """Set test for a specific tag.""" + tag = None + if config.params["try_mode"] == "try_option_syntax": + tag = config.params["try_options"]["tag"] + for task in tasks: + if tag: + task["mozharness"]["extra-options"].extend(["--tag", tag]) + yield task + + +@transforms.add +def set_test_type(config, tasks): + types = ["mochitest", "reftest", "talos", "raptor", "geckoview-junit", "gtest"] + for task in tasks: + for test_type in types: + if test_type in task["suite"] and "web-platform" not in task["suite"]: + task.setdefault("tags", {})["test-type"] = test_type + yield task + + +@transforms.add +def set_schedules_components(config, tasks): + for task in tasks: + if "optimization" in task or "when" in task: + yield task + continue + + category = task["attributes"]["unittest_category"] + schedules = task.get("schedules-component", category) + if isinstance(schedules, str): + schedules = [schedules] + + schedules = set(schedules) + if schedules & set(INCLUSIVE_COMPONENTS): + # if this is an "inclusive" test, then all files which might + # cause it to run are annotated with SCHEDULES in moz.build, + # so do not include the platform or any other components here + task["schedules-component"] = sorted(schedules) + yield task + continue + + schedules.add(category) + schedules.add(platform_family(task["build-platform"])) + + task["schedules-component"] = sorted(schedules) + yield task + + +@transforms.add +def enable_parallel_marking_in_tsan_tests(config, tasks): + """Enable parallel marking in TSAN tests""" + skip_list = ["cppunittest", "gtest"] + for task in tasks: + if "-tsan-" in task["test-platform"]: + if task["suite"] not in skip_list: + extra_options = task["mozharness"].setdefault("extra-options", []) + extra_options.append( + "--setpref=javascript.options.mem.gc_parallel_marking=true" + ) + + yield task + + +@transforms.add +def apply_windows7_optimization(config, tasks): + for task in tasks: + if task["test-platform"].startswith("windows7"): + task["optimization"] = {"skip-unless-backstop": None} + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/test/raptor.py b/taskcluster/gecko_taskgraph/transforms/test/raptor.py new file mode 100644 index 0000000000..3eac5dd9ef --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/raptor.py @@ -0,0 +1,317 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by +from taskgraph.util.treeherder import join_symbol, split_symbol +from voluptuous import Extra, Optional, Required + +from gecko_taskgraph.transforms.test import test_description_schema +from gecko_taskgraph.util.copy_task import copy_task + +transforms = TransformSequence() +task_transforms = TransformSequence() + +raptor_description_schema = Schema( + { + # Raptor specific configs. + Optional("raptor"): { + Optional("activity"): optionally_keyed_by("app", str), + Optional("apps"): optionally_keyed_by("test-platform", "subtest", [str]), + Optional("binary-path"): optionally_keyed_by("app", str), + Optional("run-visual-metrics"): optionally_keyed_by("app", bool), + Optional("subtests"): optionally_keyed_by("app", "test-platform", list), + Optional("test"): str, + Optional("test-url-param"): optionally_keyed_by( + "subtest", "test-platform", str + ), + }, + # Configs defined in the 'test_description_schema'. + Optional("max-run-time"): optionally_keyed_by( + "app", "subtest", "test-platform", test_description_schema["max-run-time"] + ), + Optional("run-on-projects"): optionally_keyed_by( + "app", + "test-name", + "raptor.test", + "subtest", + "variant", + test_description_schema["run-on-projects"], + ), + Optional("variants"): test_description_schema["variants"], + Optional("target"): optionally_keyed_by( + "app", test_description_schema["target"] + ), + Optional("tier"): optionally_keyed_by( + "app", "raptor.test", "subtest", "variant", test_description_schema["tier"] + ), + Required("test-name"): test_description_schema["test-name"], + Required("test-platform"): test_description_schema["test-platform"], + Required("require-signed-extensions"): test_description_schema[ + "require-signed-extensions" + ], + Required("treeherder-symbol"): test_description_schema["treeherder-symbol"], + # Any unrecognized keys will be validated against the test_description_schema. + Extra: object, + } +) + +transforms.add_validate(raptor_description_schema) + + +@transforms.add +def set_defaults(config, tests): + for test in tests: + test.setdefault("raptor", {}).setdefault("run-visual-metrics", False) + yield test + + +@transforms.add +def split_apps(config, tests): + app_symbols = { + "chrome": "ChR", + "chrome-m": "ChR", + "chromium": "Cr", + "fenix": "fenix", + "refbrow": "refbrow", + "safari": "Saf", + "custom-car": "CaR", + } + + for test in tests: + apps = test["raptor"].pop("apps", None) + if not apps: + yield test + continue + + for app in apps: + # Ignore variants for non-Firefox or non-mobile applications. + if app not in ["firefox", "geckoview", "fenix", "chrome-m"] and test[ + "attributes" + ].get("unittest_variant"): + continue + + atest = copy_task(test) + suffix = f"-{app}" + atest["app"] = app + atest["description"] += f" on {app.capitalize()}" + + name = atest["test-name"] + suffix + atest["test-name"] = name + atest["try-name"] = name + + if app in app_symbols: + group, symbol = split_symbol(atest["treeherder-symbol"]) + group += f"-{app_symbols[app]}" + atest["treeherder-symbol"] = join_symbol(group, symbol) + + yield atest + + +@transforms.add +def handle_keyed_by_prereqs(config, tests): + """ + Only resolve keys for prerequisite fields here since the + these keyed-by options might have keyed-by fields + as well. + """ + for test in tests: + resolve_keyed_by(test, "raptor.subtests", item_name=test["test-name"]) + yield test + + +@transforms.add +def split_raptor_subtests(config, tests): + for test in tests: + # For tests that have 'subtests' listed, we want to create a separate + # test job for every subtest (i.e. split out each page-load URL into its own job) + subtests = test["raptor"].pop("subtests", None) + if not subtests: + yield test + continue + + for chunk_number, subtest in enumerate(subtests): + + # Create new test job + chunked = copy_task(test) + chunked["chunk-number"] = 1 + chunk_number + chunked["subtest"] = subtest + chunked["subtest-symbol"] = subtest + if isinstance(chunked["subtest"], list): + chunked["subtest"] = subtest[0] + chunked["subtest-symbol"] = subtest[1] + chunked = resolve_keyed_by( + chunked, "tier", chunked["subtest"], defer=["variant"] + ) + yield chunked + + +@transforms.add +def handle_keyed_by(config, tests): + fields = [ + "raptor.test-url-param", + "raptor.run-visual-metrics", + "raptor.activity", + "raptor.binary-path", + "limit-platforms", + "fetches.fetch", + "max-run-time", + "run-on-projects", + "target", + "tier", + ] + for test in tests: + for field in fields: + resolve_keyed_by( + test, field, item_name=test["test-name"], defer=["variant"] + ) + yield test + + +@transforms.add +def split_page_load_by_url(config, tests): + for test in tests: + # `chunk-number` and 'subtest' only exists when the task had a + # definition for `subtests` + chunk_number = test.pop("chunk-number", None) + subtest = test.get( + "subtest" + ) # don't pop as some tasks need this value after splitting variants + subtest_symbol = test.pop("subtest-symbol", None) + + if not chunk_number or not subtest: + yield test + continue + + if len(subtest_symbol) > 10 and "ytp" not in subtest_symbol: + raise Exception( + "Treeherder symbol %s is larger than 10 char! Please use a different symbol." + % subtest_symbol + ) + + if test["test-name"].startswith("browsertime-"): + test["raptor"]["test"] = subtest + + # Remove youtube-playback in the test name to avoid duplication + test["test-name"] = test["test-name"].replace("youtube-playback-", "") + else: + # Use full test name if running on webextension + test["raptor"]["test"] = "raptor-tp6-" + subtest + "-{}".format(test["app"]) + + # Only run the subtest/single URL + test["test-name"] += f"-{subtest}" + test["try-name"] += f"-{subtest}" + + # Set treeherder symbol and description + group, _ = split_symbol(test["treeherder-symbol"]) + test["treeherder-symbol"] = join_symbol(group, subtest_symbol) + test["description"] += f" on {subtest}" + + yield test + + +@transforms.add +def modify_extra_options(config, tests): + for test in tests: + test_name = test.get("test-name", None) + + if "first-install" in test_name: + # First-install tests should never use conditioned profiles + extra_options = test.setdefault("mozharness", {}).setdefault( + "extra-options", [] + ) + + for i, opt in enumerate(extra_options): + if "conditioned-profile" in opt: + if i: + extra_options.pop(i) + break + + if "-widevine" in test_name: + extra_options = test.setdefault("mozharness", {}).setdefault( + "extra-options", [] + ) + for i, opt in enumerate(extra_options): + if "--conditioned-profile=settled" in opt: + if i: + extra_options[i] += "-youtube" + break + + if "unity-webgl" in test_name: + # Disable the extra-profiler-run for unity-webgl tests. + extra_options = test.setdefault("mozharness", {}).setdefault( + "extra-options", [] + ) + for i, opt in enumerate(extra_options): + if "extra-profiler-run" in opt: + if i: + extra_options.pop(i) + break + + yield test + + +@transforms.add +def add_extra_options(config, tests): + for test in tests: + mozharness = test.setdefault("mozharness", {}) + if test.get("app", "") == "chrome-m": + mozharness["tooltool-downloads"] = "internal" + + extra_options = mozharness.setdefault("extra-options", []) + + # Adding device name if we're on android + test_platform = test["test-platform"] + if test_platform.startswith("android-hw-g5"): + extra_options.append("--device-name=g5") + elif test_platform.startswith("android-hw-a51"): + extra_options.append("--device-name=a51") + elif test_platform.startswith("android-hw-p5"): + extra_options.append("--device-name=p5_aarch64") + + if test["raptor"].pop("run-visual-metrics", False): + extra_options.append("--browsertime-video") + extra_options.append("--browsertime-visualmetrics") + test["attributes"]["run-visual-metrics"] = True + + if "app" in test: + extra_options.append( + "--app={}".format(test["app"]) + ) # don't pop as some tasks need this value after splitting variants + + if "activity" in test["raptor"]: + extra_options.append("--activity={}".format(test["raptor"].pop("activity"))) + + if "binary-path" in test["raptor"]: + extra_options.append( + "--binary-path={}".format(test["raptor"].pop("binary-path")) + ) + + if "test" in test["raptor"]: + extra_options.append("--test={}".format(test["raptor"].pop("test"))) + + if test["require-signed-extensions"]: + extra_options.append("--is-release-build") + + if "test-url-param" in test["raptor"]: + param = test["raptor"].pop("test-url-param") + if not param == []: + extra_options.append( + "--test-url-params={}".format(param.replace(" ", "")) + ) + + extra_options.append("--project={}".format(config.params.get("project"))) + + yield test + + +@task_transforms.add +def add_scopes_and_proxy(config, tasks): + for task in tasks: + task.setdefault("worker", {})["taskcluster-proxy"] = True + task.setdefault("scopes", []).append( + "secrets:get:project/perftest/gecko/level-{level}/perftest-login" + ) + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/test/variant.py b/taskcluster/gecko_taskgraph/transforms/test/variant.py new file mode 100644 index 0000000000..e2fd9764e1 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/variant.py @@ -0,0 +1,128 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import datetime + +import jsone +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import Schema, validate_schema +from taskgraph.util.treeherder import join_symbol, split_symbol +from taskgraph.util.yaml import load_yaml +from voluptuous import Any, Optional, Required + +import gecko_taskgraph +from gecko_taskgraph.util.copy_task import copy_task +from gecko_taskgraph.util.templates import merge + +transforms = TransformSequence() + +TEST_VARIANTS = load_yaml( + gecko_taskgraph.GECKO, "taskcluster", "ci", "test", "variants.yml" +) +"""List of available test variants defined.""" + + +variant_description_schema = Schema( + { + str: { + Required("description"): str, + Required("suffix"): str, + Required("component"): str, + Required("expiration"): str, + Optional("when"): {Any("$eval", "$if"): str}, + Optional("replace"): {str: object}, + Optional("merge"): {str: object}, + } + } +) +"""variant description schema""" + + +@transforms.add +def split_variants(config, tasks): + """Splits test definitions into multiple tasks based on the `variants` key. + + If `variants` are defined, the original task will be yielded along with a + copy of the original task for each variant defined in the list. The copies + will have the 'unittest_variant' attribute set. + """ + validate_schema(variant_description_schema, TEST_VARIANTS, "In variants.yml:") + + def find_expired_variants(variants): + expired = [] + + # do not expire on esr/beta/release + if config.params.get("release_type", "") in [ + "release", + "beta", + ]: + return [] + + if "esr" in config.params.get("release_type", ""): + return [] + + today = datetime.datetime.today() + for variant in variants: + + expiration = variants[variant]["expiration"] + if len(expiration.split("-")) == 1: + continue + expires_at = datetime.datetime.strptime(expiration, "%Y-%m-%d") + if expires_at < today: + expired.append(variant) + return expired + + def remove_expired(variants, expired): + remaining_variants = [] + for name in variants: + parts = [p for p in name.split("+") if p not in expired] + if len(parts) == 0: + continue + + remaining_variants.append(name) + return remaining_variants + + def apply_variant(variant, task): + task["description"] = variant["description"].format(**task) + + suffix = f"-{variant['suffix']}" + group, symbol = split_symbol(task["treeherder-symbol"]) + if group != "?": + group += suffix + else: + symbol += suffix + task["treeherder-symbol"] = join_symbol(group, symbol) + + # This will be used to set the label and try-name in 'make_job_description'. + task.setdefault("variant-suffix", "") + task["variant-suffix"] += suffix + + # Replace and/or merge the configuration. + task.update(variant.get("replace", {})) + return merge(task, variant.get("merge", {})) + + expired_variants = find_expired_variants(TEST_VARIANTS) + for task in tasks: + variants = task.pop("variants", []) + variants = remove_expired(variants, expired_variants) + + if task.pop("run-without-variant"): + yield copy_task(task) + + for name in variants: + # Apply composite variants (joined by '+') in order. + parts = name.split("+") + taskv = copy_task(task) + for part in parts: + variant = TEST_VARIANTS[part] + + # If any variant in a composite fails this check we skip it. + if "when" in variant: + context = {"task": task} + if not jsone.render(variant["when"], context): + break + + taskv = apply_variant(variant, taskv) + else: + taskv["attributes"]["unittest_variant"] = name + yield taskv diff --git a/taskcluster/gecko_taskgraph/transforms/test/worker.py b/taskcluster/gecko_taskgraph/transforms/test/worker.py new file mode 100644 index 0000000000..0d8d72162d --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/test/worker.py @@ -0,0 +1,201 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +# default worker types keyed by instance-size +LINUX_WORKER_TYPES = { + "large": "t-linux-large", + "xlarge": "t-linux-xlarge", + "default": "t-linux-large", +} + +# windows worker types keyed by test-platform and virtualization +WINDOWS_WORKER_TYPES = { + "windows7-32-qr": { + "virtual": "t-win7-32", + "virtual-with-gpu": "t-win7-32-gpu", + "hardware": "t-win10-64-1803-hw", + }, + "windows7-32-shippable-qr": { + "virtual": "t-win7-32", + "virtual-with-gpu": "t-win7-32-gpu", + "hardware": "t-win10-64-1803-hw", + }, + "windows7-32-devedition-qr": { # build only, tests have no value + "virtual": "t-win7-32", + "virtual-with-gpu": "t-win7-32-gpu", + "hardware": "t-win10-64-1803-hw", + }, + "windows10-64": { # source-test + "virtual": "t-win10-64", + "virtual-with-gpu": "t-win10-64-gpu-s", + "hardware": "t-win10-64-1803-hw", + }, + "windows10-64-shippable-qr": { + "virtual": "t-win10-64", + "virtual-with-gpu": "t-win10-64-gpu-s", + "hardware": "t-win10-64-1803-hw", + }, + "windows10-64-ref-hw-2017": { + "virtual": "t-win10-64", + "virtual-with-gpu": "t-win10-64-gpu-s", + "hardware": "t-win10-64-ref-hw", + }, + "windows10-64-2009-qr": { + "virtual": "win10-64-2009", + "virtual-with-gpu": "win10-64-2009-gpu", + }, + "windows10-64-2009-shippable-qr": { + "virtual": "win10-64-2009", + "virtual-with-gpu": "win10-64-2009-gpu", + }, + "windows11-32-2009-mingwclang-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-32-2009-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-32-2009-shippable-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-ccov": { + "virtual": "win11-64-2009-ssd", + "virtual-with-gpu": "win11-64-2009-ssd-gpu", + }, + "windows11-64-2009-ccov-qr": { + "virtual": "win11-64-2009-ssd", + "virtual-with-gpu": "win11-64-2009-ssd-gpu", + }, + "windows11-64-2009-devedition": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-shippable": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-shippable-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-devedition-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-asan-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, + "windows11-64-2009-mingwclang-qr": { + "virtual": "win11-64-2009", + "virtual-with-gpu": "win11-64-2009-gpu", + }, +} + +# os x worker types keyed by test-platform +MACOSX_WORKER_TYPES = { + "macosx1015-64-power": "t-osx-1015-power", + "macosx1015-64": "t-osx-1015-r8", + "macosx1100-64": "t-osx-1100-m1", +} + +transforms = TransformSequence() + + +@transforms.add +def set_worker_type(config, tasks): + """Set the worker type based on the test platform.""" + for task in tasks: + # during the taskcluster migration, this is a bit tortured, but it + # will get simpler eventually! + test_platform = task["test-platform"] + if task.get("worker-type", "default") != "default": + # This test already has its worker type defined, so just use that (yields below) + # Unless the value is set to "default", in that case ignore it. + pass + elif test_platform.startswith("macosx1015-64"): + if "--power-test" in task["mozharness"]["extra-options"]: + task["worker-type"] = MACOSX_WORKER_TYPES["macosx1015-64-power"] + else: + task["worker-type"] = MACOSX_WORKER_TYPES["macosx1015-64"] + elif test_platform.startswith("macosx1100-64"): + task["worker-type"] = MACOSX_WORKER_TYPES["macosx1100-64"] + elif test_platform.startswith("win"): + # figure out what platform the job needs to run on + if task["virtualization"] == "hardware": + # some jobs like talos and reftest run on real h/w - those are all win10 + if test_platform.startswith("windows10-64-ref-hw-2017"): + win_worker_type_platform = WINDOWS_WORKER_TYPES[ + "windows10-64-ref-hw-2017" + ] + else: + win_worker_type_platform = WINDOWS_WORKER_TYPES["windows10-64"] + else: + # the other jobs run on a vm which may or may not be a win10 vm + win_worker_type_platform = WINDOWS_WORKER_TYPES[ + test_platform.split("/")[0] + ] + if task[ + "virtualization" + ] == "virtual-with-gpu" and test_platform.startswith("windows1"): + # add in `--requires-gpu` to the mozharness options + task["mozharness"]["extra-options"].append("--requires-gpu") + + # now we have the right platform set the worker type accordingly + task["worker-type"] = win_worker_type_platform[task["virtualization"]] + elif test_platform.startswith("android-hw-g5"): + if task["suite"] != "raptor": + task["worker-type"] = "t-bitbar-gw-unit-g5" + else: + task["worker-type"] = "t-bitbar-gw-perf-g5" + elif test_platform.startswith("android-hw-p5"): + if task["suite"] != "raptor": + task["worker-type"] = "t-bitbar-gw-unit-p5" + else: + task["worker-type"] = "t-bitbar-gw-perf-p5" + elif test_platform.startswith("android-hw-a51"): + if task["suite"] != "raptor": + task["worker-type"] = "t-bitbar-gw-unit-a51" + else: + task["worker-type"] = "t-bitbar-gw-perf-a51" + elif test_platform.startswith("android-em-7.0-x86"): + task["worker-type"] = "t-linux-kvm" + elif test_platform.startswith("linux") or test_platform.startswith("android"): + if "wayland" in test_platform: + task["worker-type"] = "t-linux-wayland" + elif task.get("suite", "") in ["talos", "raptor"] and not task[ + "build-platform" + ].startswith("linux64-ccov"): + task["worker-type"] = "t-linux-talos-1804" + else: + task["worker-type"] = LINUX_WORKER_TYPES[task["instance-size"]] + else: + raise Exception(f"unknown test_platform {test_platform}") + + yield task + + +@transforms.add +def set_wayland_env(config, tasks): + for task in tasks: + if task["worker-type"] != "t-linux-wayland": + yield task + continue + + env = task.setdefault("worker", {}).setdefault("env", {}) + env["MOZ_ENABLE_WAYLAND"] = "1" + env["WAYLAND_DISPLAY"] = "wayland-0" + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/try_job.py b/taskcluster/gecko_taskgraph/transforms/try_job.py new file mode 100644 index 0000000000..4b3281f5c5 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/try_job.py @@ -0,0 +1,18 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def set_job_try_name(config, jobs): + """ + For a task which is governed by `-j` in try syntax, set the `job_try_name` + attribute based on the job name. + """ + for job in jobs: + job.setdefault("attributes", {}).setdefault("job_try_name", job["name"]) + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/update_verify.py b/taskcluster/gecko_taskgraph/transforms/update_verify.py new file mode 100644 index 0000000000..19c932c746 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/update_verify.py @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + + +from copy import deepcopy + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import add_suffix, inherit_treeherder_from_dep + +from gecko_taskgraph.util.attributes import task_name + +transforms = TransformSequence() + + +@transforms.add +def add_command(config, tasks): + config_tasks = {} + for dep in config.kind_dependencies_tasks.values(): + if ( + "update-verify-config" in dep.kind + or "update-verify-next-config" in dep.kind + ): + config_tasks[task_name(dep)] = dep + + for task in tasks: + config_task = config_tasks[task["name"]] + total_chunks = task["extra"]["chunks"] + task["worker"].setdefault("env", {})["CHANNEL"] = config_task.task["extra"][ + "channel" + ] + task.setdefault("fetches", {})[config_task.label] = [ + "update-verify.cfg", + ] + task["treeherder"] = inherit_treeherder_from_dep(task, config_task) + + for this_chunk in range(1, total_chunks + 1): + chunked = deepcopy(task) + chunked["treeherder"]["symbol"] = add_suffix( + chunked["treeherder"]["symbol"], this_chunk + ) + chunked["label"] = "release-update-verify-{}-{}/{}".format( + chunked["name"], this_chunk, total_chunks + ) + if not chunked["worker"].get("env"): + chunked["worker"]["env"] = {} + chunked["run"] = { + "using": "run-task", + "cwd": "{checkout}", + "command": "tools/update-verify/scripts/chunked-verify.sh " + f"--total-chunks={total_chunks} --this-chunk={this_chunk}", + "sparse-profile": "update-verify", + } + + yield chunked diff --git a/taskcluster/gecko_taskgraph/transforms/update_verify_config.py b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py new file mode 100644 index 0000000000..1de808f82b --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py @@ -0,0 +1,148 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the beetmover task into an actual task description. +""" + +from urllib.parse import urlsplit + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.transforms.task import get_branch_repo, get_branch_rev +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.scriptworker import get_release_config + +transforms = TransformSequence() + + +# The beta regexes do not match point releases. +# In the rare event that we do ship a point +# release to beta, we need to either: +# 1) update these regexes to match that specific version +# 2) pass a second include version that matches that specific version +INCLUDE_VERSION_REGEXES = { + "beta": r"'^(\d+\.\d+(b\d+)?)$'", + "nonbeta": r"'^\d+\.\d+(\.\d+)?$'", + # Same as nonbeta, except for the esr suffix + "esr": r"'^\d+\.\d+(\.\d+)?esr$'", + # Previous esr versions, for update testing before we update users to esr102 + "esr115-next": r"'^(52|60|68|78|91|102)+\.\d+(\.\d+)?esr$'", +} + +MAR_CHANNEL_ID_OVERRIDE_REGEXES = { + "beta": r"'^\d+\.\d+(\.\d+)?$$,firefox-mozilla-beta,firefox-mozilla-release'", +} + + +def ensure_wrapped_singlequote(regexes): + """Ensure that a regex (from INCLUDE_VERSION_REGEXES or MAR_CHANNEL_ID_OVERRIDE_REGEXES) + is wrapper in single quotes. + """ + for name, regex in regexes.items(): + if regex[0] != "'" or regex[-1] != "'": + raise Exception( + "Regex {} is invalid: not wrapped with single quotes.\n{}".format( + name, regex + ) + ) + + +ensure_wrapped_singlequote(INCLUDE_VERSION_REGEXES) +ensure_wrapped_singlequote(MAR_CHANNEL_ID_OVERRIDE_REGEXES) + + +@transforms.add +def add_command(config, tasks): + keyed_by_args = [ + "channel", + "archive-prefix", + "previous-archive-prefix", + "aus-server", + "override-certs", + "include-version", + "mar-channel-id-override", + "last-watershed", + ] + optional_args = [ + "updater-platform", + ] + + release_config = get_release_config(config) + + for task in tasks: + task["description"] = "generate update verify config for {}".format( + task["attributes"]["build_platform"] + ) + + command = [ + "python", + "testing/mozharness/scripts/release/update-verify-config-creator.py", + "--product", + task["extra"]["product"], + "--stage-product", + task["shipping-product"], + "--app-name", + task["extra"]["app-name"], + "--branch-prefix", + task["extra"]["branch-prefix"], + "--platform", + task["extra"]["platform"], + "--to-version", + release_config["version"], + "--to-app-version", + release_config["appVersion"], + "--to-build-number", + str(release_config["build_number"]), + "--to-buildid", + config.params["moz_build_date"], + "--to-revision", + get_branch_rev(config), + "--output-file", + "update-verify.cfg", + ] + + repo_path = urlsplit(get_branch_repo(config)).path.lstrip("/") + command.extend(["--repo-path", repo_path]) + + if release_config.get("partial_versions"): + for partial in release_config["partial_versions"].split(","): + command.extend(["--partial-version", partial.split("build")[0]]) + + for arg in optional_args: + if task["extra"].get(arg): + command.append(f"--{arg}") + command.append(task["extra"][arg]) + + for arg in keyed_by_args: + thing = f"extra.{arg}" + resolve_keyed_by( + task, + thing, + item_name=task["name"], + platform=task["attributes"]["build_platform"], + **{ + "release-type": config.params["release_type"], + "release-level": release_level(config.params["project"]), + }, + ) + # ignore things that resolved to null + if not task["extra"].get(arg): + continue + if arg == "include-version": + task["extra"][arg] = INCLUDE_VERSION_REGEXES[task["extra"][arg]] + if arg == "mar-channel-id-override": + task["extra"][arg] = MAR_CHANNEL_ID_OVERRIDE_REGEXES[task["extra"][arg]] + + command.append(f"--{arg}") + command.append(task["extra"][arg]) + + task["run"].update( + { + "using": "mach", + "mach": " ".join(command), + } + ) + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py b/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py new file mode 100644 index 0000000000..b862645eed --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the upload-generated-files task description template, +taskcluster/ci/upload-generated-sources/kind.yml, into an actual task description. +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def add_task_info(config, jobs): + for job in jobs: + dep_task = job["primary-dependency"] + del job["primary-dependency"] + + # Add a dependency on the build task. + job["dependencies"] = {"build": dep_task.label} + # Label the job to match the build task it's uploading from. + job["label"] = dep_task.label.replace("build-", "upload-generated-sources-") + # Copy over some bits of metdata from the build task. + dep_th = dep_task.task["extra"]["treeherder"] + job.setdefault("attributes", {}) + job["attributes"]["build_platform"] = dep_task.attributes.get("build_platform") + if dep_task.attributes.get("shippable"): + job["attributes"]["shippable"] = True + plat = "{}/{}".format( + dep_th["machine"]["platform"], dep_task.attributes.get("build_type") + ) + job["treeherder"]["platform"] = plat + job["treeherder"]["tier"] = dep_th["tier"] + if dep_th["symbol"] != "N": + job["treeherder"]["symbol"] = "Ugs{}".format(dep_th["symbol"]) + job["run-on-projects"] = dep_task.attributes.get("run_on_projects") + job["optimization"] = dep_task.optimization + + yield job diff --git a/taskcluster/gecko_taskgraph/transforms/upload_symbols.py b/taskcluster/gecko_taskgraph/transforms/upload_symbols.py new file mode 100644 index 0000000000..f6d40e9a45 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/upload_symbols.py @@ -0,0 +1,95 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Transform the upload-symbols task description template, +taskcluster/ci/upload-symbols/job-template.yml into an actual task description. +""" + + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol + +from gecko_taskgraph.util.attributes import ( + RELEASE_PROJECTS, + copy_attributes_from_dependent_job, +) + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def check_nightlies(config, tasks): + """Ensure that we upload symbols for all shippable builds, so that crash-stats can + resolve any reports sent to it. Try may enable full symbols but not upload them. + + Putting this check here (instead of the transforms for the build kind) lets us + leverage the any not-for-build-platforms set in the update-symbols kind.""" + for task in tasks: + dep = task["primary-dependency"] + if ( + config.params["project"] in RELEASE_PROJECTS + and dep.attributes.get("shippable") + and not dep.attributes.get("enable-full-crashsymbols") + and not dep.attributes.get("skip-upload-crashsymbols") + ): + raise Exception( + "Shippable job %s should have enable-full-crashsymbols attribute " + "set to true to enable symbol upload to crash-stats" % dep.label + ) + yield task + + +@transforms.add +def fill_template(config, tasks): + for task in tasks: + dep = task["primary-dependency"] + task.pop("dependent-tasks", None) + + # Fill out the dynamic fields in the task description + task["label"] = dep.label + "-upload-symbols" + + # Skip tasks where we don't have the full crashsymbols enabled + if not dep.attributes.get("enable-full-crashsymbols") or dep.attributes.get( + "skip-upload-crashsymbols" + ): + logger.debug("Skipping upload symbols task for %s", task["label"]) + continue + + task["dependencies"] = {"build": dep.label} + task["worker"]["env"]["GECKO_HEAD_REPOSITORY"] = config.params[ + "head_repository" + ] + task["worker"]["env"]["GECKO_HEAD_REV"] = config.params["head_rev"] + task["worker"]["env"]["SYMBOL_SECRET"] = task["worker"]["env"][ + "SYMBOL_SECRET" + ].format(level=config.params["level"]) + + attributes = copy_attributes_from_dependent_job(dep) + attributes.update(task.get("attributes", {})) + task["attributes"] = attributes + + treeherder = inherit_treeherder_from_dep(task, dep) + th = dep.task.get("extra")["treeherder"] + th_symbol = th.get("symbol") + th_groupsymbol = th.get("groupSymbol", "?") + + # Disambiguate the treeherder symbol. + sym = "Sym" + (th_symbol[1:] if th_symbol.startswith("B") else th_symbol) + treeherder.setdefault("symbol", join_symbol(th_groupsymbol, sym)) + task["treeherder"] = treeherder + + # We only want to run these tasks if the build is run. + # XXX Better to run this on promote phase instead? + task["run-on-projects"] = dep.attributes.get("run_on_projects") + task["optimization"] = {"upload-symbols": None} + task["if-dependencies"] = ["build"] + + # clear out the stuff that's not part of a task description + del task["primary-dependency"] + + yield task diff --git a/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py b/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py new file mode 100644 index 0000000000..62f94a8238 --- /dev/null +++ b/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py @@ -0,0 +1,29 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Find upstream artifact task. +""" + +from taskgraph.transforms.base import TransformSequence + +transforms = TransformSequence() + + +@transforms.add +def find_upstream_artifact_task(config, jobs): + for job in jobs: + dep_job = None + if job.get("dependent-tasks"): + dep_labels = [l for l in job["dependent-tasks"].keys()] + for label in dep_labels: + if label.endswith("-mac-signing"): + assert ( + dep_job is None + ), "Can't determine whether " "{} or {} is dep_job!".format( + dep_job.label, label + ) + dep_job = job["dependent-tasks"][label] + if dep_job is not None: + job["upstream-artifact-task"] = dep_job + yield job diff --git a/taskcluster/gecko_taskgraph/try_option_syntax.py b/taskcluster/gecko_taskgraph/try_option_syntax.py new file mode 100644 index 0000000000..3e054d63f9 --- /dev/null +++ b/taskcluster/gecko_taskgraph/try_option_syntax.py @@ -0,0 +1,755 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import argparse +import copy +import logging +import re +import shlex +from collections import defaultdict + +logger = logging.getLogger(__name__) + +# The build type aliases are very cryptic and only used in try flags these are +# mappings from the single char alias to a longer more recognizable form. +BUILD_TYPE_ALIASES = {"o": "opt", "d": "debug"} + +# consider anything in this whitelist of kinds to be governed by -b/-p +BUILD_KINDS = { + "build", + "artifact-build", + "hazard", + "l10n", + "valgrind", + "spidermonkey", +} + + +# mapping from shortcut name (usable with -u) to a boolean function identifying +# matching test names +def alias_prefix(prefix): + return lambda name: name.startswith(prefix) + + +def alias_contains(infix): + return lambda name: infix in name + + +def alias_matches(pattern): + pattern = re.compile(pattern) + return lambda name: pattern.match(name) + + +UNITTEST_ALIASES = { + # Aliases specify shorthands that can be used in try syntax. The shorthand + # is the dictionary key, with the value representing a pattern for matching + # unittest_try_names. + # + # Note that alias expansion is performed in the absence of any chunk + # prefixes. For example, the first example above would replace "foo-7" + # with "foobar-7". Note that a few aliases allowed chunks to be specified + # without a leading `-`, for example 'mochitest-dt1'. That's no longer + # supported. + "cppunit": alias_prefix("cppunit"), + "crashtest": alias_prefix("crashtest"), + "crashtest-e10s": alias_prefix("crashtest-e10s"), + "e10s": alias_contains("e10s"), + "firefox-ui-functional": alias_prefix("firefox-ui-functional"), + "gaia-js-integration": alias_contains("gaia-js-integration"), + "gtest": alias_prefix("gtest"), + "jittest": alias_prefix("jittest"), + "jittests": alias_prefix("jittest"), + "jsreftest": alias_prefix("jsreftest"), + "jsreftest-e10s": alias_prefix("jsreftest-e10s"), + "marionette": alias_prefix("marionette"), + "mochitest": alias_prefix("mochitest"), + "mochitests": alias_prefix("mochitest"), + "mochitest-e10s": alias_prefix("mochitest-e10s"), + "mochitests-e10s": alias_prefix("mochitest-e10s"), + "mochitest-debug": alias_prefix("mochitest-debug-"), + "mochitest-a11y": alias_contains("mochitest-a11y"), + "mochitest-bc": alias_prefix("mochitest-browser-chrome"), + "mochitest-e10s-bc": alias_prefix("mochitest-browser-chrome-e10s"), + "mochitest-browser-chrome": alias_prefix("mochitest-browser-chrome"), + "mochitest-e10s-browser-chrome": alias_prefix("mochitest-browser-chrome-e10s"), + "mochitest-chrome": alias_contains("mochitest-chrome"), + "mochitest-dt": alias_prefix("mochitest-devtools-chrome"), + "mochitest-e10s-dt": alias_prefix("mochitest-devtools-chrome-e10s"), + "mochitest-gl": alias_prefix("mochitest-webgl"), + "mochitest-gl-e10s": alias_prefix("mochitest-webgl-e10s"), + "mochitest-gpu": alias_prefix("mochitest-gpu"), + "mochitest-gpu-e10s": alias_prefix("mochitest-gpu-e10s"), + "mochitest-media": alias_prefix("mochitest-media"), + "mochitest-media-e10s": alias_prefix("mochitest-media-e10s"), + "mochitest-vg": alias_prefix("mochitest-valgrind"), + "reftest": alias_matches(r"^(plain-)?reftest.*$"), + "reftest-no-accel": alias_matches(r"^(plain-)?reftest-no-accel.*$"), + "reftests": alias_matches(r"^(plain-)?reftest.*$"), + "reftests-e10s": alias_matches(r"^(plain-)?reftest-e10s.*$"), + "robocop": alias_prefix("robocop"), + "web-platform-test": alias_prefix("web-platform-tests"), + "web-platform-tests": alias_prefix("web-platform-tests"), + "web-platform-tests-e10s": alias_prefix("web-platform-tests-e10s"), + "web-platform-tests-crashtests": alias_prefix("web-platform-tests-crashtest"), + "web-platform-tests-print-reftest": alias_prefix( + "web-platform-tests-print-reftest" + ), + "web-platform-tests-reftests": alias_prefix("web-platform-tests-reftest"), + "web-platform-tests-reftests-e10s": alias_prefix("web-platform-tests-reftest-e10s"), + "web-platform-tests-wdspec": alias_prefix("web-platform-tests-wdspec"), + "web-platform-tests-wdspec-e10s": alias_prefix("web-platform-tests-wdspec-e10s"), + "xpcshell": alias_prefix("xpcshell"), +} + +# unittest platforms can be specified by substring of the "pretty name", which +# is basically the old Buildbot builder name. This dict has {pretty name, +# [test_platforms]} translations, This includes only the most commonly-used +# substrings. It is OK to add new test platforms to various shorthands here; +# if you add a new Linux64 test platform for instance, people will expect that +# their previous methods of requesting "all linux64 tests" will include this +# new platform, and they shouldn't have to explicitly spell out the new platform +# every time for such cases. +# +# Note that the test platforms here are only the prefix up to the `/`. +UNITTEST_PLATFORM_PRETTY_NAMES = { + "Ubuntu": [ + "linux32", + "linux64", + "linux64-asan", + "linux1804-64", + "linux1804-64-asan", + ], + "x64": ["linux64", "linux64-asan", "linux1804-64", "linux1804-64-asan"], + "Android 7.0 Moto G5 32bit": ["android-hw-g5-7.0-arm7"], + "Android 7.0 Samsung A51 32bit": ["android-hw-a51-11.0-arm7"], + "Android 7.0 Samsung A51 64bit": ["android-hw-a51-11.0-aarch64"], + "Android 8.0 Google Pixel 2 32bit": ["android-hw-p2-8.0-arm7"], + "Android 8.0 Google Pixel 2 64bit": ["android-hw-p2-8.0-android-aarch64"], + "Android 13.0 Google Pixel 5 32bit": ["android-hw-p5-13.0-arm7"], + "Android 13.0 Google Pixel 5 64bit": ["android-hw-p5-13.0-android-aarch64"], + "Windows 7": ["windows7-32"], + "Windows 7 VM": ["windows7-32-vm"], + "Windows 10": ["windows10-64"], +} + +TEST_CHUNK_SUFFIX = re.compile("(.*)-([0-9]+)$") + + +def escape_whitespace_in_brackets(input_str): + """ + In tests you may restrict them by platform [] inside of the brackets + whitespace may occur this is typically invalid shell syntax so we escape it + with backslash sequences . + """ + result = "" + in_brackets = False + for char in input_str: + if char == "[": + in_brackets = True + result += char + continue + + if char == "]": + in_brackets = False + result += char + continue + + if char == " " and in_brackets: + result += r"\ " + continue + + result += char + + return result + + +def split_try_msg(message): + try: + try_idx = message.index("try:") + except ValueError: + return [] + message = message[try_idx:].split("\n")[0] + # shlex used to ensure we split correctly when giving values to argparse. + return shlex.split(escape_whitespace_in_brackets(message)) + + +def parse_message(message): + parts = split_try_msg(message) + + # Argument parser based on try flag flags + parser = argparse.ArgumentParser() + parser.add_argument("-b", "--build", dest="build_types") + parser.add_argument( + "-p", "--platform", nargs="?", dest="platforms", const="all", default="all" + ) + parser.add_argument( + "-u", "--unittests", nargs="?", dest="unittests", const="all", default="all" + ) + parser.add_argument( + "-t", "--talos", nargs="?", dest="talos", const="all", default="none" + ) + parser.add_argument( + "-r", "--raptor", nargs="?", dest="raptor", const="all", default="none" + ) + parser.add_argument( + "-i", "--interactive", dest="interactive", action="store_true", default=False + ) + parser.add_argument( + "-e", "--all-emails", dest="notifications", action="store_const", const="all" + ) + parser.add_argument( + "-f", + "--failure-emails", + dest="notifications", + action="store_const", + const="failure", + ) + parser.add_argument("-j", "--job", dest="jobs", action="append") + parser.add_argument( + "--rebuild-talos", + dest="talos_trigger_tests", + action="store", + type=int, + default=1, + ) + parser.add_argument( + "--rebuild-raptor", + dest="raptor_trigger_tests", + action="store", + type=int, + default=1, + ) + parser.add_argument("--setenv", dest="env", action="append") + parser.add_argument("--gecko-profile", dest="profile", action="store_true") + parser.add_argument("--tag", dest="tag", action="store", default=None) + parser.add_argument("--no-retry", dest="no_retry", action="store_true") + parser.add_argument( + "--include-nightly", dest="include_nightly", action="store_true" + ) + parser.add_argument("--artifact", dest="artifact", action="store_true") + + # While we are transitioning from BB to TC, we want to push jobs to tc-worker + # machines but not overload machines with every try push. Therefore, we add + # this temporary option to be able to push jobs to tc-worker. + parser.add_argument( + "-w", + "--taskcluster-worker", + dest="taskcluster_worker", + action="store_true", + default=False, + ) + + # In order to run test jobs multiple times + parser.add_argument("--rebuild", dest="trigger_tests", type=int, default=1) + args, _ = parser.parse_known_args(parts) + + try_options = vars(args) + try_task_config = { + "use-artifact-builds": try_options.pop("artifact"), + "gecko-profile": try_options.pop("profile"), + "env": dict(arg.split("=") for arg in try_options.pop("env") or []), + } + return { + "try_options": try_options, + "try_task_config": try_task_config, + } + + +class TryOptionSyntax: + def __init__(self, parameters, full_task_graph, graph_config): + """ + Apply the try options in parameters. + + The resulting object has attributes: + + - build_types: a list containing zero or more of 'opt' and 'debug' + - platforms: a list of selected platform names, or None for all + - unittests: a list of tests, of the form given below, or None for all + - jobs: a list of requested job names, or None for all + - trigger_tests: the number of times tests should be triggered (--rebuild) + - interactive: true if --interactive + - notifications: either None if no notifications or one of 'all' or 'failure' + - talos_trigger_tests: the number of time talos tests should be triggered (--rebuild-talos) + - tag: restrict tests to the specified tag + - no_retry: do not retry failed jobs + + The unittests and talos lists contain dictionaries of the form: + + { + 'test': '', + 'platforms': [..platform names..], # to limit to only certain platforms + 'only_chunks': set([..chunk numbers..]), # to limit only to certain chunks + } + """ + self.full_task_graph = full_task_graph + self.graph_config = graph_config + self.jobs = [] + self.build_types = [] + self.platforms = [] + self.unittests = [] + self.talos = [] + self.raptor = [] + self.trigger_tests = 0 + self.interactive = False + self.notifications = None + self.talos_trigger_tests = 0 + self.raptor_trigger_tests = 0 + self.tag = None + self.no_retry = False + + options = parameters["try_options"] + if not options: + return None + self.jobs = self.parse_jobs(options["jobs"]) + self.build_types = self.parse_build_types( + options["build_types"], full_task_graph + ) + self.platforms = self.parse_platforms(options, full_task_graph) + self.unittests = self.parse_test_option( + "unittest_try_name", options["unittests"], full_task_graph + ) + self.talos = self.parse_test_option( + "talos_try_name", options["talos"], full_task_graph + ) + self.raptor = self.parse_test_option( + "raptor_try_name", options["raptor"], full_task_graph + ) + self.trigger_tests = options["trigger_tests"] + self.interactive = options["interactive"] + self.notifications = options["notifications"] + self.talos_trigger_tests = options["talos_trigger_tests"] + self.raptor_trigger_tests = options["raptor_trigger_tests"] + self.tag = options["tag"] + self.no_retry = options["no_retry"] + self.include_nightly = options["include_nightly"] + + self.test_tiers = self.generate_test_tiers(full_task_graph) + + def generate_test_tiers(self, full_task_graph): + retval = defaultdict(set) + for t in full_task_graph.tasks.values(): + if t.attributes.get("kind") == "test": + try: + tier = t.task["extra"]["treeherder"]["tier"] + name = t.attributes.get("unittest_try_name") + retval[name].add(tier) + except KeyError: + pass + + return retval + + def parse_jobs(self, jobs_arg): + if not jobs_arg or jobs_arg == ["none"]: + return [] # default is `-j none` + if jobs_arg == ["all"]: + return None + expanded = [] + for job in jobs_arg: + expanded.extend(j.strip() for j in job.split(",")) + return expanded + + def parse_build_types(self, build_types_arg, full_task_graph): + if build_types_arg is None: + build_types_arg = [] + + build_types = [ + _f + for _f in ( + BUILD_TYPE_ALIASES.get(build_type) for build_type in build_types_arg + ) + if _f + ] + + all_types = { + t.attributes["build_type"] + for t in full_task_graph.tasks.values() + if "build_type" in t.attributes + } + bad_types = set(build_types) - all_types + if bad_types: + raise Exception( + "Unknown build type(s) [%s] specified for try" % ",".join(bad_types) + ) + + return build_types + + def parse_platforms(self, options, full_task_graph): + platform_arg = options["platforms"] + if platform_arg == "all": + return None + + RIDEALONG_BUILDS = self.graph_config["try"]["ridealong-builds"] + results = [] + for build in platform_arg.split(","): + if build in ("macosx64",): + # Regular opt builds are faster than shippable ones, but we don't run + # tests against them. + # We want to choose them (and only them) if no tests were requested. + if ( + options["unittests"] == "none" + and options["talos"] == "none" + and options["raptor"] == "none" + ): + results.append("macosx64") + logger.info("adding macosx64 for try syntax using macosx64.") + # Otherwise, use _just_ the shippable builds. + else: + results.append("macosx64-shippable") + logger.info( + "adding macosx64-shippable for try syntax using macosx64." + ) + else: + results.append(build) + if build in RIDEALONG_BUILDS: + results.extend(RIDEALONG_BUILDS[build]) + logger.info( + "platform %s triggers ridealong builds %s" + % (build, ", ".join(RIDEALONG_BUILDS[build])) + ) + + test_platforms = { + t.attributes["test_platform"] + for t in full_task_graph.tasks.values() + if "test_platform" in t.attributes + } + build_platforms = { + t.attributes["build_platform"] + for t in full_task_graph.tasks.values() + if "build_platform" in t.attributes + } + all_platforms = test_platforms | build_platforms + bad_platforms = set(results) - all_platforms + if bad_platforms: + raise Exception( + "Unknown platform(s) [%s] specified for try" % ",".join(bad_platforms) + ) + + return results + + def parse_test_option(self, attr_name, test_arg, full_task_graph): + """ + + Parse a unittest (-u) or talos (-t) option, in the context of a full + task graph containing available `unittest_try_name` or `talos_try_name` + attributes. There are three cases: + + - test_arg is == 'none' (meaning an empty list) + - test_arg is == 'all' (meaning use the list of jobs for that job type) + - test_arg is comma string which needs to be parsed + """ + + # Empty job list case... + if test_arg is None or test_arg == "none": + return [] + + all_platforms = { + t.attributes["test_platform"].split("/")[0] + for t in full_task_graph.tasks.values() + if "test_platform" in t.attributes + } + + tests = self.parse_test_opts(test_arg, all_platforms) + + if not tests: + return [] + + all_tests = { + t.attributes[attr_name] + for t in full_task_graph.tasks.values() + if attr_name in t.attributes + } + + # Special case where tests is 'all' and must be expanded + if tests[0]["test"] == "all": + results = [] + all_entry = tests[0] + for test in all_tests: + entry = {"test": test} + # If there are platform restrictions copy them across the list. + if "platforms" in all_entry: + entry["platforms"] = list(all_entry["platforms"]) + results.append(entry) + return self.parse_test_chunks(all_tests, results) + return self.parse_test_chunks(all_tests, tests) + + def parse_test_opts(self, input_str, all_platforms): + """ + Parse `testspec,testspec,..`, where each testspec is a test name + optionally followed by a list of test platforms or negated platforms in + `[]`. + + No brackets indicates that tests should run on all platforms for which + builds are available. If testspecs are provided, then each is treated, + from left to right, as an instruction to include or (if negated) + exclude a set of test platforms. A single spec may expand to multiple + test platforms via UNITTEST_PLATFORM_PRETTY_NAMES. If the first test + spec is negated, processing begins with the full set of available test + platforms; otherwise, processing begins with an empty set of test + platforms. + """ + + # Final results which we will return. + tests = [] + + cur_test = {} + token = "" + in_platforms = False + + def normalize_platforms(): + if "platforms" not in cur_test: + return + # if the first spec is a negation, start with all platforms + if cur_test["platforms"][0][0] == "-": + platforms = all_platforms.copy() + else: + platforms = [] + for platform in cur_test["platforms"]: + if platform[0] == "-": + platforms = [p for p in platforms if p != platform[1:]] + else: + platforms.append(platform) + cur_test["platforms"] = platforms + + def add_test(value): + normalize_platforms() + cur_test["test"] = value.strip() + tests.insert(0, cur_test) + + def add_platform(value): + platform = value.strip() + if platform[0] == "-": + negated = True + platform = platform[1:] + else: + negated = False + platforms = UNITTEST_PLATFORM_PRETTY_NAMES.get(platform, [platform]) + if negated: + platforms = ["-" + p for p in platforms] + cur_test["platforms"] = platforms + cur_test.get("platforms", []) + + # This might be somewhat confusing but we parse the string _backwards_ so + # there is no ambiguity over what state we are in. + for char in reversed(input_str): + + # , indicates exiting a state + if char == ",": + + # Exit a particular platform. + if in_platforms: + add_platform(token) + + # Exit a particular test. + else: + add_test(token) + cur_test = {} + + # Token must always be reset after we exit a state + token = "" + elif char == "[": + # Exiting platform state entering test state. + add_platform(token) + token = "" + in_platforms = False + elif char == "]": + # Entering platform state. + in_platforms = True + else: + # Accumulator. + token = char + token + + # Handle any left over tokens. + if token: + add_test(token) + + return tests + + def handle_alias(self, test, all_tests): + """ + Expand a test if its name refers to an alias, returning a list of test + dictionaries cloned from the first (to maintain any metadata). + """ + if test["test"] not in UNITTEST_ALIASES: + return [test] + + alias = UNITTEST_ALIASES[test["test"]] + + def mktest(name): + newtest = copy.deepcopy(test) + newtest["test"] = name + return newtest + + def exprmatch(alias): + return [t for t in all_tests if alias(t)] + + return [mktest(t) for t in exprmatch(alias)] + + def parse_test_chunks(self, all_tests, tests): + """ + Test flags may include parameters to narrow down the number of chunks in a + given push. We don't model 1 chunk = 1 job in taskcluster so we must check + each test flag to see if it is actually specifying a chunk. + """ + results = [] + seen_chunks = {} + for test in tests: + matches = TEST_CHUNK_SUFFIX.match(test["test"]) + if matches: + name = matches.group(1) + chunk = matches.group(2) + if name in seen_chunks: + seen_chunks[name].add(chunk) + else: + seen_chunks[name] = {chunk} + test["test"] = name + test["only_chunks"] = seen_chunks[name] + results.append(test) + else: + results.extend(self.handle_alias(test, all_tests)) + + # uniquify the results over the test names + results = sorted( + {test["test"]: test for test in results}.values(), + key=lambda test: test["test"], + ) + return results + + def find_all_attribute_suffixes(self, graph, prefix): + rv = set() + for t in graph.tasks.values(): + for a in t.attributes: + if a.startswith(prefix): + rv.add(a[len(prefix) :]) + return sorted(rv) + + def task_matches(self, task): + attr = task.attributes.get + + def check_run_on_projects(): + return {"all"} & set(attr("run_on_projects", [])) + + def match_test(try_spec, attr_name): + run_by_default = True + if attr("build_type") not in self.build_types: + return False + + if ( + self.platforms is not None + and attr("build_platform") not in self.platforms + ): + return False + if not check_run_on_projects(): + run_by_default = False + + if try_spec is None: + return run_by_default + + # TODO: optimize this search a bit + for test in try_spec: + if attr(attr_name) == test["test"]: + break + else: + return False + + if "only_chunks" in test and attr("test_chunk") not in test["only_chunks"]: + return False + + tier = task.task["extra"]["treeherder"]["tier"] + if "platforms" in test: + if "all" in test["platforms"]: + return True + platform = attr("test_platform", "").split("/")[0] + # Platforms can be forced by syntax like "-u xpcshell[Windows 8]" + return platform in test["platforms"] + if tier != 1: + # Run Tier 2/3 tests if their build task is Tier 2/3 OR if there is + # no tier 1 test of that name. + build_task = self.full_task_graph.tasks[task.dependencies["build"]] + build_task_tier = build_task.task["extra"]["treeherder"]["tier"] + + name = attr("unittest_try_name") + test_tiers = self.test_tiers.get(name) + + if tier <= build_task_tier: + logger.debug( + "not skipping tier {} test {} because build task {} " + "is tier {}".format( + tier, task.label, build_task.label, build_task_tier + ) + ) + return True + if 1 not in test_tiers: + logger.debug( + "not skipping tier {} test {} without explicit inclusion; " + "it is configured to run on tiers {}".format( + tier, task.label, test_tiers + ) + ) + return True + logger.debug( + "skipping tier {} test {} because build task {} is " + "tier {} and there is a higher-tier test of the same name".format( + tier, task.label, build_task.label, build_task_tier + ) + ) + return False + if run_by_default: + return check_run_on_projects() + return False + + if attr("job_try_name"): + # Beware the subtle distinction between [] and None for self.jobs and self.platforms. + # They will be [] if there was no try syntax, and None if try syntax was detected but + # they remained unspecified. + if self.jobs is not None: + return attr("job_try_name") in self.jobs + + # User specified `-j all` + if ( + self.platforms is not None + and attr("build_platform") not in self.platforms + ): + return False # honor -p for jobs governed by a platform + # "all" means "everything with `try` in run_on_projects" + return check_run_on_projects() + if attr("kind") == "test": + return ( + match_test(self.unittests, "unittest_try_name") + or match_test(self.talos, "talos_try_name") + or match_test(self.raptor, "raptor_try_name") + ) + if attr("kind") in BUILD_KINDS: + if attr("build_type") not in self.build_types: + return False + if self.platforms is None: + # for "-p all", look for try in the 'run_on_projects' attribute + return check_run_on_projects() + if attr("build_platform") not in self.platforms: + return False + return True + return False + + def __str__(self): + def none_for_all(list): + if list is None: + return "" + return ", ".join(str(e) for e in list) + + return "\n".join( + [ + "build_types: " + ", ".join(self.build_types), + "platforms: " + none_for_all(self.platforms), + "unittests: " + none_for_all(self.unittests), + "talos: " + none_for_all(self.talos), + "raptor" + none_for_all(self.raptor), + "jobs: " + none_for_all(self.jobs), + "trigger_tests: " + str(self.trigger_tests), + "interactive: " + str(self.interactive), + "notifications: " + str(self.notifications), + "talos_trigger_tests: " + str(self.talos_trigger_tests), + "raptor_trigger_tests: " + str(self.raptor_trigger_tests), + "tag: " + str(self.tag), + "no_retry: " + str(self.no_retry), + ] + ) diff --git a/taskcluster/gecko_taskgraph/util/__init__.py b/taskcluster/gecko_taskgraph/util/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/taskcluster/gecko_taskgraph/util/attributes.py b/taskcluster/gecko_taskgraph/util/attributes.py new file mode 100644 index 0000000000..0ed0be5a8d --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/attributes.py @@ -0,0 +1,143 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import re + +INTEGRATION_PROJECTS = { + "autoland", +} + +TRUNK_PROJECTS = INTEGRATION_PROJECTS | {"mozilla-central", "comm-central"} + +RELEASE_PROJECTS = { + "mozilla-central", + "mozilla-beta", + "mozilla-release", + "mozilla-esr102", + "mozilla-esr115", + "comm-central", + "comm-beta", + "comm-esr102", + "comm-esr115", +} + +RELEASE_PROMOTION_PROJECTS = { + "jamun", + "maple", + "try", + "try-comm-central", +} | RELEASE_PROJECTS + +TEMPORARY_PROJECTS = set( + { + # When using a "Disposable Project Branch" you can specify your branch here. e.g.: + "oak", + } +) + +TRY_PROJECTS = { + "try", + "try-comm-central", +} + +ALL_PROJECTS = RELEASE_PROMOTION_PROJECTS | TRUNK_PROJECTS | TEMPORARY_PROJECTS + +RUN_ON_PROJECT_ALIASES = { + # key is alias, value is lambda to test it against + "all": lambda project: True, + "integration": lambda project: ( + project in INTEGRATION_PROJECTS or project == "toolchains" + ), + "release": lambda project: (project in RELEASE_PROJECTS or project == "toolchains"), + "trunk": lambda project: (project in TRUNK_PROJECTS or project == "toolchains"), + "trunk-only": lambda project: project in TRUNK_PROJECTS, + "autoland": lambda project: project in ("autoland", "toolchains"), + "autoland-only": lambda project: project == "autoland", + "mozilla-central": lambda project: project in ("mozilla-central", "toolchains"), + "mozilla-central-only": lambda project: project == "mozilla-central", +} + +_COPYABLE_ATTRIBUTES = ( + "accepted-mar-channel-ids", + "artifact_map", + "artifact_prefix", + "build_platform", + "build_type", + "l10n_chunk", + "locale", + "mar-channel-id", + "maven_packages", + "nightly", + "required_signoffs", + "shippable", + "shipping_phase", + "shipping_product", + "signed", + "stub-installer", + "update-channel", +) + + +def match_run_on_projects(project, run_on_projects): + """Determine whether the given project is included in the `run-on-projects` + parameter, applying expansions for things like "integration" mentioned in + the attribute documentation.""" + aliases = RUN_ON_PROJECT_ALIASES.keys() + run_aliases = set(aliases) & set(run_on_projects) + if run_aliases: + if any(RUN_ON_PROJECT_ALIASES[alias](project) for alias in run_aliases): + return True + + return project in run_on_projects + + +def match_run_on_hg_branches(hg_branch, run_on_hg_branches): + """Determine whether the given project is included in the `run-on-hg-branches` + parameter. Allows 'all'.""" + if "all" in run_on_hg_branches: + return True + + for expected_hg_branch_pattern in run_on_hg_branches: + if re.match(expected_hg_branch_pattern, hg_branch): + return True + + return False + + +def copy_attributes_from_dependent_job(dep_job, denylist=()): + return { + attr: dep_job.attributes[attr] + for attr in _COPYABLE_ATTRIBUTES + if attr in dep_job.attributes and attr not in denylist + } + + +def sorted_unique_list(*args): + """Join one or more lists, and return a sorted list of unique members""" + combined = set().union(*args) + return sorted(combined) + + +def release_level(project): + """ + Whether this is a staging release or not. + + :return str: One of "production" or "staging". + """ + return "production" if project in RELEASE_PROJECTS else "staging" + + +def is_try(params): + """ + Determine whether this graph is being built on a try project or for + `mach try fuzzy`. + """ + return "try" in params["project"] or params["try_mode"] == "try_select" + + +def task_name(task): + if task.label.startswith(task.kind + "-"): + return task.label[len(task.kind) + 1 :] + raise AttributeError(f"Task {task.label} does not have a name.") diff --git a/taskcluster/gecko_taskgraph/util/backstop.py b/taskcluster/gecko_taskgraph/util/backstop.py new file mode 100644 index 0000000000..26c9a4fb91 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/backstop.py @@ -0,0 +1,84 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from requests import HTTPError +from taskgraph.util.taskcluster import find_task_id, get_artifact + +from gecko_taskgraph.util.attributes import INTEGRATION_PROJECTS, TRY_PROJECTS +from gecko_taskgraph.util.taskcluster import state_task + +BACKSTOP_PUSH_INTERVAL = 20 +BACKSTOP_TIME_INTERVAL = 60 * 4 # minutes +BACKSTOP_INDEX = "{trust-domain}.v2.{project}.latest.taskgraph.backstop" + + +def is_backstop( + params, + push_interval=BACKSTOP_PUSH_INTERVAL, + time_interval=BACKSTOP_TIME_INTERVAL, + trust_domain="gecko", + integration_projects=INTEGRATION_PROJECTS, +): + """Determines whether the given parameters represent a backstop push. + + Args: + push_interval (int): Number of pushes + time_interval (int): Minutes between forced schedules. + Use 0 to disable. + trust_domain (str): "gecko" for Firefox, "comm" for Thunderbird + integration_projects (set): project that uses backstop optimization + Returns: + bool: True if this is a backstop, otherwise False. + """ + # In case this is being faked on try. + if params.get("backstop", False): + return True + + project = params["project"] + pushid = int(params["pushlog_id"]) + pushdate = int(params["pushdate"]) + + if project in TRY_PROJECTS: + return False + if project not in integration_projects: + return True + + # On every Nth push, want to run all tasks. + if pushid % push_interval == 0: + return True + + if time_interval <= 0: + return False + + # We also want to ensure we run all tasks at least once per N minutes. + subs = {"trust-domain": trust_domain, "project": project} + index = BACKSTOP_INDEX.format(**subs) + + try: + last_backstop_id = find_task_id(index) + except KeyError: + # Index wasn't found, implying there hasn't been a backstop push yet. + return True + + if state_task(last_backstop_id) in ("failed", "exception"): + # If the last backstop failed its decision task, make this a backstop. + return True + + try: + last_pushdate = get_artifact(last_backstop_id, "public/parameters.yml")[ + "pushdate" + ] + except HTTPError as e: + # If the last backstop decision task exists in the index, but + # parameters.yml isn't available yet, it means the decision task is + # still running. If that's the case, we can be pretty sure the time + # component will not cause a backstop, so just return False. + if e.response.status_code == 404: + return False + raise + + if (pushdate - last_pushdate) / 60 >= time_interval: + return True + return False diff --git a/taskcluster/gecko_taskgraph/util/bugbug.py b/taskcluster/gecko_taskgraph/util/bugbug.py new file mode 100644 index 0000000000..50e02d69c6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/bugbug.py @@ -0,0 +1,125 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import os +import sys +import time + +import requests +from mozbuild.util import memoize +from taskgraph import create +from taskgraph.util.taskcluster import requests_retry_session + +try: + # TODO(py3): use time.monotonic() + from time import monotonic +except ImportError: + from time import time as monotonic + +BUGBUG_BASE_URL = "https://bugbug.herokuapp.com" +RETRY_TIMEOUT = 9 * 60 # seconds +RETRY_INTERVAL = 10 # seconds + +# Preset confidence thresholds. +CT_LOW = 0.7 +CT_MEDIUM = 0.8 +CT_HIGH = 0.9 + +GROUP_TRANSLATIONS = { + "testing/web-platform/tests": "", + "testing/web-platform/mozilla/tests": "/_mozilla", +} + + +def translate_group(group): + for prefix, value in GROUP_TRANSLATIONS.items(): + if group.startswith(prefix): + return group.replace(prefix, value) + + return group + + +class BugbugTimeoutException(Exception): + pass + + +@memoize +def get_session(): + s = requests.Session() + s.headers.update({"X-API-KEY": "gecko-taskgraph"}) + return requests_retry_session(retries=5, session=s) + + +def _write_perfherder_data(lower_is_better): + if os.environ.get("MOZ_AUTOMATION", "0") == "1": + perfherder_data = { + "framework": {"name": "build_metrics"}, + "suites": [ + { + "name": suite, + "value": value, + "lowerIsBetter": True, + "shouldAlert": False, + "subtests": [], + } + for suite, value in lower_is_better.items() + ], + } + print(f"PERFHERDER_DATA: {json.dumps(perfherder_data)}", file=sys.stderr) + + +@memoize +def push_schedules(branch, rev): + # Noop if we're in test-action-callback + if create.testing: + return + + url = BUGBUG_BASE_URL + "/push/{branch}/{rev}/schedules".format( + branch=branch, rev=rev + ) + start = monotonic() + session = get_session() + + # On try there is no fallback and pulling is slower, so we allow bugbug more + # time to compute the results. + # See https://github.com/mozilla/bugbug/issues/1673. + timeout = RETRY_TIMEOUT + if branch == "try": + timeout += int(timeout / 3) + + attempts = timeout / RETRY_INTERVAL + i = 0 + while i < attempts: + r = session.get(url) + r.raise_for_status() + + if r.status_code != 202: + break + + time.sleep(RETRY_INTERVAL) + i += 1 + end = monotonic() + + _write_perfherder_data( + lower_is_better={ + "bugbug_push_schedules_time": end - start, + "bugbug_push_schedules_retries": i, + } + ) + + data = r.json() + if r.status_code == 202: + raise BugbugTimeoutException(f"Timed out waiting for result from '{url}'") + + if "groups" in data: + data["groups"] = {translate_group(k): v for k, v in data["groups"].items()} + + if "config_groups" in data: + data["config_groups"] = { + translate_group(k): v for k, v in data["config_groups"].items() + } + + return data diff --git a/taskcluster/gecko_taskgraph/util/cached_tasks.py b/taskcluster/gecko_taskgraph/util/cached_tasks.py new file mode 100644 index 0000000000..fff9bb9844 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/cached_tasks.py @@ -0,0 +1,82 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import hashlib +import time + +TARGET_CACHE_INDEX = "{trust_domain}.cache.level-{level}.{type}.{name}.hash.{digest}" +EXTRA_CACHE_INDEXES = [ + "{trust_domain}.cache.level-{level}.{type}.{name}.latest", + "{trust_domain}.cache.level-{level}.{type}.{name}.pushdate.{build_date_long}", +] + + +def add_optimization( + config, taskdesc, cache_type, cache_name, digest=None, digest_data=None +): + """ + Allow the results of this task to be cached. This adds index routes to the + task so it can be looked up for future runs, and optimization hints so that + cached artifacts can be found. Exactly one of `digest` and `digest_data` + must be passed. + + :param TransformConfig config: The configuration for the kind being transformed. + :param dict taskdesc: The description of the current task. + :param str cache_type: The type of task result being cached. + :param str cache_name: The name of the object being cached. + :param digest: A unique string indentifying this version of the artifacts + being generated. Typically this will be the hash of inputs to the task. + :type digest: bytes or None + :param digest_data: A list of bytes representing the inputs of this task. + They will be concatenated and hashed to create the digest for this + task. + :type digest_data: list of bytes or None + """ + cached_task = taskdesc.get("attributes", {}).get("cached_task") + if cached_task is False: + return + + if (digest is None) == (digest_data is None): + raise Exception("Must pass exactly one of `digest` and `digest_data`.") + if digest is None: + digest = hashlib.sha256("\n".join(digest_data).encode("utf-8")).hexdigest() + + subs = { + "trust_domain": config.graph_config["trust-domain"], + "type": cache_type, + "name": cache_name, + "digest": digest, + } + + # We'll try to find a cached version of the toolchain at levels above + # and including the current level, starting at the highest level. + index_routes = [] + for level in reversed(range(int(config.params["level"]), 4)): + subs["level"] = level + index_routes.append(TARGET_CACHE_INDEX.format(**subs)) + taskdesc["optimization"] = {"index-search": index_routes} + + # ... and cache at the lowest level. + taskdesc.setdefault("routes", []).append( + f"index.{TARGET_CACHE_INDEX.format(**subs)}" + ) + + # ... and add some extra routes for humans + subs["build_date_long"] = time.strftime( + "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"]) + ) + taskdesc["routes"].extend( + [f"index.{route.format(**subs)}" for route in EXTRA_CACHE_INDEXES] + ) + + taskdesc["attributes"]["cached_task"] = { + "type": cache_type, + "name": cache_name, + "digest": digest, + } + + # Allow future pushes to find this task before it completes + # Implementation in morphs + taskdesc["attributes"]["eager_indexes"] = [TARGET_CACHE_INDEX.format(**subs)] diff --git a/taskcluster/gecko_taskgraph/util/chunking.py b/taskcluster/gecko_taskgraph/util/chunking.py new file mode 100644 index 0000000000..2c6c429a2c --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/chunking.py @@ -0,0 +1,315 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Utility functions to handle test chunking.""" + +import json +import logging +import os +from abc import ABCMeta, abstractmethod + +from manifestparser import TestManifest +from manifestparser.filters import chunk_by_runtime, tags +from mozbuild.util import memoize +from moztest.resolve import TEST_SUITES, TestManifestLoader, TestResolver + +from gecko_taskgraph import GECKO +from gecko_taskgraph.util.bugbug import CT_LOW, BugbugTimeoutException, push_schedules + +logger = logging.getLogger(__name__) +here = os.path.abspath(os.path.dirname(__file__)) +resolver = TestResolver.from_environment(cwd=here, loader_cls=TestManifestLoader) + + +def guess_mozinfo_from_task(task, repo=""): + """Attempt to build a mozinfo dict from a task definition. + + This won't be perfect and many values used in the manifests will be missing. But + it should cover most of the major ones and be "good enough" for chunking in the + taskgraph. + + Args: + task (dict): A task definition. + + Returns: + A dict that can be used as a mozinfo replacement. + """ + setting = task["test-setting"] + arch = setting["platform"]["arch"] + p_os = setting["platform"]["os"] + + info = { + "asan": setting["build"].get("asan", False), + "bits": 32 if "32" in arch else 64, + "ccov": setting["build"].get("ccov", False), + "debug": setting["build"]["type"] in ("debug", "debug-isolated-process"), + "e10s": not setting["runtime"].get("1proc", False), + "no-fission": "no-fission" in setting["runtime"].keys(), + "fission": any( + "1proc" not in key or "no-fission" not in key + for key in setting["runtime"].keys() + ), + "headless": "-headless" in task["test-name"], + "condprof": "conditioned_profile" in setting["runtime"].keys(), + "tsan": setting["build"].get("tsan", False), + "xorigin": any("xorigin" in key for key in setting["runtime"].keys()), + "socketprocess_networking": "socketprocess_networking" + in setting["runtime"].keys(), + "nightly_build": repo in ["mozilla-central", "autoland", "try", ""], # trunk + "http3": "http3" in setting["runtime"].keys(), + } + for platform in ("android", "linux", "mac", "win"): + if p_os["name"].startswith(platform): + info["os"] = platform + break + else: + raise ValueError("{} is not a known platform!".format(p_os["name"])) + + # crashreporter is disabled for asan / tsan builds + if info["asan"] or info["tsan"]: + info["crashreporter"] = False + else: + info["crashreporter"] = True + + info["appname"] = "fennec" if info["os"] == "android" else "firefox" + + # guess processor + if arch == "aarch64": + info["processor"] = "aarch64" + elif info["os"] == "android" and "arm" in arch: + info["processor"] = "arm" + elif info["bits"] == 32: + info["processor"] = "x86" + else: + info["processor"] = "x86_64" + + # guess toolkit + if info["os"] == "android": + info["toolkit"] = "android" + elif info["os"] == "win": + info["toolkit"] = "windows" + elif info["os"] == "mac": + info["toolkit"] = "cocoa" + else: + info["toolkit"] = "gtk" + + # guess os_version + os_versions = { + ("linux", "1804"): "18.04", + ("macosx", "1015"): "10.15", + ("macosx", "1100"): "11.00", + ("windows", "7"): "6.1", + ("windows", "10"): "10.0", + } + for (name, old_ver), new_ver in os_versions.items(): + if p_os["name"] == name and p_os["version"] == old_ver: + info["os_version"] = new_ver + break + + return info + + +@memoize +def get_runtimes(platform, suite_name): + if not suite_name or not platform: + raise TypeError("suite_name and platform cannot be empty.") + + base = os.path.join(GECKO, "testing", "runtimes", "manifest-runtimes-{}.json") + for key in ("android", "windows"): + if key in platform: + path = base.format(key) + break + else: + path = base.format("unix") + + if not os.path.exists(path): + raise OSError(f"manifest runtime file at {path} not found.") + + with open(path) as fh: + return json.load(fh)[suite_name] + + +def chunk_manifests(suite, platform, chunks, manifests): + """Run the chunking algorithm. + + Args: + platform (str): Platform used to find runtime info. + chunks (int): Number of chunks to split manifests into. + manifests(list): Manifests to chunk. + + Returns: + A list of length `chunks` where each item contains a list of manifests + that run in that chunk. + """ + manifests = set(manifests) + + if "web-platform-tests" not in suite: + runtimes = { + k: v for k, v in get_runtimes(platform, suite).items() if k in manifests + } + return [ + c[1] + for c in chunk_by_runtime(None, chunks, runtimes).get_chunked_manifests( + manifests + ) + ] + + # Keep track of test paths for each chunk, and the runtime information. + chunked_manifests = [[] for _ in range(chunks)] + + # Spread out the test manifests evenly across all chunks. + for index, key in enumerate(sorted(manifests)): + chunked_manifests[index % chunks].append(key) + + # One last sort by the number of manifests. Chunk size should be more or less + # equal in size. + chunked_manifests.sort(key=lambda x: len(x)) + + # Return just the chunked test paths. + return chunked_manifests + + +class BaseManifestLoader(metaclass=ABCMeta): + def __init__(self, params): + self.params = params + + @abstractmethod + def get_manifests(self, flavor, subsuite, mozinfo): + """Compute which manifests should run for the given flavor, subsuite and mozinfo. + + This function returns skipped manifests separately so that more balanced + chunks can be achieved by only considering "active" manifests in the + chunking algorithm. + + Args: + flavor (str): The suite to run. Values are defined by the 'build_flavor' key + in `moztest.resolve.TEST_SUITES`. + subsuite (str): The subsuite to run or 'undefined' to denote no subsuite. + mozinfo (frozenset): Set of data in the form of (, ) used + for filtering. + + Returns: + A tuple of two manifest lists. The first is the set of active manifests (will + run at least one test. The second is a list of skipped manifests (all tests are + skipped). + """ + + +class DefaultLoader(BaseManifestLoader): + """Load manifests using metadata from the TestResolver.""" + + @memoize + def get_tests(self, suite): + suite_definition = TEST_SUITES[suite] + return list( + resolver.resolve_tests( + flavor=suite_definition["build_flavor"], + subsuite=suite_definition.get("kwargs", {}).get( + "subsuite", "undefined" + ), + ) + ) + + @memoize + def get_manifests(self, suite, mozinfo): + mozinfo = dict(mozinfo) + # Compute all tests for the given suite/subsuite. + tests = self.get_tests(suite) + + # TODO: the only exception here is we schedule webgpu as that is a --tag + if "web-platform-tests" in suite: + manifests = set() + for t in tests: + manifests.add(t["manifest"]) + return { + "active": list(manifests), + "skipped": [], + "other_dirs": dict.fromkeys(manifests, ""), + } + + manifests = {chunk_by_runtime.get_manifest(t) for t in tests} + + filters = None + if mozinfo["condprof"]: + filters = [tags(["condprof"])] + + # Compute the active tests. + m = TestManifest() + m.tests = tests + tests = m.active_tests(disabled=False, exists=False, filters=filters, **mozinfo) + active = {} + # map manifests and 'other' directories included + for t in tests: + mp = chunk_by_runtime.get_manifest(t) + active.setdefault(mp, []) + + if not mp.startswith(t["dir_relpath"]): + active[mp].append(t["dir_relpath"]) + + skipped = manifests - set(active.keys()) + other = {} + for m in active: + if len(active[m]) > 0: + other[m] = list(set(active[m])) + return { + "active": list(active.keys()), + "skipped": list(skipped), + "other_dirs": other, + } + + +class BugbugLoader(DefaultLoader): + """Load manifests using metadata from the TestResolver, and then + filter them based on a query to bugbug.""" + + CONFIDENCE_THRESHOLD = CT_LOW + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.timedout = False + + @memoize + def get_manifests(self, suite, mozinfo): + manifests = super().get_manifests(suite, mozinfo) + + # Don't prune any manifests if we're on a backstop push or there was a timeout. + if self.params["backstop"] or self.timedout: + return manifests + + try: + data = push_schedules(self.params["project"], self.params["head_rev"]) + except BugbugTimeoutException: + logger.warning("Timed out waiting for bugbug, loading all test manifests.") + self.timedout = True + return self.get_manifests(suite, mozinfo) + + bugbug_manifests = { + m + for m, c in data.get("groups", {}).items() + if c >= self.CONFIDENCE_THRESHOLD + } + + manifests["active"] = list(set(manifests["active"]) & bugbug_manifests) + manifests["skipped"] = list(set(manifests["skipped"]) & bugbug_manifests) + return manifests + + +manifest_loaders = { + "bugbug": BugbugLoader, + "default": DefaultLoader, +} + +_loader_cache = {} + + +def get_manifest_loader(name, params): + # Ensure we never create more than one instance of the same loader type for + # performance reasons. + if name in _loader_cache: + return _loader_cache[name] + + loader = manifest_loaders[name](dict(params)) + _loader_cache[name] = loader + return loader diff --git a/taskcluster/gecko_taskgraph/util/copy_task.py b/taskcluster/gecko_taskgraph/util/copy_task.py new file mode 100644 index 0000000000..0aaf43361e --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/copy_task.py @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from mozbuild.util import ReadOnlyDict +from taskgraph.task import Task + +immutable_types = {int, float, bool, str, type(None), ReadOnlyDict} + + +def copy_task(obj): + """ + Perform a deep copy of a task that has a tree-like structure. + + Unlike copy.deepcopy, this does *not* support copying graph-like structure, + but it does it more efficiently than deepcopy. + """ + ty = type(obj) + if ty in immutable_types: + return obj + if ty is dict: + return {k: copy_task(v) for k, v in obj.items()} + if ty is list: + return [copy_task(elt) for elt in obj] + if ty is Task: + task = Task( + kind=copy_task(obj.kind), + label=copy_task(obj.label), + attributes=copy_task(obj.attributes), + task=copy_task(obj.task), + description=copy_task(obj.description), + optimization=copy_task(obj.optimization), + dependencies=copy_task(obj.dependencies), + soft_dependencies=copy_task(obj.soft_dependencies), + if_dependencies=copy_task(obj.if_dependencies), + ) + if obj.task_id: + task.task_id = obj.task_id + return task + raise NotImplementedError(f"copying '{ty}' from '{obj}'") diff --git a/taskcluster/gecko_taskgraph/util/declarative_artifacts.py b/taskcluster/gecko_taskgraph/util/declarative_artifacts.py new file mode 100644 index 0000000000..545472dec3 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/declarative_artifacts.py @@ -0,0 +1,92 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import re + +from gecko_taskgraph.util.scriptworker import ( + generate_beetmover_artifact_map, + generate_beetmover_upstream_artifacts, +) + +_ARTIFACT_ID_PER_PLATFORM = { + "android-aarch64-opt": "{package}-default-arm64-v8a", + "android-arm-opt": "{package}-default-armeabi-v7a", + "android-x86-opt": "{package}-default-x86", + "android-x86_64-opt": "{package}-default-x86_64", + "android-geckoview-fat-aar-opt": "{package}-default", + "android-aarch64-shippable": "{package}{update_channel}-omni-arm64-v8a", + "android-aarch64-shippable-lite": "{package}{update_channel}-arm64-v8a", + "android-arm-shippable": "{package}{update_channel}-omni-armeabi-v7a", + "android-arm-shippable-lite": "{package}{update_channel}-armeabi-v7a", + "android-x86-shippable": "{package}{update_channel}-omni-x86", + "android-x86-shippable-lite": "{package}{update_channel}-x86", + "android-x86_64-shippable": "{package}{update_channel}-omni-x86_64", + "android-x86_64-shippable-lite": "{package}{update_channel}-x86_64", + "android-geckoview-fat-aar-shippable": "{package}{update_channel}-omni", + "android-geckoview-fat-aar-shippable-lite": "{package}{update_channel}", +} + + +def get_geckoview_artifact_map(config, job): + return generate_beetmover_artifact_map( + config, + job, + **get_geckoview_template_vars( + config, + job["attributes"]["build_platform"], + job["maven-package"], + job["attributes"].get("update-channel"), + ), + ) + + +def get_geckoview_upstream_artifacts(config, job, package, platform=""): + if not platform: + platform = job["attributes"]["build_platform"] + upstream_artifacts = generate_beetmover_upstream_artifacts( + config, + job, + platform="", + **get_geckoview_template_vars( + config, platform, package, job["attributes"].get("update-channel") + ), + ) + return [ + {key: value for key, value in upstream_artifact.items() if key != "locale"} + for upstream_artifact in upstream_artifacts + ] + + +def get_geckoview_template_vars(config, platform, package, update_channel): + version_groups = re.match(r"(\d+).(\d+).*", config.params["version"]) + if version_groups: + major_version, minor_version = version_groups.groups() + + return { + "artifact_id": get_geckoview_artifact_id( + config, + platform, + package, + update_channel, + ), + "build_date": config.params["moz_build_date"], + "major_version": major_version, + "minor_version": minor_version, + } + + +def get_geckoview_artifact_id(config, platform, package, update_channel=None): + if update_channel == "release": + update_channel = "" + elif update_channel is not None: + update_channel = f"-{update_channel}" + else: + # For shippable builds, mozharness defaults to using + # "nightly-{project}" for the update channel. For other builds, the + # update channel is not set, but the value is not substituted. + update_channel = "-nightly-{}".format(config.params["project"]) + return _ARTIFACT_ID_PER_PLATFORM[platform].format( + update_channel=update_channel, package=package + ) diff --git a/taskcluster/gecko_taskgraph/util/docker.py b/taskcluster/gecko_taskgraph/util/docker.py new file mode 100644 index 0000000000..e8de7d1fdb --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/docker.py @@ -0,0 +1,333 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import hashlib +import json +import os +import re +import sys +from collections.abc import Mapping +from urllib.parse import quote, urlencode, urlunparse + +import requests +import requests_unixsocket +from mozbuild.util import memoize +from mozpack.archive import create_tar_gz_from_files +from mozpack.files import GeneratedFile +from taskgraph.util.yaml import load_yaml + +from .. import GECKO + +IMAGE_DIR = os.path.join(GECKO, "taskcluster", "docker") + + +def docker_url(path, **kwargs): + docker_socket = os.environ.get("DOCKER_SOCKET", "/var/run/docker.sock") + return urlunparse( + ("http+unix", quote(docker_socket, safe=""), path, "", urlencode(kwargs), "") + ) + + +def post_to_docker(tar, api_path, **kwargs): + """POSTs a tar file to a given docker API path. + + The tar argument can be anything that can be passed to requests.post() + as data (e.g. iterator or file object). + The extra keyword arguments are passed as arguments to the docker API. + """ + # requests-unixsocket doesn't honor requests timeouts + # See https://github.com/msabramo/requests-unixsocket/issues/44 + # We have some large docker images that trigger the default timeout, + # so we increase the requests-unixsocket timeout here. + session = requests.Session() + session.mount( + requests_unixsocket.DEFAULT_SCHEME, + requests_unixsocket.UnixAdapter(timeout=120), + ) + req = session.post( + docker_url(api_path, **kwargs), + data=tar, + stream=True, + headers={"Content-Type": "application/x-tar"}, + ) + if req.status_code != 200: + message = req.json().get("message") + if not message: + message = f"docker API returned HTTP code {req.status_code}" + raise Exception(message) + status_line = {} + + buf = b"" + for content in req.iter_content(chunk_size=None): + if not content: + continue + # Sometimes, a chunk of content is not a complete json, so we cumulate + # with leftovers from previous iterations. + buf += content + try: + data = json.loads(buf) + except Exception: + continue + buf = b"" + # data is sometimes an empty dict. + if not data: + continue + # Mimick how docker itself presents the output. This code was tested + # with API version 1.18 and 1.26. + if "status" in data: + if "id" in data: + if sys.stderr.isatty(): + total_lines = len(status_line) + line = status_line.setdefault(data["id"], total_lines) + n = total_lines - line + if n > 0: + # Move the cursor up n lines. + sys.stderr.write(f"\033[{n}A") + # Clear line and move the cursor to the beginning of it. + sys.stderr.write("\033[2K\r") + sys.stderr.write( + "{}: {} {}\n".format( + data["id"], data["status"], data.get("progress", "") + ) + ) + if n > 1: + # Move the cursor down n - 1 lines, which, considering + # the carriage return on the last write, gets us back + # where we started. + sys.stderr.write(f"\033[{n - 1}B") + else: + status = status_line.get(data["id"]) + # Only print status changes. + if status != data["status"]: + sys.stderr.write("{}: {}\n".format(data["id"], data["status"])) + status_line[data["id"]] = data["status"] + else: + status_line = {} + sys.stderr.write("{}\n".format(data["status"])) + elif "stream" in data: + sys.stderr.write(data["stream"]) + elif "aux" in data: + sys.stderr.write(repr(data["aux"])) + elif "error" in data: + sys.stderr.write("{}\n".format(data["error"])) + # Sadly, docker doesn't give more than a plain string for errors, + # so the best we can do to propagate the error code from the command + # that failed is to parse the error message... + errcode = 1 + m = re.search(r"returned a non-zero code: (\d+)", data["error"]) + if m: + errcode = int(m.group(1)) + sys.exit(errcode) + else: + raise NotImplementedError(repr(data)) + sys.stderr.flush() + + +def docker_image(name, by_tag=False): + """ + Resolve in-tree prebuilt docker image to ``/@sha256:``, + or ``/:`` if `by_tag` is `True`. + """ + try: + with open(os.path.join(IMAGE_DIR, name, "REGISTRY")) as f: + registry = f.read().strip() + except OSError: + with open(os.path.join(IMAGE_DIR, "REGISTRY")) as f: + registry = f.read().strip() + + if not by_tag: + hashfile = os.path.join(IMAGE_DIR, name, "HASH") + try: + with open(hashfile) as f: + return f"{registry}/{name}@{f.read().strip()}" + except OSError: + raise Exception(f"Failed to read HASH file {hashfile}") + + try: + with open(os.path.join(IMAGE_DIR, name, "VERSION")) as f: + tag = f.read().strip() + except OSError: + tag = "latest" + return f"{registry}/{name}:{tag}" + + +class VoidWriter: + """A file object with write capabilities that does nothing with the written + data.""" + + def write(self, buf): + pass + + +def generate_context_hash(topsrcdir, image_path, image_name, args): + """Generates a sha256 hash for context directory used to build an image.""" + + return stream_context_tar( + topsrcdir, image_path, VoidWriter(), image_name, args=args + ) + + +class HashingWriter: + """A file object with write capabilities that hashes the written data at + the same time it passes down to a real file object.""" + + def __init__(self, writer): + self._hash = hashlib.sha256() + self._writer = writer + + def write(self, buf): + self._hash.update(buf) + self._writer.write(buf) + + def hexdigest(self): + return self._hash.hexdigest() + + +def create_context_tar(topsrcdir, context_dir, out_path, image_name, args): + """Create a context tarball. + + A directory ``context_dir`` containing a Dockerfile will be assembled into + a gzipped tar file at ``out_path``. + + We also scan the source Dockerfile for special syntax that influences + context generation. + + If a line in the Dockerfile has the form ``# %include ``, + the relative path specified on that line will be matched against + files in the source repository and added to the context under the + path ``topsrcdir/``. If an entry is a directory, we add all files + under that directory. + + Returns the SHA-256 hex digest of the created archive. + """ + with open(out_path, "wb") as fh: + return stream_context_tar( + topsrcdir, + context_dir, + fh, + image_name=image_name, + args=args, + ) + + +def stream_context_tar(topsrcdir, context_dir, out_file, image_name, args): + """Like create_context_tar, but streams the tar file to the `out_file` file + object.""" + archive_files = {} + content = [] + + context_dir = os.path.join(topsrcdir, context_dir) + + for root, dirs, files in os.walk(context_dir): + for f in files: + source_path = os.path.join(root, f) + archive_path = source_path[len(context_dir) + 1 :] + archive_files[archive_path] = source_path + + # Parse Dockerfile for special syntax of extra files to include. + with open(os.path.join(context_dir, "Dockerfile"), "r") as fh: + for line in fh: + content.append(line) + + if not line.startswith("# %include"): + continue + + p = line[len("# %include ") :].strip() + if os.path.isabs(p): + raise Exception("extra include path cannot be absolute: %s" % p) + + fs_path = os.path.normpath(os.path.join(topsrcdir, p)) + # Check for filesystem traversal exploits. + if not fs_path.startswith(topsrcdir): + raise Exception("extra include path outside topsrcdir: %s" % p) + + if not os.path.exists(fs_path): + raise Exception("extra include path does not exist: %s" % p) + + if os.path.isdir(fs_path): + for root, dirs, files in os.walk(fs_path): + for f in files: + source_path = os.path.join(root, f) + rel = source_path[len(fs_path) + 1 :] + archive_path = os.path.join("topsrcdir", p, rel) + archive_files[archive_path] = source_path + else: + archive_path = os.path.join("topsrcdir", p) + archive_files[archive_path] = fs_path + + archive_files["Dockerfile"] = GeneratedFile("".join(content).encode("utf-8")) + + writer = HashingWriter(out_file) + create_tar_gz_from_files(writer, archive_files, f"{image_name}.tar") + return writer.hexdigest() + + +class ImagePathsMap(Mapping): + """ImagePathsMap contains the mapping of Docker image names to their + context location in the filesystem. The register function allows Thunderbird + to define additional images under comm/taskcluster. + """ + + def __init__(self, config_path, image_dir=IMAGE_DIR): + config = load_yaml(GECKO, config_path) + self.__update_image_paths(config["jobs"], image_dir) + + def __getitem__(self, key): + return self.__dict__[key] + + def __iter__(self): + return iter(self.__dict__) + + def __len__(self): + return len(self.__dict__) + + def __update_image_paths(self, jobs, image_dir): + self.__dict__.update( + { + k: os.path.join(image_dir, v.get("definition", k)) + for k, v in jobs.items() + } + ) + + def register(self, jobs_config_path, image_dir): + """Register additional image_paths. In this case, there is no 'jobs' + key in the loaded YAML as this file is loaded via jobs-from in kind.yml.""" + jobs = load_yaml(GECKO, jobs_config_path) + self.__update_image_paths(jobs, image_dir) + + +image_paths = ImagePathsMap("taskcluster/ci/docker-image/kind.yml") + + +def image_path(name): + if name in image_paths: + return image_paths[name] + return os.path.join(IMAGE_DIR, name) + + +@memoize +def parse_volumes(image): + """Parse VOLUME entries from a Dockerfile for an image.""" + volumes = set() + + path = image_path(image) + + with open(os.path.join(path, "Dockerfile"), "rb") as fh: + for line in fh: + line = line.strip() + # We assume VOLUME definitions don't use ARGS. + if not line.startswith(b"VOLUME "): + continue + + v = line.split(None, 1)[1] + if v.startswith(b"["): + raise ValueError( + "cannot parse array syntax for VOLUME; " + "convert to multiple entries" + ) + + volumes |= {v.decode("utf-8") for v in v.split()} + + return volumes diff --git a/taskcluster/gecko_taskgraph/util/hash.py b/taskcluster/gecko_taskgraph/util/hash.py new file mode 100644 index 0000000000..485c9a7c48 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/hash.py @@ -0,0 +1,68 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import hashlib + +import mozpack.path as mozpath +from mozbuild.util import memoize +from mozversioncontrol import get_repository_object + + +@memoize +def hash_path(path): + """Hash a single file. + + Returns the SHA-256 hash in hex form. + """ + with open(path, mode="rb") as fh: + return hashlib.sha256(fh.read()).hexdigest() + + +@memoize +def get_file_finder(base_path): + from pathlib import Path + + repo = get_repository_object(base_path) + if repo: + files = repo.get_tracked_files_finder(base_path) + if files: + return files + else: + return None + else: + return get_repository_object(Path(base_path)).get_tracked_files_finder( + base_path + ) + + +def hash_paths(base_path, patterns): + """ + Give a list of path patterns, return a digest of the contents of all + the corresponding files, similarly to git tree objects or mercurial + manifests. + + Each file is hashed. The list of all hashes and file paths is then + itself hashed to produce the result. + """ + finder = get_file_finder(base_path) + h = hashlib.sha256() + files = {} + if finder: + for pattern in patterns: + found = list(finder.find(pattern)) + if found: + files.update(found) + else: + raise Exception("%s did not match anything" % pattern) + for path in sorted(files.keys()): + if path.endswith((".pyc", ".pyd", ".pyo")): + continue + h.update( + "{} {}\n".format( + hash_path(mozpath.abspath(mozpath.join(base_path, path))), + mozpath.normsep(path), + ).encode("utf-8") + ) + + return h.hexdigest() diff --git a/taskcluster/gecko_taskgraph/util/hg.py b/taskcluster/gecko_taskgraph/util/hg.py new file mode 100644 index 0000000000..18a92fbd0d --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/hg.py @@ -0,0 +1,139 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import subprocess + +import requests +from mozbuild.util import memoize +from redo import retry + +logger = logging.getLogger(__name__) + +PUSHLOG_CHANGESET_TMPL = ( + "{repository}/json-pushes?version=2&changeset={revision}&tipsonly=1" +) +PUSHLOG_PUSHES_TMPL = ( + "{repository}/json-pushes/?version=2&startID={push_id_start}&endID={push_id_end}" +) + + +def _query_pushlog(url): + response = retry( + requests.get, + attempts=5, + sleeptime=10, + args=(url,), + kwargs={"timeout": 60, "headers": {"User-Agent": "TaskCluster"}}, + ) + + return response.json()["pushes"] + + +def find_hg_revision_push_info(repository, revision): + """Given the parameters for this action and a revision, find the + pushlog_id of the revision.""" + url = PUSHLOG_CHANGESET_TMPL.format(repository=repository, revision=revision) + + pushes = _query_pushlog(url) + + if len(pushes) != 1: + raise RuntimeError( + "Found {} pushlog_ids, expected 1, for {} revision {}: {}".format( + len(pushes), repository, revision, pushes + ) + ) + + pushid = list(pushes.keys())[0] + return { + "pushdate": pushes[pushid]["date"], + "pushid": pushid, + "user": pushes[pushid]["user"], + } + + +@memoize +def get_push_data(repository, project, push_id_start, push_id_end): + url = PUSHLOG_PUSHES_TMPL.format( + repository=repository, + push_id_start=push_id_start - 1, + push_id_end=push_id_end, + ) + + try: + pushes = _query_pushlog(url) + + return { + push_id: pushes[str(push_id)] + for push_id in range(push_id_start, push_id_end + 1) + } + + # In the event of request times out, requests will raise a TimeoutError. + except requests.exceptions.Timeout: + logger.warning("json-pushes timeout") + + # In the event of a network problem (e.g. DNS failure, refused connection, etc), + # requests will raise a ConnectionError. + except requests.exceptions.ConnectionError: + logger.warning("json-pushes connection error") + + # In the event of the rare invalid HTTP response(e.g 404, 401), + # requests will raise an HTTPError exception + except requests.exceptions.HTTPError: + logger.warning("Bad Http response") + + # When we get invalid JSON (i.e. 500 error), it results in a ValueError (bug 1313426) + except ValueError as error: + logger.warning(f"Invalid JSON, possible server error: {error}") + + # We just print the error out as a debug message if we failed to catch the exception above + except requests.exceptions.RequestException as error: + logger.warning(error) + + return None + + +@memoize +def get_json_automationrelevance(repository, revision): + url = "{}/json-automationrelevance/{}".format(repository.rstrip("/"), revision) + logger.debug("Querying version control for metadata: %s", url) + + def get_automationrelevance(): + response = requests.get(url, timeout=30) + return response.json() + + return retry(get_automationrelevance, attempts=10, sleeptime=10) + + +def get_hg_revision_branch(root, revision): + """Given the parameters for a revision, find the hg_branch (aka + relbranch) of the revision.""" + return subprocess.check_output( + [ + "hg", + "identify", + "-T", + "{branch}", + "--rev", + revision, + ], + cwd=root, + universal_newlines=True, + ) + + +# For these functions, we assume that run-task has correctly checked out the +# revision indicated by GECKO_HEAD_REF, so all that remains is to see what the +# current revision is. Mercurial refers to that as `.`. +def get_hg_commit_message(root, rev="."): + return subprocess.check_output( + ["hg", "log", "-r", rev, "-T", "{desc}"], cwd=root, universal_newlines=True + ) + + +def calculate_head_rev(root): + return subprocess.check_output( + ["hg", "log", "-r", ".", "-T", "{node}"], cwd=root, universal_newlines=True + ) diff --git a/taskcluster/gecko_taskgraph/util/partials.py b/taskcluster/gecko_taskgraph/util/partials.py new file mode 100644 index 0000000000..1a3affcc42 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/partials.py @@ -0,0 +1,297 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging + +import redo +import requests + +from gecko_taskgraph.util.scriptworker import ( + BALROG_SCOPE_ALIAS_TO_PROJECT, + BALROG_SERVER_SCOPES, +) + +logger = logging.getLogger(__name__) + +PLATFORM_RENAMES = { + "windows2012-32": "win32", + "windows2012-64": "win64", + "windows2012-aarch64": "win64-aarch64", + "osx-cross": "macosx64", + "osx": "macosx64", +} + +BALROG_PLATFORM_MAP = { + "linux": ["Linux_x86-gcc3"], + "linux32": ["Linux_x86-gcc3"], + "linux64": ["Linux_x86_64-gcc3"], + "linux64-asan-reporter": ["Linux_x86_64-gcc3-asan"], + "macosx64": [ + "Darwin_x86_64-gcc3-u-i386-x86_64", + "Darwin_x86-gcc3-u-i386-x86_64", + "Darwin_aarch64-gcc3", + "Darwin_x86-gcc3", + "Darwin_x86_64-gcc3", + ], + "win32": ["WINNT_x86-msvc", "WINNT_x86-msvc-x86", "WINNT_x86-msvc-x64"], + "win64": ["WINNT_x86_64-msvc", "WINNT_x86_64-msvc-x64"], + "win64-asan-reporter": ["WINNT_x86_64-msvc-x64-asan"], + "win64-aarch64": [ + "WINNT_aarch64-msvc-aarch64", + ], +} + +FTP_PLATFORM_MAP = { + "Darwin_x86-gcc3": "mac", + "Darwin_x86-gcc3-u-i386-x86_64": "mac", + "Darwin_x86_64-gcc3": "mac", + "Darwin_x86_64-gcc3-u-i386-x86_64": "mac", + "Darwin_aarch64-gcc3": "mac", + "Linux_x86-gcc3": "linux-i686", + "Linux_x86_64-gcc3": "linux-x86_64", + "Linux_x86_64-gcc3-asan": "linux-x86_64-asan-reporter", + "WINNT_x86_64-msvc-x64-asan": "win64-asan-reporter", + "WINNT_x86-msvc": "win32", + "WINNT_x86-msvc-x64": "win32", + "WINNT_x86-msvc-x86": "win32", + "WINNT_x86_64-msvc": "win64", + "WINNT_x86_64-msvc-x64": "win64", + "WINNT_aarch64-msvc-aarch64": "win64-aarch64", +} + + +def get_balrog_platform_name(platform): + """Convert build platform names into balrog platform names. + + Remove known values instead to catch aarch64 and other platforms + that may be added. + """ + removals = ["-devedition", "-shippable"] + for remove in removals: + platform = platform.replace(remove, "") + return PLATFORM_RENAMES.get(platform, platform) + + +def _sanitize_platform(platform): + platform = get_balrog_platform_name(platform) + if platform not in BALROG_PLATFORM_MAP: + return platform + return BALROG_PLATFORM_MAP[platform][0] + + +def get_builds(release_history, platform, locale): + """Examine cached balrog release history and return the list of + builds we need to generate diffs from""" + platform = _sanitize_platform(platform) + return release_history.get(platform, {}).get(locale, {}) + + +def get_partials_artifacts_from_params(release_history, platform, locale): + platform = _sanitize_platform(platform) + return [ + (artifact, details.get("previousVersion", None)) + for artifact, details in release_history.get(platform, {}) + .get(locale, {}) + .items() + ] + + +def get_partials_info_from_params(release_history, platform, locale): + platform = _sanitize_platform(platform) + + artifact_map = {} + for k in release_history.get(platform, {}).get(locale, {}): + details = release_history[platform][locale][k] + attributes = ("buildid", "previousBuildNumber", "previousVersion") + artifact_map[k] = { + attr: details[attr] for attr in attributes if attr in details + } + return artifact_map + + +def _retry_on_http_errors(url, verify, params, errors): + if params: + params_str = "&".join("=".join([k, str(v)]) for k, v in params.items()) + else: + params_str = "" + logger.info("Connecting to %s?%s", url, params_str) + for _ in redo.retrier(sleeptime=5, max_sleeptime=30, attempts=10): + try: + req = requests.get(url, verify=verify, params=params, timeout=10) + req.raise_for_status() + return req + except requests.HTTPError as e: + if e.response.status_code in errors: + logger.exception( + "Got HTTP %s trying to reach %s", e.response.status_code, url + ) + else: + raise + else: + raise Exception(f"Cannot connect to {url}!") + + +def get_sorted_releases(product, branch): + """Returns a list of release names from Balrog. + :param product: product name, AKA appName + :param branch: branch name, e.g. mozilla-central + :return: a sorted list of release names, most recent first. + """ + url = f"{_get_balrog_api_root(branch)}/releases" + params = { + "product": product, + # Adding -nightly-2 (2 stands for the beginning of build ID + # based on date) should filter out release and latest blobs. + # This should be changed to -nightly-3 in 3000 ;) + "name_prefix": f"{product}-{branch}-nightly-2", + "names_only": True, + } + req = _retry_on_http_errors(url=url, verify=True, params=params, errors=[500]) + releases = req.json()["names"] + releases = sorted(releases, reverse=True) + return releases + + +def get_release_builds(release, branch): + url = f"{_get_balrog_api_root(branch)}/releases/{release}" + req = _retry_on_http_errors(url=url, verify=True, params=None, errors=[500]) + return req.json() + + +def _get_balrog_api_root(branch): + # Query into the scopes scriptworker uses to make sure we check against the same balrog server + # That our jobs would use. + scope = None + for alias, projects in BALROG_SCOPE_ALIAS_TO_PROJECT: + if branch in projects and alias in BALROG_SERVER_SCOPES: + scope = BALROG_SERVER_SCOPES[alias] + break + else: + scope = BALROG_SERVER_SCOPES["default"] + + if scope == "balrog:server:dep": + return "https://stage.balrog.nonprod.cloudops.mozgcp.net/api/v1" + return "https://aus5.mozilla.org/api/v1" + + +def find_localtest(fileUrls): + for channel in fileUrls: + if "-localtest" in channel: + return channel + + +def populate_release_history( + product, branch, maxbuilds=4, maxsearch=10, partial_updates=None +): + # Assuming we are using release branches when we know the list of previous + # releases in advance + if partial_updates is not None: + return _populate_release_history( + product, branch, partial_updates=partial_updates + ) + return _populate_nightly_history( + product, branch, maxbuilds=maxbuilds, maxsearch=maxsearch + ) + + +def _populate_nightly_history(product, branch, maxbuilds=4, maxsearch=10): + """Find relevant releases in Balrog + Not all releases have all platforms and locales, due + to Taskcluster migration. + + Args: + product (str): capitalized product name, AKA appName, e.g. Firefox + branch (str): branch name (mozilla-central) + maxbuilds (int): Maximum number of historical releases to populate + maxsearch(int): Traverse at most this many releases, to avoid + working through the entire history. + Returns: + json object based on data from balrog api + + results = { + 'platform1': { + 'locale1': { + 'buildid1': mar_url, + 'buildid2': mar_url, + 'buildid3': mar_url, + }, + 'locale2': { + 'target.partial-1.mar': {'buildid1': 'mar_url'}, + } + }, + 'platform2': { + } + } + """ + last_releases = get_sorted_releases(product, branch) + + partial_mar_tmpl = "target.partial-{}.mar" + + builds = dict() + for release in last_releases[:maxsearch]: + # maxbuilds in all categories, don't make any more queries + full = len(builds) > 0 and all( + len(builds[platform][locale]) >= maxbuilds + for platform in builds + for locale in builds[platform] + ) + if full: + break + history = get_release_builds(release, branch) + + for platform in history["platforms"]: + if "alias" in history["platforms"][platform]: + continue + if platform not in builds: + builds[platform] = dict() + for locale in history["platforms"][platform]["locales"]: + if locale not in builds[platform]: + builds[platform][locale] = dict() + if len(builds[platform][locale]) >= maxbuilds: + continue + buildid = history["platforms"][platform]["locales"][locale]["buildID"] + url = history["platforms"][platform]["locales"][locale]["completes"][0][ + "fileUrl" + ] + nextkey = len(builds[platform][locale]) + 1 + builds[platform][locale][partial_mar_tmpl.format(nextkey)] = { + "buildid": buildid, + "mar_url": url, + } + return builds + + +def _populate_release_history(product, branch, partial_updates): + builds = dict() + for version, release in partial_updates.items(): + prev_release_blob = "{product}-{version}-build{build_number}".format( + product=product, version=version, build_number=release["buildNumber"] + ) + partial_mar_key = f"target-{version}.partial.mar" + history = get_release_builds(prev_release_blob, branch) + # use one of the localtest channels to avoid relying on bouncer + localtest = find_localtest(history["fileUrls"]) + url_pattern = history["fileUrls"][localtest]["completes"]["*"] + + for platform in history["platforms"]: + if "alias" in history["platforms"][platform]: + continue + if platform not in builds: + builds[platform] = dict() + for locale in history["platforms"][platform]["locales"]: + if locale not in builds[platform]: + builds[platform][locale] = dict() + buildid = history["platforms"][platform]["locales"][locale]["buildID"] + url = url_pattern.replace( + "%OS_FTP%", FTP_PLATFORM_MAP[platform] + ).replace("%LOCALE%", locale) + builds[platform][locale][partial_mar_key] = { + "buildid": buildid, + "mar_url": url, + "previousVersion": version, + "previousBuildNumber": release["buildNumber"], + "product": product, + } + return builds diff --git a/taskcluster/gecko_taskgraph/util/partners.py b/taskcluster/gecko_taskgraph/util/partners.py new file mode 100644 index 0000000000..2546e1ae88 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/partners.py @@ -0,0 +1,555 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import json +import logging +import os +import xml.etree.ElementTree as ET +from urllib.parse import urlencode + +import requests +import yaml +from redo import retry +from taskgraph.util.schema import resolve_keyed_by + +from gecko_taskgraph.util.attributes import release_level +from gecko_taskgraph.util.copy_task import copy_task + +# Suppress chatty requests logging +logging.getLogger("requests").setLevel(logging.WARNING) + +log = logging.getLogger(__name__) + +GITHUB_API_ENDPOINT = "https://api.github.com/graphql" + +""" +LOGIN_QUERY, MANIFEST_QUERY, and REPACK_CFG_QUERY are all written to the Github v4 API, +which users GraphQL. See https://developer.github.com/v4/ +""" + +LOGIN_QUERY = """query { + viewer { + login + name + } +} +""" + +# Returns the contents of default.xml from a manifest repository +MANIFEST_QUERY = """query { + repository(owner:"%(owner)s", name:"%(repo)s") { + object(expression: "master:%(file)s") { + ... on Blob { + text + } + } + } +} +""" +# Example response: +# { +# "data": { +# "repository": { +# "object": { +# "text": "\n\n " + +# "\n " + +# "\n\n " + +# "\n \n \n\n" +# } +# } +# } +# } + +# Returns the contents of desktop/*/repack.cfg for a partner repository +REPACK_CFG_QUERY = """query{ + repository(owner:"%(owner)s", name:"%(repo)s") { + object(expression: "%(revision)s:desktop/"){ + ... on Tree { + entries { + name + object { + ... on Tree { + entries { + name + object { + ... on Blob { + text + } + } + } + } + } + } + } + } + } +} +""" +# Example response: +# { +# "data": { +# "repository": { +# "object": { +# "entries": [ +# { +# "name": "mozilla-EME-free", +# "object": { +# "entries": [ +# { +# "name": "distribution", +# "object": {} +# }, +# { +# "name": "repack.cfg", +# "object": { +# "text": "aus=\"mozilla-EMEfree\"\ndist_id=\"mozilla-EMEfree\"\n" + +# "dist_version=\"1.0\"\nlinux-i686=true\nlinux-x86_64=true\n" + +# " locales=\"ach af de en-US\"\nmac=true\nwin32=true\nwin64=true\n" + +# "output_dir=\"%(platform)s-EME-free/%(locale)s\"\n\n" + +# "# Upload params\nbucket=\"net-mozaws-prod-delivery-firefox\"\n" + +# "upload_to_candidates=true\n" +# } +# } +# ] +# } +# } +# ] +# } +# } +# } +# } + +# Map platforms in repack.cfg into their equivalents in taskcluster +TC_PLATFORM_PER_FTP = { + "linux-i686": "linux-shippable", + "linux-x86_64": "linux64-shippable", + "mac": "macosx64-shippable", + "win32": "win32-shippable", + "win64": "win64-shippable", + "win64-aarch64": "win64-aarch64-shippable", +} + +TASKCLUSTER_PROXY_SECRET_ROOT = "http://taskcluster/secrets/v1/secret" + +LOCALES_FILE = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), + "browser", + "locales", + "l10n-changesets.json", +) + +# cache data at the module level +partner_configs = {} + + +def get_token(params): + """We use a Personal Access Token from Github to lookup partner config. No extra scopes are + needed on the token to read public repositories, but need the 'repo' scope to see private + repositories. This is not fine grained and also grants r/w access, but is revoked at the repo + level. + """ + + # Allow for local taskgraph debugging + if os.environ.get("GITHUB_API_TOKEN"): + return os.environ["GITHUB_API_TOKEN"] + + # The 'usual' method - via taskClusterProxy for decision tasks + url = "{secret_root}/project/releng/gecko/build/level-{level}/partner-github-api".format( + secret_root=TASKCLUSTER_PROXY_SECRET_ROOT, **params + ) + try: + resp = retry( + requests.get, + attempts=2, + sleeptime=10, + args=(url,), + kwargs={"timeout": 60, "headers": ""}, + ) + j = resp.json() + return j["secret"]["key"] + except (requests.ConnectionError, ValueError, KeyError): + raise RuntimeError("Could not get Github API token to lookup partner data") + + +def query_api(query, token): + """Make a query with a Github auth header, returning the json""" + headers = {"Authorization": "bearer %s" % token} + r = requests.post(GITHUB_API_ENDPOINT, json={"query": query}, headers=headers) + r.raise_for_status() + + j = r.json() + if "errors" in j: + raise RuntimeError("Github query error - %s", j["errors"]) + return j + + +def check_login(token): + log.debug("Checking we have a valid login") + query_api(LOGIN_QUERY, token) + + +def get_repo_params(repo): + """Parse the organisation and repo name from an https or git url for a repo""" + if repo.startswith("https"): + # eg https://github.com/mozilla-partners/mozilla-EME-free + return repo.rsplit("/", 2)[-2:] + if repo.startswith("git@"): + # eg git@github.com:mozilla-partners/mailru.git + repo = repo.replace(".git", "") + return repo.split(":")[-1].split("/") + + +def get_partners(manifestRepo, token): + """Given the url to a manifest repository, retrieve the default.xml and parse it into a + list of partner repos. + """ + log.debug("Querying for manifest default.xml in %s", manifestRepo) + owner, repo = get_repo_params(manifestRepo) + query = MANIFEST_QUERY % {"owner": owner, "repo": repo, "file": "default.xml"} + raw_manifest = query_api(query, token) + log.debug("Raw manifest: %s", raw_manifest) + if not raw_manifest["data"]["repository"]: + raise RuntimeError( + "Couldn't load partner manifest at %s, insufficient permissions ?" + % manifestRepo + ) + e = ET.fromstring(raw_manifest["data"]["repository"]["object"]["text"]) + + remotes = {} + partners = {} + for child in e: + if child.tag == "remote": + name = child.attrib["name"] + url = child.attrib["fetch"] + remotes[name] = url + log.debug("Added remote %s at %s", name, url) + elif child.tag == "project": + # we don't need to check any code repos + if "scripts" in child.attrib["path"]: + continue + owner, _ = get_repo_params(remotes[child.attrib["remote"]] + "_") + partner_url = { + "owner": owner, + "repo": child.attrib["name"], + "revision": child.attrib["revision"], + } + partners[child.attrib["name"]] = partner_url + log.debug( + "Added partner %s at revision %s" + % (partner_url["repo"], partner_url["revision"]) + ) + return partners + + +def parse_config(data): + """Parse a single repack.cfg file into a python dictionary. + data is contents of the file, in "foo=bar\nbaz=buzz" style. We do some translation on + locales and platforms data, otherwise passthrough + """ + ALLOWED_KEYS = ( + "locales", + "platforms", + "upload_to_candidates", + "repack_stub_installer", + "publish_to_releases", + ) + config = {"platforms": []} + for l in data.splitlines(): + if "=" in l: + l = str(l) + key, value = l.split("=", 1) + value = value.strip("'\"").rstrip("'\"") + if key in TC_PLATFORM_PER_FTP.keys(): + if value.lower() == "true": + config["platforms"].append(TC_PLATFORM_PER_FTP[key]) + continue + if key not in ALLOWED_KEYS: + continue + if key == "locales": + # a list please + value = value.split(" ") + config[key] = value + return config + + +def get_repack_configs(repackRepo, token): + """For a partner repository, retrieve all the repack.cfg files and parse them into a dict""" + log.debug("Querying for configs in %s", repackRepo) + query = REPACK_CFG_QUERY % repackRepo + raw_configs = query_api(query, token) + raw_configs = raw_configs["data"]["repository"]["object"]["entries"] + + configs = {} + for sub_config in raw_configs: + name = sub_config["name"] + for file in sub_config["object"].get("entries", []): + if file["name"] != "repack.cfg": + continue + configs[name] = parse_config(file["object"]["text"]) + return configs + + +def get_attribution_config(manifestRepo, token): + log.debug("Querying for manifest attribution_config.yml in %s", manifestRepo) + owner, repo = get_repo_params(manifestRepo) + query = MANIFEST_QUERY % { + "owner": owner, + "repo": repo, + "file": "attribution_config.yml", + } + raw_manifest = query_api(query, token) + if not raw_manifest["data"]["repository"]: + raise RuntimeError( + "Couldn't load partner manifest at %s, insufficient permissions ?" + % manifestRepo + ) + # no file has been set up, gracefully continue + if raw_manifest["data"]["repository"]["object"] is None: + log.debug("No attribution_config.yml file found") + return {} + + return yaml.safe_load(raw_manifest["data"]["repository"]["object"]["text"]) + + +def get_partner_config_by_url(manifest_url, kind, token, partner_subset=None): + """Retrieve partner data starting from the manifest url, which points to a repository + containing a default.xml that is intended to be drive the Google tool 'repo'. It + descends into each partner repo to lookup and parse the repack.cfg file(s). + + If partner_subset is a list of sub_config names only return data for those. + + Supports caching data by kind to avoid repeated requests, relying on the related kinds for + partner repacking, signing, repackage, repackage signing all having the same kind prefix. + """ + if not manifest_url: + raise RuntimeError(f"Manifest url for {kind} not defined") + if kind not in partner_configs: + log.info("Looking up data for %s from %s", kind, manifest_url) + check_login(token) + if kind == "release-partner-attribution": + partner_configs[kind] = get_attribution_config(manifest_url, token) + else: + partners = get_partners(manifest_url, token) + + partner_configs[kind] = {} + for partner, partner_url in partners.items(): + if partner_subset and partner not in partner_subset: + continue + partner_configs[kind][partner] = get_repack_configs(partner_url, token) + + return partner_configs[kind] + + +def check_if_partners_enabled(config, tasks): + if ( + ( + config.params["release_enable_partner_repack"] + and config.kind.startswith("release-partner-repack") + ) + or ( + config.params["release_enable_partner_attribution"] + and config.kind.startswith("release-partner-attribution") + ) + or ( + config.params["release_enable_emefree"] + and config.kind.startswith("release-eme-free-") + ) + ): + yield from tasks + + +def get_partner_config_by_kind(config, kind): + """Retrieve partner data starting from the manifest url, which points to a repository + containing a default.xml that is intended to be drive the Google tool 'repo'. It + descends into each partner repo to lookup and parse the repack.cfg file(s). + + Supports caching data by kind to avoid repeated requests, relying on the related kinds for + partner repacking, signing, repackage, repackage signing all having the same kind prefix. + """ + partner_subset = config.params["release_partners"] + partner_configs = config.params["release_partner_config"] or {} + + # TODO eme-free should be a partner; we shouldn't care about per-kind + for k in partner_configs: + if kind.startswith(k): + kind_config = partner_configs[k] + break + else: + return {} + # if we're only interested in a subset of partners we remove the rest + if partner_subset: + if kind.startswith("release-partner-repack"): + # TODO - should be fatal to have an unknown partner in partner_subset + for partner in [p for p in kind_config.keys() if p not in partner_subset]: + del kind_config[partner] + elif kind.startswith("release-partner-attribution") and isinstance( + kind_config, dict + ): + all_configs = copy_task(kind_config.get("configs", [])) + kind_config["configs"] = [] + for this_config in all_configs: + if this_config["campaign"] in partner_subset: + kind_config["configs"].append(this_config) + return kind_config + + +def _fix_subpartner_locales(orig_config, all_locales): + subpartner_config = copy_task(orig_config) + # Get an ordered list of subpartner locales that is a subset of all_locales + subpartner_config["locales"] = sorted( + list(set(orig_config["locales"]) & set(all_locales)) + ) + return subpartner_config + + +def fix_partner_config(orig_config): + pc = {} + with open(LOCALES_FILE) as fh: + all_locales = list(json.load(fh).keys()) + # l10n-changesets.json doesn't include en-US, but the repack list does + if "en-US" not in all_locales: + all_locales.append("en-US") + for kind, kind_config in orig_config.items(): + if kind == "release-partner-attribution": + pc[kind] = {} + if kind_config: + pc[kind] = {"defaults": kind_config["defaults"]} + for config in kind_config["configs"]: + # Make sure our locale list is a subset of all_locales + pc[kind].setdefault("configs", []).append( + _fix_subpartner_locales(config, all_locales) + ) + else: + for partner, partner_config in kind_config.items(): + for subpartner, subpartner_config in partner_config.items(): + # get rid of empty subpartner configs + if not subpartner_config: + continue + # Make sure our locale list is a subset of all_locales + pc.setdefault(kind, {}).setdefault(partner, {})[ + subpartner + ] = _fix_subpartner_locales(subpartner_config, all_locales) + return pc + + +# seems likely this exists elsewhere already +def get_ftp_platform(platform): + if platform.startswith("win32"): + return "win32" + if platform.startswith("win64-aarch64"): + return "win64-aarch64" + if platform.startswith("win64"): + return "win64" + if platform.startswith("macosx"): + return "mac" + if platform.startswith("linux-"): + return "linux-i686" + if platform.startswith("linux64"): + return "linux-x86_64" + raise ValueError(f"Unimplemented platform {platform}") + + +# Ugh +def locales_per_build_platform(build_platform, locales): + if build_platform.startswith("mac"): + exclude = ["ja"] + else: + exclude = ["ja-JP-mac"] + return [locale for locale in locales if locale not in exclude] + + +def get_partner_url_config(parameters, graph_config): + partner_url_config = copy_task(graph_config["partner-urls"]) + substitutions = { + "release-product": parameters["release_product"], + "release-level": release_level(parameters["project"]), + "release-type": parameters["release_type"], + } + resolve_keyed_by( + partner_url_config, + "release-eme-free-repack", + "eme-free manifest_url", + **substitutions, + ) + resolve_keyed_by( + partner_url_config, + "release-partner-repack", + "partner manifest url", + **substitutions, + ) + resolve_keyed_by( + partner_url_config, + "release-partner-attribution", + "partner attribution url", + **substitutions, + ) + return partner_url_config + + +def get_repack_ids_by_platform(config, build_platform): + partner_config = get_partner_config_by_kind(config, config.kind) + combinations = [] + for partner, subconfigs in partner_config.items(): + for sub_config_name, sub_config in subconfigs.items(): + if build_platform not in sub_config.get("platforms", []): + continue + locales = locales_per_build_platform( + build_platform, sub_config.get("locales", []) + ) + for locale in locales: + combinations.append(f"{partner}/{sub_config_name}/{locale}") + return sorted(combinations) + + +def get_partners_to_be_published(config): + # hardcoded kind because release-bouncer-aliases doesn't match otherwise + partner_config = get_partner_config_by_kind(config, "release-partner-repack") + partners = [] + for partner, subconfigs in partner_config.items(): + for sub_config_name, sub_config in subconfigs.items(): + if sub_config.get("publish_to_releases"): + partners.append((partner, sub_config_name, sub_config["platforms"])) + return partners + + +def apply_partner_priority(config, jobs): + priority = None + # Reduce the priority of the partner repack jobs because they don't block QE. Meanwhile + # leave EME-free jobs alone because they do, and they'll get the branch priority like the rest + # of the release. Only bother with this in production, not on staging releases on try. + # medium is the same as mozilla-central, see taskcluster/ci/config.yml. ie higher than + # integration branches because we don't want to wait a lot for the graph to be done, but + # for multiple releases the partner tasks always wait for non-partner. + if ( + config.kind.startswith( + ("release-partner-repack", "release-partner-attribution") + ) + and release_level(config.params["project"]) == "production" + ): + priority = "medium" + for job in jobs: + if priority: + job["priority"] = priority + yield job + + +def generate_attribution_code(defaults, partner): + params = { + "medium": defaults["medium"], + "source": defaults["source"], + "campaign": partner["campaign"], + "content": partner["content"], + } + if partner.get("variation"): + params["variation"] = partner["variation"] + if partner.get("experiment"): + params["experiment"] = partner["experiment"] + + code = urlencode(params) + return code diff --git a/taskcluster/gecko_taskgraph/util/perfile.py b/taskcluster/gecko_taskgraph/util/perfile.py new file mode 100644 index 0000000000..4e82d87dad --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/perfile.py @@ -0,0 +1,104 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import itertools +import json +import logging +import math + +import taskgraph +from mozbuild.util import memoize +from mozpack.path import match as mozpackmatch + +from gecko_taskgraph import files_changed + +from .. import GECKO + +logger = logging.getLogger(__name__) + + +@memoize +def perfile_number_of_chunks(is_try, try_task_config, head_repository, head_rev, type): + if taskgraph.fast and not is_try: + # When iterating on taskgraph changes, the exact number of chunks that + # test-verify runs usually isn't important, so skip it when going fast. + return 3 + tests_per_chunk = 10.0 + if type.startswith("test-coverage"): + tests_per_chunk = 30.0 + + if type.startswith("test-verify-wpt") or type.startswith("test-coverage-wpt"): + file_patterns = [ + "testing/web-platform/tests/**", + "testing/web-platform/mozilla/tests/**", + ] + elif type.startswith("test-verify-gpu") or type.startswith("test-coverage-gpu"): + file_patterns = [ + "**/*webgl*/**/test_*", + "**/dom/canvas/**/test_*", + "**/gfx/tests/**/test_*", + "**/devtools/canvasdebugger/**/browser_*", + "**/reftest*/**", + ] + elif type.startswith("test-verify") or type.startswith("test-coverage"): + file_patterns = [ + "**/test_*", + "**/browser_*", + "**/crashtest*/**", + "js/src/tests/test/**", + "js/src/tests/non262/**", + "js/src/tests/test262/**", + ] + else: + # Returning 0 means no tests to run, this captures non test-verify tasks + return 1 + + changed_files = set() + if try_task_config: + suite_to_paths = json.loads(try_task_config) + specified_files = itertools.chain.from_iterable(suite_to_paths.values()) + changed_files.update(specified_files) + + if is_try: + changed_files.update(files_changed.get_locally_changed_files(GECKO)) + else: + changed_files.update(files_changed.get_changed_files(head_repository, head_rev)) + + test_count = 0 + for pattern in file_patterns: + for path in changed_files: + # TODO: consider running tests if a manifest changes + if path.endswith(".list") or path.endswith(".ini"): + continue + if path.endswith("^headers^"): + continue + + if mozpackmatch(path, pattern): + gpu = False + if type == "test-verify-e10s" or type == "test-coverage-e10s": + # file_patterns for test-verify will pick up some gpu tests, lets ignore + # in the case of reftest, we will not have any in the regular case + gpu_dirs = [ + "dom/canvas", + "gfx/tests", + "devtools/canvasdebugger", + "webgl", + ] + for gdir in gpu_dirs: + if len(path.split(gdir)) > 1: + gpu = True + + if not gpu: + test_count += 1 + + chunks = test_count / tests_per_chunk + chunks = int(math.ceil(chunks)) + + # Never return 0 chunks on try, so that per-file tests can be pushed to try with + # an explicit path, and also so "empty" runs can be checked on try. + if is_try and chunks == 0: + chunks = 1 + + return chunks diff --git a/taskcluster/gecko_taskgraph/util/platforms.py b/taskcluster/gecko_taskgraph/util/platforms.py new file mode 100644 index 0000000000..2c423223fe --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/platforms.py @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import re + +from taskgraph.util.attributes import keymatch + +# platform family is extracted from build platform by taking the alphabetic prefix +# and then translating win -> windows +_platform_re = re.compile(r"^[a-z]*") +_renames = {"win": "windows"} + + +_archive_formats = { + "linux": ".tar.bz2", + "macosx": ".tar.gz", + "windows": ".zip", +} + +_executable_extension = { + "linux": "", + "macosx": "", + "windows": ".exe", +} + +_architectures = { + r"linux\b.*": "x86", + r"linux64\b.*": "x86_64", + r"macosx64\b.*": "macos-x86_64-aarch64", + r"win32\b.*": "x86", + r"win64\b(?!-aarch64).*": "x86_64", + r"win64-aarch64\b.*": "aarch64", +} + + +def platform_family(build_platform): + """Given a build platform, return the platform family (linux, macosx, etc.)""" + family = _platform_re.match(build_platform).group(0) + return _renames.get(family, family) + + +def archive_format(build_platform): + """Given a build platform, return the archive format used on the platform.""" + return _archive_formats[platform_family(build_platform)] + + +def executable_extension(build_platform): + """Given a build platform, return the executable extension used on the platform.""" + return _executable_extension[platform_family(build_platform)] + + +def architecture(build_platform): + matches = keymatch(_architectures, build_platform) + if len(matches) == 1: + return matches[0] + raise Exception(f"Could not determine architecture of platform `{build_platform}`.") diff --git a/taskcluster/gecko_taskgraph/util/scriptworker.py b/taskcluster/gecko_taskgraph/util/scriptworker.py new file mode 100644 index 0000000000..3f1f64d9f8 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/scriptworker.py @@ -0,0 +1,859 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +"""Make scriptworker.cot.verify more user friendly by making scopes dynamic. + +Scriptworker uses certain scopes to determine which sets of credentials to use. +Certain scopes are restricted by branch in chain of trust verification, and are +checked again at the script level. This file provides functions to adjust +these scopes automatically by project; this makes pushing to try, forking a +project branch, and merge day uplifts more user friendly. + +In the future, we may adjust scopes by other settings as well, e.g. different +scopes for `push-to-candidates` rather than `push-to-releases`, even if both +happen on mozilla-beta and mozilla-release. + +Additional configuration is found in the :ref:`graph config `. +""" +import functools +import itertools +import json +import os +from datetime import datetime + +import jsone +from mozbuild.util import memoize +from taskgraph.util.schema import resolve_keyed_by +from taskgraph.util.taskcluster import get_artifact_prefix +from taskgraph.util.yaml import load_yaml + +from gecko_taskgraph.util.copy_task import copy_task + +# constants {{{1 +"""Map signing scope aliases to sets of projects. + +Currently m-c and DevEdition on m-b use nightly signing; Beta on m-b and m-r +use release signing. These data structures aren't set-up to handle different +scopes on the same repo, so we use a different set of them for DevEdition, and +callers are responsible for using the correct one (by calling the appropriate +helper below). More context on this in https://bugzilla.mozilla.org/show_bug.cgi?id=1358601. + +We will need to add esr support at some point. Eventually we want to add +nuance so certain m-b and m-r tasks use dep or nightly signing, and we only +release sign when we have a signed-off set of candidate builds. This current +approach works for now, though. + +This is a list of list-pairs, for ordering. +""" +SIGNING_SCOPE_ALIAS_TO_PROJECT = [ + [ + "all-nightly-branches", + { + "mozilla-central", + "comm-central", + }, + ], + [ + "all-release-branches", + { + "mozilla-beta", + "mozilla-release", + "mozilla-esr102", + "mozilla-esr115", + "comm-beta", + "comm-esr102", + "comm-esr115", + }, + ], +] + +"""Map the signing scope aliases to the actual scopes. +""" +SIGNING_CERT_SCOPES = { + "all-release-branches": "signing:cert:release-signing", + "all-nightly-branches": "signing:cert:nightly-signing", + "default": "signing:cert:dep-signing", +} + +DEVEDITION_SIGNING_SCOPE_ALIAS_TO_PROJECT = [ + [ + "beta", + { + "mozilla-beta", + }, + ] +] + +DEVEDITION_SIGNING_CERT_SCOPES = { + "beta": "signing:cert:nightly-signing", + "default": "signing:cert:dep-signing", +} + +"""Map beetmover scope aliases to sets of projects. +""" +BEETMOVER_SCOPE_ALIAS_TO_PROJECT = [ + [ + "all-nightly-branches", + { + "mozilla-central", + "comm-central", + "oak", + }, + ], + [ + "all-release-branches", + { + "mozilla-beta", + "mozilla-release", + "mozilla-esr102", + "mozilla-esr115", + "comm-beta", + "comm-esr102", + "comm-esr115", + }, + ], +] + +"""Map the beetmover scope aliases to the actual scopes. +""" +BEETMOVER_BUCKET_SCOPES = { + "all-release-branches": "beetmover:bucket:release", + "all-nightly-branches": "beetmover:bucket:nightly", + "default": "beetmover:bucket:dep", +} + +"""Map the beetmover scope aliases to the actual scopes. +These are the scopes needed to import artifacts into the product delivery APT repos. +""" +BEETMOVER_APT_REPO_SCOPES = { + "all-release-branches": "beetmover:apt-repo:release", + "all-nightly-branches": "beetmover:apt-repo:nightly", + "default": "beetmover:apt-repo:dep", +} + +"""Map the beetmover tasks aliases to the actual action scopes. +""" +BEETMOVER_ACTION_SCOPES = { + "nightly": "beetmover:action:push-to-nightly", + "nightly-oak": "beetmover:action:push-to-nightly", + "default": "beetmover:action:push-to-candidates", +} + +"""Map the beetmover tasks aliases to the actual action scopes. +The action scopes are generic across different repo types. +""" +BEETMOVER_REPO_ACTION_SCOPES = { + "default": "beetmover:action:import-from-gcs-to-artifact-registry", +} + +"""Known balrog actions.""" +BALROG_ACTIONS = ( + "submit-locale", + "submit-toplevel", + "schedule", + "v2-submit-locale", + "v2-submit-toplevel", +) + +"""Map balrog scope aliases to sets of projects. + +This is a list of list-pairs, for ordering. +""" +BALROG_SCOPE_ALIAS_TO_PROJECT = [ + [ + "nightly", + { + "mozilla-central", + "comm-central", + "oak", + }, + ], + [ + "beta", + { + "mozilla-beta", + "comm-beta", + }, + ], + [ + "release", + { + "mozilla-release", + "comm-esr102", + "comm-esr115", + }, + ], + [ + "esr102", + { + "mozilla-esr102", + }, + ], + [ + "esr115", + { + "mozilla-esr115", + }, + ], +] + +"""Map the balrog scope aliases to the actual scopes. +""" +BALROG_SERVER_SCOPES = { + "nightly": "balrog:server:nightly", + "aurora": "balrog:server:aurora", + "beta": "balrog:server:beta", + "release": "balrog:server:release", + "esr102": "balrog:server:esr", + "esr115": "balrog:server:esr", + "default": "balrog:server:dep", +} + + +""" The list of the release promotion phases which we send notifications for +""" +RELEASE_NOTIFICATION_PHASES = ("promote", "push", "ship") + + +def add_scope_prefix(config, scope): + """ + Prepends the scriptworker scope prefix from the :ref:`graph config + `. + + Args: + config (TransformConfig): The configuration for the kind being transformed. + scope (string): The suffix of the scope + + Returns: + string: the scope to use. + """ + return "{prefix}:{scope}".format( + prefix=config.graph_config["scriptworker"]["scope-prefix"], + scope=scope, + ) + + +def with_scope_prefix(f): + """ + Wraps a function, calling :py:func:`add_scope_prefix` on the result of + calling the wrapped function. + + Args: + f (callable): A function that takes a ``config`` and some keyword + arguments, and returns a scope suffix. + + Returns: + callable: the wrapped function + """ + + @functools.wraps(f) + def wrapper(config, **kwargs): + scope_or_scopes = f(config, **kwargs) + if isinstance(scope_or_scopes, list): + return map(functools.partial(add_scope_prefix, config), scope_or_scopes) + return add_scope_prefix(config, scope_or_scopes) + + return wrapper + + +# scope functions {{{1 +@with_scope_prefix +def get_scope_from_project(config, alias_to_project_map, alias_to_scope_map): + """Determine the restricted scope from `config.params['project']`. + + Args: + config (TransformConfig): The configuration for the kind being transformed. + alias_to_project_map (list of lists): each list pair contains the + alias and the set of projects that match. This is ordered. + alias_to_scope_map (dict): the alias alias to scope + + Returns: + string: the scope to use. + """ + for alias, projects in alias_to_project_map: + if config.params["project"] in projects and alias in alias_to_scope_map: + return alias_to_scope_map[alias] + return alias_to_scope_map["default"] + + +@with_scope_prefix +def get_scope_from_release_type(config, release_type_to_scope_map): + """Determine the restricted scope from `config.params['target_tasks_method']`. + + Args: + config (TransformConfig): The configuration for the kind being transformed. + release_type_to_scope_map (dict): the maps release types to scopes + + Returns: + string: the scope to use. + """ + return release_type_to_scope_map.get( + config.params["release_type"], release_type_to_scope_map["default"] + ) + + +def get_phase_from_target_method(config, alias_to_tasks_map, alias_to_phase_map): + """Determine the phase from `config.params['target_tasks_method']`. + + Args: + config (TransformConfig): The configuration for the kind being transformed. + alias_to_tasks_map (list of lists): each list pair contains the + alias and the set of target methods that match. This is ordered. + alias_to_phase_map (dict): the alias to phase map + + Returns: + string: the phase to use. + """ + for alias, tasks in alias_to_tasks_map: + if ( + config.params["target_tasks_method"] in tasks + and alias in alias_to_phase_map + ): + return alias_to_phase_map[alias] + return alias_to_phase_map["default"] + + +get_signing_cert_scope = functools.partial( + get_scope_from_project, + alias_to_project_map=SIGNING_SCOPE_ALIAS_TO_PROJECT, + alias_to_scope_map=SIGNING_CERT_SCOPES, +) + +get_devedition_signing_cert_scope = functools.partial( + get_scope_from_project, + alias_to_project_map=DEVEDITION_SIGNING_SCOPE_ALIAS_TO_PROJECT, + alias_to_scope_map=DEVEDITION_SIGNING_CERT_SCOPES, +) + +get_beetmover_bucket_scope = functools.partial( + get_scope_from_project, + alias_to_project_map=BEETMOVER_SCOPE_ALIAS_TO_PROJECT, + alias_to_scope_map=BEETMOVER_BUCKET_SCOPES, +) + +get_beetmover_apt_repo_scope = functools.partial( + get_scope_from_project, + alias_to_project_map=BEETMOVER_SCOPE_ALIAS_TO_PROJECT, + alias_to_scope_map=BEETMOVER_APT_REPO_SCOPES, +) + +get_beetmover_repo_action_scope = functools.partial( + get_scope_from_release_type, + release_type_to_scope_map=BEETMOVER_REPO_ACTION_SCOPES, +) + +get_beetmover_action_scope = functools.partial( + get_scope_from_release_type, + release_type_to_scope_map=BEETMOVER_ACTION_SCOPES, +) + +get_balrog_server_scope = functools.partial( + get_scope_from_project, + alias_to_project_map=BALROG_SCOPE_ALIAS_TO_PROJECT, + alias_to_scope_map=BALROG_SERVER_SCOPES, +) + +cached_load_yaml = memoize(load_yaml) + + +# release_config {{{1 +def get_release_config(config): + """Get the build number and version for a release task. + + Currently only applies to beetmover tasks. + + Args: + config (TransformConfig): The configuration for the kind being transformed. + + Returns: + dict: containing both `build_number` and `version`. This can be used to + update `task.payload`. + """ + release_config = {} + + partial_updates = os.environ.get("PARTIAL_UPDATES", "") + if partial_updates != "" and config.kind in ( + "release-bouncer-sub", + "release-bouncer-check", + "release-update-verify-config", + "release-secondary-update-verify-config", + "release-balrog-submit-toplevel", + "release-secondary-balrog-submit-toplevel", + ): + partial_updates = json.loads(partial_updates) + release_config["partial_versions"] = ", ".join( + [ + "{}build{}".format(v, info["buildNumber"]) + for v, info in partial_updates.items() + ] + ) + if release_config["partial_versions"] == "{}": + del release_config["partial_versions"] + + release_config["version"] = config.params["version"] + release_config["appVersion"] = config.params["app_version"] + + release_config["next_version"] = config.params["next_version"] + release_config["build_number"] = config.params["build_number"] + return release_config + + +def get_signing_cert_scope_per_platform(build_platform, is_shippable, config): + if "devedition" in build_platform: + return get_devedition_signing_cert_scope(config) + if is_shippable: + return get_signing_cert_scope(config) + return add_scope_prefix(config, "signing:cert:dep-signing") + + +# generate_beetmover_upstream_artifacts {{{1 +def generate_beetmover_upstream_artifacts( + config, job, platform, locale=None, dependencies=None, **kwargs +): + """Generate the upstream artifacts for beetmover, using the artifact map. + + Currently only applies to beetmover tasks. + + Args: + job (dict): The current job being generated + dependencies (list): A list of the job's dependency labels. + platform (str): The current build platform + locale (str): The current locale being beetmoved. + + Returns: + list: A list of dictionaries conforming to the upstream_artifacts spec. + """ + base_artifact_prefix = get_artifact_prefix(job) + resolve_keyed_by( + job, + "attributes.artifact_map", + "artifact map", + **{ + "release-type": config.params["release_type"], + "platform": platform, + }, + ) + map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"])) + upstream_artifacts = list() + + if not locale: + locales = map_config["default_locales"] + elif isinstance(locale, list): + locales = locale + else: + locales = [locale] + + if not dependencies: + if job.get("dependencies"): + dependencies = job["dependencies"].keys() + elif job.get("primary-dependency"): + dependencies = [job["primary-dependency"].kind] + else: + raise Exception(f"Unsupported type of dependency. Got job: {job}") + + for locale, dep in itertools.product(locales, dependencies): + paths = list() + + for filename in map_config["mapping"]: + resolve_keyed_by( + map_config["mapping"][filename], + "from", + f"beetmover filename {filename}", + platform=platform, + ) + if dep not in map_config["mapping"][filename]["from"]: + continue + if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]: + continue + if ( + "only_for_platforms" in map_config["mapping"][filename] + and platform + not in map_config["mapping"][filename]["only_for_platforms"] + ): + continue + if ( + "not_for_platforms" in map_config["mapping"][filename] + and platform in map_config["mapping"][filename]["not_for_platforms"] + ): + continue + if "partials_only" in map_config["mapping"][filename]: + continue + # The next time we look at this file it might be a different locale. + file_config = copy_task(map_config["mapping"][filename]) + resolve_keyed_by( + file_config, + "source_path_modifier", + "source path modifier", + locale=locale, + ) + + kwargs["locale"] = locale + + paths.append( + os.path.join( + base_artifact_prefix, + jsone.render(file_config["source_path_modifier"], kwargs), + jsone.render(filename, kwargs), + ) + ) + + if ( + job.get("dependencies") + and getattr(job["dependencies"][dep], "attributes", None) + and job["dependencies"][dep].attributes.get("release_artifacts") + ): + paths = [ + path + for path in paths + if path in job["dependencies"][dep].attributes["release_artifacts"] + ] + + if not paths: + continue + + upstream_artifacts.append( + { + "taskId": {"task-reference": f"<{dep}>"}, + "taskType": map_config["tasktype_map"].get(dep), + "paths": sorted(paths), + "locale": locale, + } + ) + + upstream_artifacts.sort(key=lambda u: u["paths"]) + return upstream_artifacts + + +def generate_artifact_registry_gcs_sources(dep): + gcs_sources = [] + locale = dep.attributes.get("locale") + if not locale: + repackage_deb_reference = "" + repackage_deb_artifact = "public/build/target.deb" + else: + repackage_deb_reference = "" + repackage_deb_artifact = f"public/build/{locale}/target.langpack.deb" + for config in dep.task["payload"]["artifactMap"]: + if ( + config["taskId"]["task-reference"] == repackage_deb_reference + and repackage_deb_artifact in config["paths"] + ): + gcs_sources.append( + config["paths"][repackage_deb_artifact]["destinations"][0] + ) + return gcs_sources + + +# generate_beetmover_artifact_map {{{1 +def generate_beetmover_artifact_map(config, job, **kwargs): + """Generate the beetmover artifact map. + + Currently only applies to beetmover tasks. + + Args: + config (): Current taskgraph configuration. + job (dict): The current job being generated + Common kwargs: + platform (str): The current build platform + locale (str): The current locale being beetmoved. + + Returns: + list: A list of dictionaries containing source->destination + maps for beetmover. + """ + platform = kwargs.get("platform", "") + resolve_keyed_by( + job, + "attributes.artifact_map", + job["label"], + **{ + "release-type": config.params["release_type"], + "platform": platform, + }, + ) + map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"])) + base_artifact_prefix = map_config.get( + "base_artifact_prefix", get_artifact_prefix(job) + ) + + artifacts = list() + + dependencies = job["dependencies"].keys() + + if kwargs.get("locale"): + if isinstance(kwargs["locale"], list): + locales = kwargs["locale"] + else: + locales = [kwargs["locale"]] + else: + locales = map_config["default_locales"] + + resolve_keyed_by(map_config, "s3_bucket_paths", job["label"], platform=platform) + + for locale, dep in sorted(itertools.product(locales, dependencies)): + paths = dict() + for filename in map_config["mapping"]: + # Relevancy checks + resolve_keyed_by( + map_config["mapping"][filename], "from", "blah", platform=platform + ) + if dep not in map_config["mapping"][filename]["from"]: + # We don't get this file from this dependency. + continue + if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]: + # This locale either doesn't produce or shouldn't upload this file. + continue + if ( + "only_for_platforms" in map_config["mapping"][filename] + and platform + not in map_config["mapping"][filename]["only_for_platforms"] + ): + # This platform either doesn't produce or shouldn't upload this file. + continue + if ( + "not_for_platforms" in map_config["mapping"][filename] + and platform in map_config["mapping"][filename]["not_for_platforms"] + ): + # This platform either doesn't produce or shouldn't upload this file. + continue + if "partials_only" in map_config["mapping"][filename]: + continue + + # copy_task because the next time we look at this file the locale will differ. + file_config = copy_task(map_config["mapping"][filename]) + + for field in [ + "destinations", + "locale_prefix", + "source_path_modifier", + "update_balrog_manifest", + "pretty_name", + "checksums_path", + ]: + resolve_keyed_by( + file_config, field, job["label"], locale=locale, platform=platform + ) + + # This format string should ideally be in the configuration file, + # but this would mean keeping variable names in sync between code + config. + destinations = [ + "{s3_bucket_path}/{dest_path}/{locale_prefix}{filename}".format( + s3_bucket_path=bucket_path, + dest_path=dest_path, + locale_prefix=file_config["locale_prefix"], + filename=file_config.get("pretty_name", filename), + ) + for dest_path, bucket_path in itertools.product( + file_config["destinations"], map_config["s3_bucket_paths"] + ) + ] + # Creating map entries + # Key must be artifact path, to avoid trampling duplicates, such + # as public/build/target.apk and public/build/en-US/target.apk + key = os.path.join( + base_artifact_prefix, + file_config["source_path_modifier"], + filename, + ) + + paths[key] = { + "destinations": destinations, + } + if file_config.get("checksums_path"): + paths[key]["checksums_path"] = file_config["checksums_path"] + + # optional flag: balrog manifest + if file_config.get("update_balrog_manifest"): + paths[key]["update_balrog_manifest"] = True + if file_config.get("balrog_format"): + paths[key]["balrog_format"] = file_config["balrog_format"] + + if not paths: + # No files for this dependency/locale combination. + continue + + # Render all variables for the artifact map + platforms = copy_task(map_config.get("platform_names", {})) + if platform: + for key in platforms.keys(): + resolve_keyed_by(platforms, key, job["label"], platform=platform) + + upload_date = datetime.fromtimestamp(config.params["build_date"]) + + kwargs.update( + { + "locale": locale, + "version": config.params["version"], + "branch": config.params["project"], + "build_number": config.params["build_number"], + "year": upload_date.year, + "month": upload_date.strftime("%m"), # zero-pad the month + "upload_date": upload_date.strftime("%Y-%m-%d-%H-%M-%S"), + } + ) + kwargs.update(**platforms) + paths = jsone.render(paths, kwargs) + artifacts.append( + { + "taskId": {"task-reference": f"<{dep}>"}, + "locale": locale, + "paths": paths, + } + ) + + return artifacts + + +# generate_beetmover_partials_artifact_map {{{1 +def generate_beetmover_partials_artifact_map(config, job, partials_info, **kwargs): + """Generate the beetmover partials artifact map. + + Currently only applies to beetmover tasks. + + Args: + config (): Current taskgraph configuration. + job (dict): The current job being generated + partials_info (dict): Current partials and information about them in a dict + Common kwargs: + platform (str): The current build platform + locale (str): The current locale being beetmoved. + + Returns: + list: A list of dictionaries containing source->destination + maps for beetmover. + """ + platform = kwargs.get("platform", "") + resolve_keyed_by( + job, + "attributes.artifact_map", + "artifact map", + **{ + "release-type": config.params["release_type"], + "platform": platform, + }, + ) + map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"])) + base_artifact_prefix = map_config.get( + "base_artifact_prefix", get_artifact_prefix(job) + ) + + artifacts = list() + dependencies = job["dependencies"].keys() + + if kwargs.get("locale"): + locales = [kwargs["locale"]] + else: + locales = map_config["default_locales"] + + resolve_keyed_by( + map_config, "s3_bucket_paths", "s3_bucket_paths", platform=platform + ) + + platforms = copy_task(map_config.get("platform_names", {})) + if platform: + for key in platforms.keys(): + resolve_keyed_by(platforms, key, key, platform=platform) + upload_date = datetime.fromtimestamp(config.params["build_date"]) + + for locale, dep in itertools.product(locales, dependencies): + paths = dict() + for filename in map_config["mapping"]: + # Relevancy checks + if dep not in map_config["mapping"][filename]["from"]: + # We don't get this file from this dependency. + continue + if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]: + # This locale either doesn't produce or shouldn't upload this file. + continue + if "partials_only" not in map_config["mapping"][filename]: + continue + # copy_task because the next time we look at this file the locale will differ. + file_config = copy_task(map_config["mapping"][filename]) + + for field in [ + "destinations", + "locale_prefix", + "source_path_modifier", + "update_balrog_manifest", + "from_buildid", + "pretty_name", + "checksums_path", + ]: + resolve_keyed_by( + file_config, field, field, locale=locale, platform=platform + ) + + # This format string should ideally be in the configuration file, + # but this would mean keeping variable names in sync between code + config. + destinations = [ + "{s3_bucket_path}/{dest_path}/{locale_prefix}{filename}".format( + s3_bucket_path=bucket_path, + dest_path=dest_path, + locale_prefix=file_config["locale_prefix"], + filename=file_config.get("pretty_name", filename), + ) + for dest_path, bucket_path in itertools.product( + file_config["destinations"], map_config["s3_bucket_paths"] + ) + ] + # Creating map entries + # Key must be artifact path, to avoid trampling duplicates, such + # as public/build/target.apk and public/build/en-US/target.apk + key = os.path.join( + base_artifact_prefix, + file_config["source_path_modifier"], + filename, + ) + partials_paths = {} + for pname, info in partials_info.items(): + partials_paths[key] = { + "destinations": destinations, + } + if file_config.get("checksums_path"): + partials_paths[key]["checksums_path"] = file_config[ + "checksums_path" + ] + + # optional flag: balrog manifest + if file_config.get("update_balrog_manifest"): + partials_paths[key]["update_balrog_manifest"] = True + if file_config.get("balrog_format"): + partials_paths[key]["balrog_format"] = file_config[ + "balrog_format" + ] + # optional flag: from_buildid + if file_config.get("from_buildid"): + partials_paths[key]["from_buildid"] = file_config["from_buildid"] + + # render buildid + kwargs.update( + { + "partial": pname, + "from_buildid": info["buildid"], + "previous_version": info.get("previousVersion"), + "buildid": str(config.params["moz_build_date"]), + "locale": locale, + "version": config.params["version"], + "branch": config.params["project"], + "build_number": config.params["build_number"], + "year": upload_date.year, + "month": upload_date.strftime("%m"), # zero-pad the month + "upload_date": upload_date.strftime("%Y-%m-%d-%H-%M-%S"), + } + ) + kwargs.update(**platforms) + paths.update(jsone.render(partials_paths, kwargs)) + + if not paths: + continue + + artifacts.append( + { + "taskId": {"task-reference": f"<{dep}>"}, + "locale": locale, + "paths": paths, + } + ) + + artifacts.sort(key=lambda a: sorted(a["paths"].items())) + return artifacts diff --git a/taskcluster/gecko_taskgraph/util/signed_artifacts.py b/taskcluster/gecko_taskgraph/util/signed_artifacts.py new file mode 100644 index 0000000000..2467ff8046 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/signed_artifacts.py @@ -0,0 +1,198 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +Defines artifacts to sign before repackage. +""" + +from taskgraph.util.taskcluster import get_artifact_path + +from gecko_taskgraph.util.declarative_artifacts import get_geckoview_upstream_artifacts + +LANGPACK_SIGN_PLATFORMS = { # set + "linux64-shippable", + "linux64-devedition", + "macosx64-shippable", + "macosx64-devedition", +} + + +def is_partner_kind(kind): + if kind and kind.startswith(("release-partner", "release-eme-free")): + return True + + +def is_notarization_kind(kind): + if kind and "notarization" in kind: + return True + + +def is_mac_signing_king(kind): + return kind and "mac-signing" in kind + + +def generate_specifications_of_artifacts_to_sign( + config, job, keep_locale_template=True, kind=None, dep_kind=None +): + build_platform = job["attributes"].get("build_platform") + use_stub = job["attributes"].get("stub-installer") + # Get locales to know if we want to sign ja-JP-mac langpack + locales = job["attributes"].get("chunk_locales", []) + if kind == "release-source-signing": + artifacts_specifications = [ + { + "artifacts": [get_artifact_path(job, "source.tar.xz")], + "formats": ["autograph_gpg"], + } + ] + elif "android" in build_platform: + artifacts_specifications = [ + { + "artifacts": get_geckoview_artifacts_to_sign(config, job), + "formats": ["autograph_gpg"], + } + ] + # XXX: Mars aren't signed here (on any platform) because internals will be + # signed at after this stage of the release + elif "macosx" in build_platform: + langpack_formats = [] + if is_notarization_kind(config.kind): + formats = ["apple_notarization"] + artifacts_specifications = [ + { + "artifacts": [ + get_artifact_path(job, "{locale}/target.tar.gz"), + get_artifact_path(job, "{locale}/target.pkg"), + ], + "formats": formats, + } + ] + else: + # This task is mac-signing + if is_partner_kind(kind): + extension = "tar.gz" + else: + extension = "dmg" + artifacts_specifications = [ + { + "artifacts": [ + get_artifact_path(job, f"{{locale}}/target.{extension}") + ], + "formats": ["macapp", "autograph_widevine", "autograph_omnija"], + } + ] + langpack_formats = ["autograph_langpack"] + + if "ja-JP-mac" in locales and build_platform in LANGPACK_SIGN_PLATFORMS: + artifacts_specifications += [ + { + "artifacts": [ + get_artifact_path(job, "ja-JP-mac/target.langpack.xpi") + ], + "formats": langpack_formats, + } + ] + elif "win" in build_platform: + artifacts_specifications = [ + { + "artifacts": [ + get_artifact_path(job, "{locale}/setup.exe"), + ], + "formats": ["autograph_authenticode_sha2"], + }, + { + "artifacts": [ + get_artifact_path(job, "{locale}/target.zip"), + ], + "formats": [ + "autograph_authenticode_sha2", + "autograph_widevine", + "autograph_omnija", + ], + }, + ] + + if use_stub: + artifacts_specifications[0]["artifacts"] += [ + get_artifact_path(job, "{locale}/setup-stub.exe") + ] + elif "linux" in build_platform: + artifacts_specifications = [ + { + "artifacts": [get_artifact_path(job, "{locale}/target.tar.bz2")], + "formats": ["autograph_gpg", "autograph_widevine", "autograph_omnija"], + } + ] + if build_platform in LANGPACK_SIGN_PLATFORMS: + artifacts_specifications += [ + { + "artifacts": [ + get_artifact_path(job, "{locale}/target.langpack.xpi") + ], + "formats": ["autograph_langpack"], + } + ] + else: + raise Exception("Platform not implemented for signing") + + if not keep_locale_template: + artifacts_specifications = _strip_locale_template(artifacts_specifications) + + if is_partner_kind(kind): + artifacts_specifications = _strip_widevine_for_partners( + artifacts_specifications + ) + + return artifacts_specifications + + +def _strip_locale_template(artifacts_without_locales): + for spec in artifacts_without_locales: + for index, artifact in enumerate(spec["artifacts"]): + stripped_artifact = artifact.format(locale="") + stripped_artifact = stripped_artifact.replace("//", "/") + spec["artifacts"][index] = stripped_artifact + + return artifacts_without_locales + + +def _strip_widevine_for_partners(artifacts_specifications): + """Partner repacks should not resign that's previously signed for fear of breaking partial + updates + """ + for spec in artifacts_specifications: + if "autograph_widevine" in spec["formats"]: + spec["formats"].remove("autograph_widevine") + if "autograph_omnija" in spec["formats"]: + spec["formats"].remove("autograph_omnija") + + return artifacts_specifications + + +def get_signed_artifacts(input, formats, behavior=None): + """ + Get the list of signed artifacts for the given input and formats. + """ + artifacts = set() + if input.endswith(".dmg"): + artifacts.add(input.replace(".dmg", ".tar.gz")) + if behavior and behavior != "mac_sign": + artifacts.add(input.replace(".dmg", ".pkg")) + else: + artifacts.add(input) + if "autograph_gpg" in formats: + artifacts.add(f"{input}.asc") + + return artifacts + + +def get_geckoview_artifacts_to_sign(config, job): + upstream_artifacts = [] + for package in job["attributes"]["maven_packages"]: + upstream_artifacts += get_geckoview_upstream_artifacts(config, job, package) + return [ + path + for upstream_artifact in upstream_artifacts + for path in upstream_artifact["paths"] + if not path.endswith(".md5") and not path.endswith(".sha1") + ] diff --git a/taskcluster/gecko_taskgraph/util/taskcluster.py b/taskcluster/gecko_taskgraph/util/taskcluster.py new file mode 100644 index 0000000000..cddb01fd37 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/taskcluster.py @@ -0,0 +1,128 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import os + +import taskcluster_urls as liburls +from taskcluster import Hooks +from taskgraph.util import taskcluster as tc_util +from taskgraph.util.taskcluster import ( + _do_request, + get_index_url, + get_root_url, + get_task_definition, + get_task_url, +) + +logger = logging.getLogger(__name__) + + +def insert_index(index_path, task_id, data=None, use_proxy=False): + index_url = get_index_url(index_path, use_proxy=use_proxy) + + # Find task expiry. + expires = get_task_definition(task_id, use_proxy=use_proxy)["expires"] + + response = _do_request( + index_url, + method="put", + json={ + "taskId": task_id, + "rank": 0, + "data": data or {}, + "expires": expires, + }, + ) + return response + + +def status_task(task_id, use_proxy=False): + """Gets the status of a task given a task_id. + + In testing mode, just logs that it would have retrieved status. + + Args: + task_id (str): A task id. + use_proxy (bool): Whether to use taskcluster-proxy (default: False) + + Returns: + dict: A dictionary object as defined here: + https://docs.taskcluster.net/docs/reference/platform/queue/api#status + """ + if tc_util.testing: + logger.info(f"Would have gotten status for {task_id}.") + else: + resp = _do_request(get_task_url(task_id, use_proxy) + "/status") + status = resp.json().get("status", {}) + return status + + +def state_task(task_id, use_proxy=False): + """Gets the state of a task given a task_id. + + In testing mode, just logs that it would have retrieved state. This is a subset of the + data returned by :func:`status_task`. + + Args: + task_id (str): A task id. + use_proxy (bool): Whether to use taskcluster-proxy (default: False) + + Returns: + str: The state of the task, one of + ``pending, running, completed, failed, exception, unknown``. + """ + if tc_util.testing: + logger.info(f"Would have gotten state for {task_id}.") + else: + status = status_task(task_id, use_proxy=use_proxy).get("state") or "unknown" + return status + + +def trigger_hook(hook_group_id, hook_id, hook_payload): + hooks = Hooks({"rootUrl": get_root_url(True)}) + response = hooks.triggerHook(hook_group_id, hook_id, hook_payload) + + logger.info( + "Task seen here: {}/tasks/{}".format( + get_root_url(os.environ.get("TASKCLUSTER_PROXY_URL")), + response["status"]["taskId"], + ) + ) + + +def list_task_group_tasks(task_group_id): + """Generate the tasks in a task group""" + params = {} + while True: + url = liburls.api( + get_root_url(False), + "queue", + "v1", + f"task-group/{task_group_id}/list", + ) + resp = _do_request(url, method="get", params=params).json() + yield from resp["tasks"] + if resp.get("continuationToken"): + params = {"continuationToken": resp.get("continuationToken")} + else: + break + + +def list_task_group_incomplete_task_ids(task_group_id): + states = ("running", "pending", "unscheduled") + for task in [t["status"] for t in list_task_group_tasks(task_group_id)]: + if task["state"] in states: + yield task["taskId"] + + +def list_task_group_complete_tasks(task_group_id): + tasks = {} + for task in list_task_group_tasks(task_group_id): + if task.get("status", {}).get("state", "") == "completed": + tasks[task.get("task", {}).get("metadata", {}).get("name", "")] = task.get( + "status", {} + ).get("taskId", "") + return tasks diff --git a/taskcluster/gecko_taskgraph/util/taskgraph.py b/taskcluster/gecko_taskgraph/util/taskgraph.py new file mode 100644 index 0000000000..bac7b3fbb8 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/taskgraph.py @@ -0,0 +1,49 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Tools for interacting with existing taskgraphs. +""" + +from taskgraph.util.taskcluster import find_task_id, get_artifact + + +def find_decision_task(parameters, graph_config): + """Given the parameters for this action, find the taskId of the decision + task""" + head_rev_param = "{}head_rev".format(graph_config["project-repo-param-prefix"]) + return find_task_id( + "{}.v2.{}.revision.{}.taskgraph.decision".format( + graph_config["trust-domain"], + parameters["project"], + parameters[head_rev_param], + ) + ) + + +def find_existing_tasks(previous_graph_ids): + existing_tasks = {} + for previous_graph_id in previous_graph_ids: + label_to_taskid = get_artifact(previous_graph_id, "public/label-to-taskid.json") + existing_tasks.update(label_to_taskid) + return existing_tasks + + +def find_existing_tasks_from_previous_kinds( + full_task_graph, previous_graph_ids, rebuild_kinds +): + """Given a list of previous decision/action taskIds and kinds to ignore + from the previous graphs, return a dictionary of labels-to-taskids to use + as ``existing_tasks`` in the optimization step.""" + existing_tasks = find_existing_tasks(previous_graph_ids) + kind_labels = { + t.label + for t in full_task_graph.tasks.values() + if t.attributes["kind"] not in rebuild_kinds + } + return { + label: taskid + for (label, taskid) in existing_tasks.items() + if label in kind_labels + } diff --git a/taskcluster/gecko_taskgraph/util/templates.py b/taskcluster/gecko_taskgraph/util/templates.py new file mode 100644 index 0000000000..e6640a7edd --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/templates.py @@ -0,0 +1,59 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +from gecko_taskgraph.util.copy_task import copy_task + + +def merge_to(source, dest): + """ + Merge dict and arrays (override scalar values) + + Keys from source override keys from dest, and elements from lists in source + are appended to lists in dest. + + :param dict source: to copy from + :param dict dest: to copy to (modified in place) + """ + + for key, value in source.items(): + if ( + isinstance(value, dict) + and len(value) == 1 + and list(value)[0].startswith("by-") + ): + # Do not merge by-* values as this is likely to confuse someone + dest[key] = value + continue + + # Override mismatching or empty types + if type(value) != type(dest.get(key)): # noqa + dest[key] = value + continue + + # Merge dict + if isinstance(value, dict): + merge_to(value, dest[key]) + continue + + if isinstance(value, list): + dest[key] = dest[key] + value + continue + + dest[key] = value + + return dest + + +def merge(*objects): + """ + Merge the given objects, using the semantics described for merge_to, with + objects later in the list taking precedence. From an inheritance + perspective, "parents" should be listed before "children". + + Returns the result without modifying any arguments. + """ + if len(objects) == 1: + return copy_task(objects[0]) + return merge_to(objects[-1], merge(*objects[:-1])) diff --git a/taskcluster/gecko_taskgraph/util/verify.py b/taskcluster/gecko_taskgraph/util/verify.py new file mode 100644 index 0000000000..75ddbda674 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/verify.py @@ -0,0 +1,454 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import logging +import os +import re +import sys + +import attr +from taskgraph.util.treeherder import join_symbol +from taskgraph.util.verify import VerificationSequence + +from gecko_taskgraph import GECKO +from gecko_taskgraph.util.attributes import ( + ALL_PROJECTS, + RELEASE_PROJECTS, + RUN_ON_PROJECT_ALIASES, +) + +logger = logging.getLogger(__name__) +doc_base_path = os.path.join(GECKO, "taskcluster", "docs") + + +verifications = VerificationSequence() + + +@attr.s(frozen=True) +class DocPaths: + _paths = attr.ib(factory=list) + + def get_files(self, filename): + rv = [] + for p in self._paths: + doc_path = os.path.join(p, filename) + if os.path.exists(doc_path): + rv.append(doc_path) + return rv + + def add(self, path): + """ + Projects that make use of Firefox's taskgraph can extend it with + their own task kinds by registering additional paths for documentation. + documentation_paths.add() needs to be called by the project's Taskgraph + registration function. See taskgraph.config. + """ + self._paths.append(path) + + +documentation_paths = DocPaths() +documentation_paths.add(doc_base_path) + + +def verify_docs(filename, identifiers, appearing_as): + """ + Look for identifiers of the type appearing_as in the files + returned by documentation_paths.get_files(). Firefox will have + a single file in a list, but projects such as Thunderbird can have + documentation in another location and may return multiple files. + """ + # We ignore identifiers starting with '_' for the sake of tests. + # Strings starting with "_" are ignored for doc verification + # hence they can be used for faking test values + doc_files = documentation_paths.get_files(filename) + doctext = "".join([open(d).read() for d in doc_files]) + + if appearing_as == "inline-literal": + expression_list = [ + "``" + identifier + "``" + for identifier in identifiers + if not identifier.startswith("_") + ] + elif appearing_as == "heading": + expression_list = [ + "\n" + identifier + "\n(?:(?:(?:-+\n)+)|(?:(?:.+\n)+))" + for identifier in identifiers + if not identifier.startswith("_") + ] + else: + raise Exception(f"appearing_as = `{appearing_as}` not defined") + + for expression, identifier in zip(expression_list, identifiers): + match_group = re.search(expression, doctext) + if not match_group: + raise Exception( + "{}: `{}` missing from doc file: `{}`".format( + appearing_as, identifier, filename + ) + ) + + +@verifications.add("initial") +def verify_run_using(): + from gecko_taskgraph.transforms.job import registry + + verify_docs( + filename="transforms/job.rst", + identifiers=registry.keys(), + appearing_as="inline-literal", + ) + + +@verifications.add("parameters") +def verify_parameters_docs(parameters): + if not parameters.strict: + return + + parameters_dict = dict(**parameters) + verify_docs( + filename="parameters.rst", + identifiers=list(parameters_dict), + appearing_as="inline-literal", + ) + + +@verifications.add("kinds") +def verify_kinds_docs(kinds): + verify_docs(filename="kinds.rst", identifiers=kinds.keys(), appearing_as="heading") + + +@verifications.add("full_task_set") +def verify_attributes(task, taskgraph, scratch_pad, graph_config, parameters): + if task is None: + verify_docs( + filename="attributes.rst", + identifiers=list(scratch_pad["attribute_set"]), + appearing_as="heading", + ) + return + scratch_pad.setdefault("attribute_set", set()).update(task.attributes.keys()) + + +@verifications.add("full_task_graph") +def verify_task_graph_symbol(task, taskgraph, scratch_pad, graph_config, parameters): + """ + This function verifies that tuple + (collection.keys(), machine.platform, groupSymbol, symbol) is unique + for a target task graph. + """ + if task is None: + return + task_dict = task.task + if "extra" in task_dict: + extra = task_dict["extra"] + if "treeherder" in extra: + treeherder = extra["treeherder"] + + collection_keys = tuple(sorted(treeherder.get("collection", {}).keys())) + if len(collection_keys) != 1: + raise Exception( + "Task {} can't be in multiple treeherder collections " + "(the part of the platform after `/`): {}".format( + task.label, collection_keys + ) + ) + platform = treeherder.get("machine", {}).get("platform") + group_symbol = treeherder.get("groupSymbol") + symbol = treeherder.get("symbol") + + key = (platform, collection_keys[0], group_symbol, symbol) + if key in scratch_pad: + raise Exception( + "Duplicate treeherder platform and symbol in tasks " + "`{}`and `{}`: {} {}".format( + task.label, + scratch_pad[key], + f"{platform}/{collection_keys[0]}", + join_symbol(group_symbol, symbol), + ) + ) + else: + scratch_pad[key] = task.label + + +@verifications.add("full_task_graph") +def verify_trust_domain_v2_routes( + task, taskgraph, scratch_pad, graph_config, parameters +): + """ + This function ensures that any two tasks have distinct ``index.{trust-domain}.v2`` routes. + """ + if task is None: + return + route_prefix = "index.{}.v2".format(graph_config["trust-domain"]) + task_dict = task.task + routes = task_dict.get("routes", []) + + for route in routes: + if route.startswith(route_prefix): + if route in scratch_pad: + raise Exception( + "conflict between {}:{} for route: {}".format( + task.label, scratch_pad[route], route + ) + ) + else: + scratch_pad[route] = task.label + + +@verifications.add("full_task_graph") +def verify_routes_notification_filters( + task, taskgraph, scratch_pad, graph_config, parameters +): + """ + This function ensures that only understood filters for notifications are + specified. + + See: https://firefox-ci-tc.services.mozilla.com/docs/manual/using/task-notifications + """ + if task is None: + return + route_prefix = "notify." + valid_filters = ("on-any", "on-completed", "on-failed", "on-exception") + task_dict = task.task + routes = task_dict.get("routes", []) + + for route in routes: + if route.startswith(route_prefix): + # Get the filter of the route + route_filter = route.split(".")[-1] + if route_filter not in valid_filters: + raise Exception( + "{} has invalid notification filter ({})".format( + task.label, route_filter + ) + ) + + +@verifications.add("full_task_graph") +def verify_dependency_tiers(task, taskgraph, scratch_pad, graph_config, parameters): + tiers = scratch_pad + if task is not None: + tiers[task.label] = ( + task.task.get("extra", {}).get("treeherder", {}).get("tier", sys.maxsize) + ) + else: + + def printable_tier(tier): + if tier == sys.maxsize: + return "unknown" + return tier + + for task in taskgraph.tasks.values(): + tier = tiers[task.label] + for d in task.dependencies.values(): + if taskgraph[d].task.get("workerType") == "always-optimized": + continue + if "dummy" in taskgraph[d].kind: + continue + if tier < tiers[d]: + raise Exception( + "{} (tier {}) cannot depend on {} (tier {})".format( + task.label, + printable_tier(tier), + d, + printable_tier(tiers[d]), + ) + ) + + +@verifications.add("full_task_graph") +def verify_required_signoffs(task, taskgraph, scratch_pad, graph_config, parameters): + """ + Task with required signoffs can't be dependencies of tasks with less + required signoffs. + """ + all_required_signoffs = scratch_pad + if task is not None: + all_required_signoffs[task.label] = set( + task.attributes.get("required_signoffs", []) + ) + else: + + def printable_signoff(signoffs): + if len(signoffs) == 1: + return "required signoff {}".format(*signoffs) + if signoffs: + return "required signoffs {}".format(", ".join(signoffs)) + return "no required signoffs" + + for task in taskgraph.tasks.values(): + required_signoffs = all_required_signoffs[task.label] + for d in task.dependencies.values(): + if required_signoffs < all_required_signoffs[d]: + raise Exception( + "{} ({}) cannot depend on {} ({})".format( + task.label, + printable_signoff(required_signoffs), + d, + printable_signoff(all_required_signoffs[d]), + ) + ) + + +@verifications.add("full_task_graph") +def verify_aliases(task, taskgraph, scratch_pad, graph_config, parameters): + """ + This function verifies that aliases are not reused. + """ + if task is None: + return + if task.kind not in ("toolchain", "fetch"): + return + for_kind = scratch_pad.setdefault(task.kind, {}) + aliases = for_kind.setdefault("aliases", {}) + alias_attribute = f"{task.kind}-alias" + if task.label in aliases: + raise Exception( + "Task `{}` has a {} of `{}`, masking a task of that name.".format( + aliases[task.label], + alias_attribute, + task.label[len(task.kind) + 1 :], + ) + ) + labels = for_kind.setdefault("labels", set()) + labels.add(task.label) + attributes = task.attributes + if alias_attribute in attributes: + keys = attributes[alias_attribute] + if not keys: + keys = [] + elif isinstance(keys, str): + keys = [keys] + for key in keys: + full_key = f"{task.kind}-{key}" + if full_key in labels: + raise Exception( + "Task `{}` has a {} of `{}`," + " masking a task of that name.".format( + task.label, + alias_attribute, + key, + ) + ) + if full_key in aliases: + raise Exception( + "Duplicate {} in tasks `{}`and `{}`: {}".format( + alias_attribute, + task.label, + aliases[full_key], + key, + ) + ) + else: + aliases[full_key] = task.label + + +@verifications.add("optimized_task_graph") +def verify_always_optimized(task, taskgraph, scratch_pad, graph_config, parameters): + """ + This function ensures that always-optimized tasks have been optimized. + """ + if task is None: + return + if task.task.get("workerType") == "always-optimized": + raise Exception(f"Could not optimize the task {task.label!r}") + + +@verifications.add("full_task_graph", run_on_projects=RELEASE_PROJECTS) +def verify_shippable_no_sccache(task, taskgraph, scratch_pad, graph_config, parameters): + if task and task.attributes.get("shippable"): + if task.task.get("payload", {}).get("env", {}).get("USE_SCCACHE"): + raise Exception(f"Shippable job {task.label} cannot use sccache") + + +@verifications.add("full_task_graph") +def verify_test_packaging(task, taskgraph, scratch_pad, graph_config, parameters): + if task is None: + # In certain cases there are valid reasons for tests to be missing, + # don't error out when that happens. + missing_tests_allowed = any( + ( + # user specified `--target-kind` + parameters.get("target-kind") is not None, + # manifest scheduling is enabled + parameters["test_manifest_loader"] != "default", + ) + ) + + exceptions = [] + for task in taskgraph.tasks.values(): + if task.kind == "build" and not task.attributes.get( + "skip-verify-test-packaging" + ): + build_env = task.task.get("payload", {}).get("env", {}) + package_tests = build_env.get("MOZ_AUTOMATION_PACKAGE_TESTS") + shippable = task.attributes.get("shippable", False) + build_has_tests = scratch_pad.get(task.label) + + if package_tests != "1": + # Shippable builds should always package tests. + if shippable: + exceptions.append( + "Build job {} is shippable and does not specify " + "MOZ_AUTOMATION_PACKAGE_TESTS=1 in the " + "environment.".format(task.label) + ) + + # Build tasks in the scratch pad have tests dependent on + # them, so we need to package tests during build. + if build_has_tests: + exceptions.append( + "Build job {} has tests dependent on it and does not specify " + "MOZ_AUTOMATION_PACKAGE_TESTS=1 in the environment".format( + task.label + ) + ) + else: + # Build tasks that aren't in the scratch pad have no + # dependent tests, so we shouldn't package tests. + # With the caveat that we expect shippable jobs to always + # produce tests. + if not build_has_tests and not shippable: + # If we have not generated all task kinds, we can't verify that + # there are no dependent tests. + if not missing_tests_allowed: + exceptions.append( + "Build job {} has no tests, but specifies " + "MOZ_AUTOMATION_PACKAGE_TESTS={} in the environment. " + "Unset MOZ_AUTOMATION_PACKAGE_TESTS in the task definition " + "to fix.".format(task.label, package_tests) + ) + if exceptions: + raise Exception("\n".join(exceptions)) + return + if task.kind == "test": + build_task = taskgraph[task.dependencies["build"]] + scratch_pad[build_task.label] = 1 + + +@verifications.add("full_task_graph") +def verify_run_known_projects(task, taskgraph, scratch_pad, graph_config, parameters): + """Validates the inputs in run-on-projects. + + We should never let 'try' (or 'try-comm-central') be in run-on-projects even though it + is valid because it is not considered for try pushes. While here we also validate for + other unknown projects or typos. + """ + if task and task.attributes.get("run_on_projects"): + projects = set(task.attributes["run_on_projects"]) + if {"try", "try-comm-central"} & set(projects): + raise Exception( + "In task {}: using try in run-on-projects is invalid; use try " + "selectors to select this task on try".format(task.label) + ) + # try isn't valid, but by the time we get here its not an available project anyway. + valid_projects = ALL_PROJECTS | set(RUN_ON_PROJECT_ALIASES.keys()) + invalid_projects = projects - valid_projects + if invalid_projects: + raise Exception( + "Task '{}' has an invalid run-on-projects value: " + "{}".format(task.label, invalid_projects) + ) diff --git a/taskcluster/gecko_taskgraph/util/workertypes.py b/taskcluster/gecko_taskgraph/util/workertypes.py new file mode 100644 index 0000000000..b941ba85f6 --- /dev/null +++ b/taskcluster/gecko_taskgraph/util/workertypes.py @@ -0,0 +1,105 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from mozbuild.util import memoize +from taskgraph.util.attributes import keymatch +from taskgraph.util.keyed_by import evaluate_keyed_by + +from gecko_taskgraph.util.attributes import release_level as _release_level + +WORKER_TYPES = { + "gce/gecko-1-b-linux": ("docker-worker", "linux"), + "gce/gecko-2-b-linux": ("docker-worker", "linux"), + "gce/gecko-3-b-linux": ("docker-worker", "linux"), + "invalid/invalid": ("invalid", None), + "invalid/always-optimized": ("always-optimized", None), + "scriptworker-prov-v1/signing-linux-v1": ("scriptworker-signing", None), + "scriptworker-k8s/gecko-3-shipit": ("shipit", None), + "scriptworker-k8s/gecko-1-shipit": ("shipit", None), +} + + +@memoize +def _get(graph_config, alias, level, release_level, project): + """Get the configuration for this worker_type alias: {provisioner, + worker-type, implementation, os}""" + level = str(level) + + # handle the legacy (non-alias) format + if "/" in alias: + alias = alias.format(level=level) + provisioner, worker_type = alias.split("/", 1) + try: + implementation, os = WORKER_TYPES[alias] + return { + "provisioner": provisioner, + "worker-type": worker_type, + "implementation": implementation, + "os": os, + } + except KeyError: + return { + "provisioner": provisioner, + "worker-type": worker_type, + } + + matches = keymatch(graph_config["workers"]["aliases"], alias) + if len(matches) > 1: + raise KeyError("Multiple matches for worker-type alias " + alias) + elif not matches: + raise KeyError("No matches for worker-type alias " + alias) + worker_config = matches[0].copy() + + worker_config["provisioner"] = evaluate_keyed_by( + worker_config["provisioner"], + f"worker-type alias {alias} field provisioner", + {"level": level}, + ).format( + **{ + "trust-domain": graph_config["trust-domain"], + "level": level, + "alias": alias, + } + ) + attrs = {"level": level, "release-level": release_level} + if project: + attrs["project"] = project + worker_config["worker-type"] = evaluate_keyed_by( + worker_config["worker-type"], + f"worker-type alias {alias} field worker-type", + attrs, + ).format( + **{ + "trust-domain": graph_config["trust-domain"], + "level": level, + "alias": alias, + } + ) + + return worker_config + + +def worker_type_implementation(graph_config, parameters, worker_type): + """Get the worker implementation and OS for the given workerType, where the + OS represents the host system, not the target OS, in the case of + cross-compiles.""" + worker_config = _get( + graph_config, worker_type, "1", "staging", parameters["project"] + ) + return worker_config["implementation"], worker_config.get("os") + + +def get_worker_type(graph_config, parameters, worker_type): + """ + Get the worker type provisioner and worker-type, optionally evaluating + aliases from the graph config. + """ + worker_config = _get( + graph_config, + worker_type, + parameters["level"], + _release_level(parameters.get("project")), + parameters.get("project"), + ) + return worker_config["provisioner"], worker_config["worker-type"] diff --git a/taskcluster/mach_commands.py b/taskcluster/mach_commands.py new file mode 100644 index 0000000000..b752cb7d16 --- /dev/null +++ b/taskcluster/mach_commands.py @@ -0,0 +1,416 @@ +# -*- coding: utf-8 -*- + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +import argparse +import json +import logging +import os +import sys +import time +import traceback +from functools import partial + +import gecko_taskgraph.main +from gecko_taskgraph.main import commands as taskgraph_commands +from mach.decorators import Command, CommandArgument, SettingsProvider, SubCommand + +logger = logging.getLogger("taskcluster") + + +@SettingsProvider +class TaskgraphConfig(object): + @classmethod + def config_settings(cls): + return [ + ( + "taskgraph.diffcmd", + "string", + "The command to run with `./mach taskgraph --diff`", + "diff --report-identical-files " + "--label={attr}@{base} --label={attr}@{cur} -U20", + {}, + ) + ] + + +def strtobool(value): + """Convert string to boolean. + + Wraps "distutils.util.strtobool", deferring the import of the package + in case it's not installed. Otherwise, we have a "chicken and egg problem" where + |mach bootstrap| would install the required package to enable "distutils.util", but + it can't because mach fails to interpret this file. + """ + from distutils.util import strtobool + + return bool(strtobool(value)) + + +def get_taskgraph_command_parser(name): + """Given a command name, obtain its argument parser. + + Args: + name (str): Name of the command. + + Returns: + ArgumentParser: An ArgumentParser instance. + """ + command = taskgraph_commands[name] + parser = argparse.ArgumentParser() + for arg in command.func.args: + parser.add_argument(*arg[0], **arg[1]) + + parser.set_defaults(func=command.func, **command.defaults) + return parser + + +def get_taskgraph_decision_parser(): + parser = get_taskgraph_command_parser("decision") + + extra_args = [ + ( + ["--optimize-target-tasks"], + { + "type": lambda flag: strtobool(flag), + "nargs": "?", + "const": "true", + "help": "If specified, this indicates whether the target " + "tasks are eligible for optimization. Otherwise, the default " + "for the project is used.", + }, + ), + ( + ["--include-push-tasks"], + { + "action": "store_true", + "help": "Whether tasks from the on-push graph should be re-used " + "in this graph. This allows cron graphs to avoid rebuilding " + "jobs that were built on-push.", + }, + ), + ( + ["--rebuild-kind"], + { + "dest": "rebuild_kinds", + "action": "append", + "default": argparse.SUPPRESS, + "help": "Kinds that should not be re-used from the on-push graph.", + }, + ), + ] + for arg in extra_args: + parser.add_argument(*arg[0], **arg[1]) + + return parser + + +@Command( + "taskgraph", + category="ci", + description="Manipulate TaskCluster task graphs defined in-tree", +) +def taskgraph_command(command_context): + """The taskgraph subcommands all relate to the generation of task graphs + for Gecko continuous integration. A task graph is a set of tasks linked + by dependencies: for example, a binary must be built before it is tested, + and that build may further depend on various toolchains, libraries, etc. + """ + + +@SubCommand( + "taskgraph", + "tasks", + description="Show all tasks in the taskgraph", + parser=partial(get_taskgraph_command_parser, "tasks"), +) +def taskgraph_tasks(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +@SubCommand( + "taskgraph", + "full", + description="Show the full taskgraph", + parser=partial(get_taskgraph_command_parser, "full"), +) +def taskgraph_full(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +@SubCommand( + "taskgraph", + "target", + description="Show the target task set", + parser=partial(get_taskgraph_command_parser, "target"), +) +def taskgraph_target(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +@SubCommand( + "taskgraph", + "target-graph", + description="Show the target taskgraph", + parser=partial(get_taskgraph_command_parser, "target-graph"), +) +def taskgraph_target_graph(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +@SubCommand( + "taskgraph", + "optimized", + description="Show the optimized taskgraph", + parser=partial(get_taskgraph_command_parser, "optimized"), +) +def taskgraph_optimized(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +@SubCommand( + "taskgraph", + "morphed", + description="Show the morphed taskgraph", + parser=partial(get_taskgraph_command_parser, "morphed"), +) +def taskgraph_morphed(command_context, **options): + return run_show_taskgraph(command_context, **options) + + +def run_show_taskgraph(command_context, **options): + # There are cases where we don't want to set up mach logging (e.g logs + # are being redirected to disk). By monkeypatching the 'setup_logging' + # function we can let 'taskgraph.main' decide whether or not to log to + # the terminal. + gecko_taskgraph.main.setup_logging = partial( + setup_logging, + command_context, + quiet=options["quiet"], + verbose=options["verbose"], + ) + show_taskgraph = options.pop("func") + return show_taskgraph(options) + + +@SubCommand("taskgraph", "actions", description="Write actions.json to stdout") +@CommandArgument( + "--root", "-r", help="root of the taskgraph definition relative to topsrcdir" +) +@CommandArgument( + "--quiet", "-q", action="store_true", help="suppress all logging output" +) +@CommandArgument( + "--verbose", + "-v", + action="store_true", + help="include debug-level logging output", +) +@CommandArgument( + "--parameters", + "-p", + default="project=mozilla-central", + help="parameters file (.yml or .json; see `taskcluster/docs/parameters.rst`)`", +) +def taskgraph_actions(command_context, **options): + return show_actions(command_context, options) + + +@SubCommand( + "taskgraph", + "decision", + description="Run the decision task", + parser=get_taskgraph_decision_parser, +) +def taskgraph_decision(command_context, **options): + """Run the decision task: generate a task graph and submit to + TaskCluster. This is only meant to be called within decision tasks, + and requires a great many arguments. Commands like `mach taskgraph + optimized` are better suited to use on the command line, and can take + the parameters file generated by a decision task.""" + try: + setup_logging(command_context) + start = time.monotonic() + ret = taskgraph_commands["decision"].func(options) + end = time.monotonic() + if os.environ.get("MOZ_AUTOMATION") == "1": + perfherder_data = { + "framework": {"name": "build_metrics"}, + "suites": [ + { + "name": "decision", + "value": end - start, + "lowerIsBetter": True, + "shouldAlert": True, + "subtests": [], + } + ], + } + print( + "PERFHERDER_DATA: {}".format(json.dumps(perfherder_data)), + file=sys.stderr, + ) + return ret + except Exception: + traceback.print_exc() + sys.exit(1) + + +@SubCommand( + "taskgraph", + "cron", + description="Provide a pointer to the new `.cron.yml` handler.", +) +def taskgraph_cron(command_context, **options): + print( + 'Handling of ".cron.yml" files has move to ' + "https://hg.mozilla.org/ci/ci-admin/file/default/build-decision." + ) + sys.exit(1) + + +@SubCommand( + "taskgraph", + "action-callback", + description="Run action callback used by action tasks", + parser=partial(get_taskgraph_command_parser, "action-callback"), +) +def action_callback(command_context, **options): + setup_logging(command_context) + taskgraph_commands["action-callback"].func(options) + + +@SubCommand( + "taskgraph", + "test-action-callback", + description="Run an action callback in a testing mode", + parser=partial(get_taskgraph_command_parser, "test-action-callback"), +) +def test_action_callback(command_context, **options): + setup_logging(command_context) + + if not options["parameters"]: + options["parameters"] = "project=mozilla-central" + + taskgraph_commands["test-action-callback"].func(options) + + +def setup_logging(command_context, quiet=False, verbose=True): + """ + Set up Python logging for all loggers, sending results to stderr (so + that command output can be redirected easily) and adding the typical + mach timestamp. + """ + # remove the old terminal handler + old = command_context.log_manager.replace_terminal_handler(None) + + # re-add it, with level and fh set appropriately + if not quiet: + level = logging.DEBUG if verbose else logging.INFO + command_context.log_manager.add_terminal_logging( + fh=sys.stderr, + level=level, + write_interval=old.formatter.write_interval, + write_times=old.formatter.write_times, + ) + + # all of the taskgraph logging is unstructured logging + command_context.log_manager.enable_unstructured() + + +def show_actions(command_context, options): + import gecko_taskgraph + import gecko_taskgraph.actions + from taskgraph.generator import TaskGraphGenerator + from taskgraph.parameters import parameters_loader + + try: + setup_logging( + command_context, quiet=options["quiet"], verbose=options["verbose"] + ) + parameters = parameters_loader(options["parameters"]) + + tgg = TaskGraphGenerator( + root_dir=options.get("root"), + parameters=parameters, + ) + + actions = gecko_taskgraph.actions.render_actions_json( + tgg.parameters, + tgg.graph_config, + decision_task_id="DECISION-TASK", + ) + print(json.dumps(actions, sort_keys=True, indent=2, separators=(",", ": "))) + except Exception: + traceback.print_exc() + sys.exit(1) + + +@Command( + "taskcluster-load-image", + category="ci", + description="Load a pre-built Docker image. Note that you need to " + "have docker installed and running for this to work.", + parser=partial(get_taskgraph_command_parser, "load-image"), +) +def load_image(command_context, **kwargs): + taskgraph_commands["load-image"].func(kwargs) + + +@Command( + "taskcluster-build-image", + category="ci", + description="Build a Docker image", + parser=partial(get_taskgraph_command_parser, "build-image"), +) +def build_image(command_context, **kwargs): + try: + taskgraph_commands["build-image"].func(kwargs) + except Exception: + traceback.print_exc() + sys.exit(1) + + +@Command( + "taskcluster-image-digest", + category="ci", + description="Print the digest of the image of this name based on the " + "current contents of the tree.", + parser=partial(get_taskgraph_command_parser, "build-image"), +) +def image_digest(command_context, **kwargs): + taskgraph_commands["image-digest"].func(kwargs) + + +@Command( + "release-history", + category="ci", + description="Query balrog for release history used by enable partials generation", +) +@CommandArgument( + "-b", + "--branch", + help="The gecko project branch used in balrog, such as " + "mozilla-central, release, maple", +) +@CommandArgument( + "--product", default="Firefox", help="The product identifier, such as 'Firefox'" +) +def generate_partials_builds(command_context, product, branch): + from gecko_taskgraph.util.partials import populate_release_history + + try: + import yaml + + release_history = {"release_history": populate_release_history(product, branch)} + print( + yaml.safe_dump( + release_history, allow_unicode=True, default_flow_style=False + ) + ) + except Exception: + traceback.print_exc() + sys.exit(1) diff --git a/taskcluster/moz.build b/taskcluster/moz.build new file mode 100644 index 0000000000..584e5a72e2 --- /dev/null +++ b/taskcluster/moz.build @@ -0,0 +1,18 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +with Files("**"): + BUG_COMPONENT = ("Firefox Build System", "Task Configuration") + +PYTHON_UNITTEST_MANIFESTS += [ + "gecko_taskgraph/test/python.ini", + "test/python.ini", +] +SPHINX_TREES["/taskcluster"] = "docs" +SPHINX_PYTHON_PACKAGE_DIRS += ["gecko_taskgraph"] + +with Files("docs/**"): + SCHEDULES.exclusive = ["docs"] diff --git a/taskcluster/scripts/builder/build-haz-linux.sh b/taskcluster/scripts/builder/build-haz-linux.sh new file mode 100755 index 0000000000..b8253037bf --- /dev/null +++ b/taskcluster/scripts/builder/build-haz-linux.sh @@ -0,0 +1,184 @@ +#!/bin/bash -ex + +function usage() { + echo "Usage: $0 [--project ] flags..." + echo "flags are treated the same way as a commit message would be" + echo "(as in, they are scanned for directives just like a try: ... line)" +} + +PROJECT=js +WORKSPACE= +while [[ $# -gt 0 ]]; do + if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then + usage + exit 0 + elif [[ "$1" == "--project" ]]; then + shift + PROJECT="$1" + shift + elif [[ "$1" == "--no-tooltool" ]]; then + shift + elif [[ -z "$WORKSPACE" ]]; then + WORKSPACE=$( cd "$1" && pwd ) + shift + break + fi +done + +function check_commit_msg () { + ( set +e; + if [[ -n "$AUTOMATION" ]]; then + hg --cwd "$GECKO_PATH" log -r. --template '{desc}\n' | grep -F -q -- "$1" + else + echo -- "$SCRIPT_FLAGS" | grep -F -q -- "$1" + fi + ) +} + +if check_commit_msg "--dep"; then + HAZ_DEP=1 +fi + +SCRIPT_FLAGS=$* + +ANALYSIS_DIR="$WORKSPACE/haz-$PROJECT" + +# Ensure all the scripts in this dir are on the path.... +DIRNAME=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +PATH=$DIRNAME:$PATH + +# Use GECKO_BASE_REPOSITORY as a signal for whether we are running in automation. +export AUTOMATION=${GECKO_BASE_REPOSITORY:+1} + +: "${GECKO_PATH:="$DIRNAME"/../../..}" + +if ! [ -d "$GECKO_PATH" ]; then + echo "GECKO_PATH must be set to a directory containing a gecko source checkout" >&2 + exit 1 +fi + +# Directory to hold the compiled JS shell that will run the analysis. +HAZARD_SHELL_OBJDIR=$WORKSPACE/obj-haz-shell + +export NO_MERCURIAL_SETUP_CHECK=1 + +if [[ "$PROJECT" = "browser" ]]; then ( + cd "$WORKSPACE" + set "$WORKSPACE" + # Mozbuild config: + export MOZBUILD_STATE_PATH=$WORKSPACE/mozbuild/ + # Create .mozbuild so mach doesn't complain about this + mkdir -p "$MOZBUILD_STATE_PATH" +) fi + +# Build the shell +export HAZARD_SHELL_OBJDIR # This will be picked up by mozconfig.haz_shell. +$GECKO_PATH/mach hazards build-shell + +# Run a self-test +$GECKO_PATH/mach hazards self-test --shell-objdir="$HAZARD_SHELL_OBJDIR" + +# Artifacts folder is outside of the cache. +mkdir -p "$HOME"/artifacts/ || true + +function grab_artifacts () { + local artifacts + artifacts="$HOME/artifacts" + + [ -d "$ANALYSIS_DIR" ] && ( + cd "$ANALYSIS_DIR" + ls -lah + + # Do not error out if no files found + shopt -s nullglob + set +e + local important + important=(refs.txt unnecessary.txt hazards.txt gcFunctions.txt allFunctions.txt heapWriteHazards.txt rootingHazards.json hazards.html) + + # Bundle up the less important but still useful intermediate outputs, + # just to cut down on the clutter in treeherder's Job Details pane. + tar -acvf "${artifacts}/hazardIntermediates.tar.xz" --exclude-from <(IFS=$'\n'; echo "${important[*]}") *.txt *.lst build_xgill.log + + # Upload the important outputs individually, so that they will be + # visible in Job Details and accessible to automated jobs. + for f in "${important[@]}"; do + gzip -9 -c "$f" > "${artifacts}/$f.gz" + done + + # Check whether the user requested .xdb file upload in the top commit comment + if check_commit_msg "--upload-xdbs"; then + HAZ_UPLOAD_XDBS=1 + fi + + if [ -n "$HAZ_UPLOAD_XDBS" ]; then + for f in *.xdb; do + xz -c "$f" > "${artifacts}/$f.bz2" + done + fi + ) +} + +function check_hazards () { + ( + set +e + NUM_HAZARDS=$(grep -c 'Function.*has unrooted.*live across GC call' "$1"/hazards.txt) + NUM_UNSAFE=$(grep -c '^Function.*takes unsafe address of unrooted' "$1"/refs.txt) + NUM_UNNECESSARY=$(grep -c '^Function.* has unnecessary root' "$1"/unnecessary.txt) + NUM_DROPPED=$(grep -c '^Dropped CFG' "$1"/build_xgill.log) + NUM_WRITE_HAZARDS=$(perl -lne 'print $1 if m!found (\d+)/\d+ allowed errors!' "$1"/heapWriteHazards.txt) + NUM_MISSING=$(grep -c '^Function.*expected hazard.*but none were found' "$1"/hazards.txt) + + set +x + echo "TinderboxPrint: rooting hazards
$NUM_HAZARDS" + echo "TinderboxPrint: (unsafe references to unrooted GC pointers)
$NUM_UNSAFE" + echo "TinderboxPrint: (unnecessary roots)
$NUM_UNNECESSARY" + echo "TinderboxPrint: missing expected hazards
$NUM_MISSING" + echo "TinderboxPrint: heap write hazards
$NUM_WRITE_HAZARDS" + + # Display errors in a way that will get picked up by the taskcluster scraper. + perl -lne 'print "TEST-UNEXPECTED-FAIL | hazards | $1 $2" if /^Function.* has (unrooted .*live across GC call).* (at .*)$/' "$1"/hazards.txt + + exit_status=0 + + if [ $NUM_HAZARDS -gt 0 ]; then + echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_HAZARDS rooting hazards detected" >&2 + echo "TinderboxPrint: documentation
static rooting hazard analysis failures, visit \"Inspect Task\" link for hazard details" + exit_status=1 + fi + + if [ $NUM_MISSING -gt 0 ]; then + echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_MISSING expected hazards went undetected" >&2 + echo "TinderboxPrint: documentation
static rooting hazard analysis failures, visit \"Inspect Task\" link for hazard details" + exit_status=1 + fi + + NUM_ALLOWED_WRITE_HAZARDS=0 + if [ $NUM_WRITE_HAZARDS -gt $NUM_ALLOWED_WRITE_HAZARDS ]; then + echo "TEST-UNEXPECTED-FAIL | heap-write-hazards | $NUM_WRITE_HAZARDS heap write hazards detected out of $NUM_ALLOWED_WRITE_HAZARDS allowed" >&2 + echo "TinderboxPrint: documentation
heap write hazard analysis failures, visit \"Inspect Task\" link for hazard details" + exit_status = 1 + fi + + if [ $NUM_DROPPED -gt 0 ]; then + echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_DROPPED CFGs dropped" >&2 + echo "TinderboxPrint: sixgill unable to handle constructs
$NUM_DROPPED" + exit_status=1 + fi + + if [ $exit_status -ne 0 ]; then + exit $exit_status + fi + ) +} + +trap grab_artifacts EXIT + +# Gather the information from the source tree by compiling it. +$GECKO_PATH/mach hazards gather --project=$PROJECT --work-dir="$ANALYSIS_DIR" + +# Analyze the collected information. +$GECKO_PATH/mach hazards analyze --project=$PROJECT --shell-objdir="$HAZARD_SHELL_OBJDIR" --work-dir="$ANALYSIS_DIR" + +check_hazards "$ANALYSIS_DIR" + +################################### script end ################################### diff --git a/taskcluster/scripts/builder/build-l10n.sh b/taskcluster/scripts/builder/build-l10n.sh new file mode 100755 index 0000000000..0a324c7479 --- /dev/null +++ b/taskcluster/scripts/builder/build-l10n.sh @@ -0,0 +1,90 @@ +#! /bin/bash -vex + +set -x -e + +echo "running as" $(id) + +#### +# Taskcluster friendly wrapper for performing fx desktop l10n repacks via mozharness. +# Based on ./build-linux.sh +#### + +# Inputs, with defaults + +: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT} +: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG} +: MOZHARNESS_CONFIG_PATHS ${MOZHARNESS_CONFIG_PATHS} +: MOZHARNESS_ACTIONS ${MOZHARNESS_ACTIONS} +: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS} + +: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache} + +: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1} + +: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1} + +: WORKSPACE ${WORKSPACE:=/builds/worker/workspace} +: MOZ_OBJDIR ${MOZ_OBJDIR:=$WORKSPACE/obj-build} + +set -v + +fail() { + echo # make sure error message is on a new line + echo "[build-l10n.sh:error]" "${@}" + exit 1 +} + +export MOZ_CRASHREPORTER_NO_REPORT=1 +export TINDERBOX_OUTPUT=1 + +# test required parameters are supplied +if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi +if [[ -z "${MOZHARNESS_CONFIG}" && -z "${EXTRA_MOZHARNESS_CONFIG}" ]]; then fail "MOZHARNESS_CONFIG or EXTRA_MOZHARNESS_CONFIG is not set"; fi + +# set up mozharness configuration, via command line, env, etc. + +# $TOOLTOOL_CACHE bypasses mozharness completely and is read by tooltool_wrapper.sh to set the +# cache. However, only some mozharness scripts use tooltool_wrapper.sh, so this may not be +# entirely effective. +export TOOLTOOL_CACHE + +export MOZ_OBJDIR + +config_path_cmds="" +for path in ${MOZHARNESS_CONFIG_PATHS}; do + config_path_cmds="${config_path_cmds} --extra-config-path ${GECKO_PATH}/${path}" +done + +# support multiple, space delimited, config files +config_cmds="" +for cfg in $MOZHARNESS_CONFIG; do + config_cmds="${config_cmds} --config ${cfg}" +done + +# if MOZHARNESS_ACTIONS is given, only run those actions (completely overriding default_actions +# in the mozharness configuration) +if [ -n "$MOZHARNESS_ACTIONS" ]; then + actions="" + for action in $MOZHARNESS_ACTIONS; do + actions="$actions --$action" + done +fi + +# if MOZHARNESS_OPTIONS is given, append them to mozharness command line run +if [ -n "$MOZHARNESS_OPTIONS" ]; then + options="" + for option in $MOZHARNESS_OPTIONS; do + options="$options --$option" + done +fi + +cd /builds/worker + +$GECKO_PATH/mach python -- \ + $GECKO_PATH/testing/${MOZHARNESS_SCRIPT} \ + ${config_path_cmds} \ + ${config_cmds} \ + $actions \ + $options \ + --log-level=debug \ + --work-dir=$WORKSPACE \ diff --git a/taskcluster/scripts/builder/build-linux.sh b/taskcluster/scripts/builder/build-linux.sh new file mode 100755 index 0000000000..35c54788b4 --- /dev/null +++ b/taskcluster/scripts/builder/build-linux.sh @@ -0,0 +1,125 @@ +#! /bin/bash -vex + +set -x -e + +echo "running as" $(id) + +#### +# Taskcluster friendly wrapper for performing fx desktop builds via mozharness. +#### + +# Inputs, with defaults + +: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT} +: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG} +: MOZHARNESS_CONFIG_PATHS ${MOZHARNESS_CONFIG_PATHS} +: MOZHARNESS_ACTIONS ${MOZHARNESS_ACTIONS} +: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS} + +: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache} + +: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1} + +: NEED_XVFB ${NEED_XVFB:=false} + +: MH_CUSTOM_BUILD_VARIANT_CFG ${MH_CUSTOM_BUILD_VARIANT_CFG} +: MH_BRANCH ${MH_BRANCH:=mozilla-central} +: MH_BUILD_POOL ${MH_BUILD_POOL:=staging} + +: WORKSPACE ${WORKSPACE:=/builds/worker/workspace} +: MOZ_OBJDIR ${MOZ_OBJDIR:=$WORKSPACE/obj-build} + +set -v + +fail() { + echo # make sure error message is on a new line + echo "[build-linux.sh:error]" "${@}" + exit 1 +} + +export MOZ_CRASHREPORTER_NO_REPORT=1 +export TINDERBOX_OUTPUT=1 + +# use "simple" package names so that they can be hard-coded in the task's +# extras.locations +export MOZ_SIMPLE_PACKAGE_NAME=target + +# test required parameters are supplied +if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi +if [[ -z "${MOZHARNESS_CONFIG}" && -z "${EXTRA_MOZHARNESS_CONFIG}" ]]; then fail "MOZHARNESS_CONFIG or EXTRA_MOZHARNESS_CONFIG is not set"; fi + +# run XVfb in the background, if necessary +if $NEED_XVFB; then + . /builds/worker/scripts/xvfb.sh + + cleanup() { + local rv=$? + cleanup_xvfb + exit $rv + } + trap cleanup EXIT INT + + start_xvfb '1024x768x24' 2 +fi + +# set up mozharness configuration, via command line, env, etc. + +debug_flag="" +if [ 0$DEBUG -ne 0 ]; then + debug_flag='--debug' +fi + +custom_build_variant_cfg_flag="" +if [ -n "${MH_CUSTOM_BUILD_VARIANT_CFG}" ]; then + custom_build_variant_cfg_flag="--custom-build-variant-cfg=${MH_CUSTOM_BUILD_VARIANT_CFG}" +fi + +# $TOOLTOOL_CACHE bypasses mozharness completely and is read by tooltool_wrapper.sh to set the +# cache. However, only some mozharness scripts use tooltool_wrapper.sh, so this may not be +# entirely effective. +export TOOLTOOL_CACHE + +export MOZ_OBJDIR + +config_path_cmds="" +for path in ${MOZHARNESS_CONFIG_PATHS}; do + config_path_cmds="${config_path_cmds} --extra-config-path ${GECKO_PATH}/${path}" +done + +# support multiple, space delimited, config files +config_cmds="" +for cfg in $MOZHARNESS_CONFIG; do + config_cmds="${config_cmds} --config ${cfg}" +done + +# if MOZHARNESS_ACTIONS is given, only run those actions (completely overriding default_actions +# in the mozharness configuration) +if [ -n "$MOZHARNESS_ACTIONS" ]; then + actions="" + for action in $MOZHARNESS_ACTIONS; do + actions="$actions --$action" + done +fi + +# if MOZHARNESS_OPTIONS is given, append them to mozharness command line run +if [ -n "$MOZHARNESS_OPTIONS" ]; then + options="" + for option in $MOZHARNESS_OPTIONS; do + options="$options --$option" + done +fi + +cd /builds/worker + +$GECKO_PATH/mach python -- \ + $GECKO_PATH/testing/${MOZHARNESS_SCRIPT} \ + ${config_path_cmds} \ + ${config_cmds} \ + $debug_flag \ + $custom_build_variant_cfg_flag \ + $actions \ + $options \ + --log-level=debug \ + --work-dir=$WORKSPACE \ + --branch=${MH_BRANCH} \ + --build-pool=${MH_BUILD_POOL} diff --git a/taskcluster/scripts/builder/build-sm-package.sh b/taskcluster/scripts/builder/build-sm-package.sh new file mode 100755 index 0000000000..816256ea9c --- /dev/null +++ b/taskcluster/scripts/builder/build-sm-package.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -xe + +# Default variables values. +: ${WORK:=$HOME/workspace} + +mkdir -p $UPLOAD_DIR + +# Package up the sources into the release tarball. +AUTOMATION=1 DIST=$UPLOAD_DIR $GECKO_PATH/js/src/make-source-package.py + +# Extract the tarball into a new directory in the workspace. + +PACKAGE_DIR=$WORK/sm-package + +# Do not use -p option because the package directory should not exist. +mkdir $PACKAGE_DIR +pushd $PACKAGE_DIR + +tar -xvf $UPLOAD_DIR/mozjs-*.tar.*z* + +: ${PYTHON3:=python3} + +status=0 +( + # Build the freshly extracted, packaged SpiderMonkey. + cd ./mozjs-* + AUTOMATION=1 $PYTHON3 js/src/devtools/automation/autospider.py --skip-tests=checks $SPIDERMONKEY_VARIANT +) || status=$? + +# Copy artifacts for upload by TaskCluster +cp -rL ./mozjs-*/obj-spider/dist/bin/{js,jsapi-tests,js-gdb.py,libmozjs*} $UPLOAD_DIR + +exit $status diff --git a/taskcluster/scripts/builder/build-sm.sh b/taskcluster/scripts/builder/build-sm.sh new file mode 100755 index 0000000000..7ee31bbcf4 --- /dev/null +++ b/taskcluster/scripts/builder/build-sm.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -x + +# Default variables values. +: ${SPIDERMONKEY_VARIANT:=plain} +: ${WORK:=$HOME/workspace} +: ${PYTHON3:=python3} + +# Ensure upload dir exists +mkdir -p $UPLOAD_DIR + +# Run the script +export MOZ_UPLOAD_DIR="$(cd "$UPLOAD_DIR"; pwd)" +export OBJDIR=$WORK/obj-spider +AUTOMATION=1 $PYTHON3 $GECKO_PATH/js/src/devtools/automation/autospider.py ${SPIDERMONKEY_PLATFORM:+--platform=$SPIDERMONKEY_PLATFORM} $SPIDERMONKEY_VARIANT +BUILD_STATUS=$? + +# Copy artifacts for upload by TaskCluster. +upload=${MOZ_JS_UPLOAD_BINARIES_DEFAULT-1} +# User-provided override switch. +if [ -n "$MOZ_JS_UPLOAD_BINARIES" ]; then + upload=1 +fi +if [ "$upload" = "1" ]; then + ( + cd "$OBJDIR/dist/bin" + zip "$UPLOAD_DIR/target.jsshell.zip" {js,jsapi-tests,js-gdb.py,libnspr4.so,libplds4.so,libplc4.so} + ) + cp -L "$OBJDIR/mozinfo.json" "$UPLOAD_DIR/target.mozinfo.json" + + # Fuzzing users want the correct version of llvm-symbolizer available in the + # same directory as the built output. + if [ -d "$MOZ_FETCHES_DIR/llvm-symbolizer" ]; then + for f in "$MOZ_FETCHES_DIR/llvm-symbolizer/bin/llvm-symbolizer"*; do + gzip -c "$f" > "$UPLOAD_DIR/llvm-symbolizer.gz" || echo "gzip $f failed" >&2 + break + done + fi +else # !upload +# Provide a note for users on why we don't include artifacts for these builds +# by default, and how they can get the artifacts if they really need them. + cat >"$UPLOAD_DIR"/README-artifacts.txt <<'EOF' +Artifact upload has been disabled for this build due to infrequent usage of the +generated artifacts. If you find yourself in a position where you need the +shell or similar artifacts from this build, please redo your push with the +environment variable MOZ_JS_UPLOAD_BINARIES set to 1. You can provide this as +the option `--env MOZ_JS_UPLOAD_BINARIES=1` to `mach try fuzzy` or `mach try auto`. +EOF +fi + +# Fuzzing also uses a few fields in target.json file for automated downloads to +# identify what was built. +if [ -n "$MOZ_BUILD_DATE" ] && [ -n "$GECKO_HEAD_REV" ]; then + cat >"$UPLOAD_DIR"/target.json < +Date: Thu, 14 Oct 2021 20:59:27 +0200 +Subject: [PATCH 01/10] Initial commit for compiler, preload and userspace + tools + +--- + config.h | 2 + + llvm_mode/Makefile | 20 +++------ + llvm_mode/afl-llvm-pass.so.cc | 3 +- + llvm_mode/afl-llvm-rt.o.c | 83 ++++++++++++++++++++++++++++++++--- + 4 files changed, 87 insertions(+), 21 deletions(-) + +diff --git a/config.h b/config.h +index ea6aac4..b21298d 100644 +--- a/config.h ++++ b/config.h +@@ -328,6 +328,8 @@ + #define MAP_SIZE_POW2 16 + #define MAP_SIZE (1 << MAP_SIZE_POW2) + ++#define STATE_STR_LEN 12 ++ + /* Maximum allocator request size (keep well under INT_MAX): */ + + #define MAX_ALLOC 0x40000000 +diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile +index 7617f91..823e959 100644 +--- a/llvm_mode/Makefile ++++ b/llvm_mode/Makefile +@@ -23,6 +23,7 @@ BIN_PATH = $(PREFIX)/bin + VERSION = $(shell grep '^\#define VERSION ' ../config.h | cut -d '"' -f2) + + LLVM_CONFIG ?= llvm-config ++LLVM_BINPATH = $(shell $(LLVM_CONFIG) --bindir) + + CFLAGS ?= -O3 -funroll-loops + CFLAGS += -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign \ +@@ -51,8 +52,8 @@ endif + # probably better. + + ifeq "$(origin CC)" "default" +- CC = clang +- CXX = clang++ ++ CC = $(LLVM_BINPATH)/clang ++ CXX = $(LLVM_BINPATH)/clang++ + endif + + ifndef AFL_TRACE_PC +@@ -61,7 +62,7 @@ else + PROGS = ../afl-clang-fast ../afl-llvm-rt.o ../afl-llvm-rt-32.o ../afl-llvm-rt-64.o + endif + +-all: test_deps $(PROGS) test_build all_done ++all: test_deps $(PROGS) all_done + + test_deps: + ifndef AFL_TRACE_PC +@@ -94,18 +95,7 @@ endif + @printf "[*] Building 64-bit variant of the runtime (-m64)... " + @$(CC) $(CFLAGS) -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi + +-test_build: $(PROGS) +- @echo "[*] Testing the CC wrapper and instrumentation output..." +- unset AFL_USE_ASAN AFL_USE_MSAN AFL_INST_RATIO; AFL_QUIET=1 AFL_PATH=. AFL_CC=$(CC) ../afl-clang-fast $(CFLAGS) ../test-instr.c -o test-instr $(LDFLAGS) +-# Use /dev/null to avoid problems with optimization messing up expected +-# branches. See https://github.com/google/AFL/issues/30. +- ../afl-showmap -m none -q -o .test-instr0 ./test-instr < /dev/null +- echo 1 | ../afl-showmap -m none -q -o .test-instr1 ./test-instr +- @rm -f test-instr +- @cmp -s .test-instr0 .test-instr1; DR="$$?"; rm -f .test-instr0 .test-instr1; if [ "$$DR" = "0" ]; then echo; echo "Oops, the instrumentation does not seem to be behaving correctly!"; echo; echo "Please ping to troubleshoot the issue."; echo; exit 1; fi +- @echo "[+] All right, the instrumentation seems to be working!" +- +-all_done: test_build ++all_done: + @echo "[+] All done! You can now use '../afl-clang-fast' to compile programs." + + .NOTPARALLEL: clean +diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc +index 154a5db..0bfbfdf 100644 +--- a/llvm_mode/afl-llvm-pass.so.cc ++++ b/llvm_mode/afl-llvm-pass.so.cc +@@ -105,7 +105,8 @@ bool AFLCoverage::runOnModule(Module &M) { + + GlobalVariable *AFLMapPtr = + new GlobalVariable(M, PointerType::get(Int8Ty, 0), false, +- GlobalValue::ExternalLinkage, 0, "__afl_area_ptr"); ++ GlobalVariable::ExternalLinkage, 0, "__afl_area_ptr", ++ 0, GlobalVariable::GeneralDynamicTLSModel, 0, false); + + GlobalVariable *AFLPrevLoc = new GlobalVariable( + M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", +diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c +index 60475c9..536adb9 100644 +--- a/llvm_mode/afl-llvm-rt.o.c ++++ b/llvm_mode/afl-llvm-rt.o.c +@@ -41,6 +41,10 @@ + #include + #include + #include ++#include ++ ++#define gettid() ((pid_t)syscall(SYS_gettid)) ++ + + /* This is a somewhat ugly hack for the experimental 'trace-pc-guard' mode. + Basically, we need to make sure that the forkserver is initialized after +@@ -53,12 +57,23 @@ + #endif /* ^USE_TRACE_PC */ + + ++void enable_afl_tracing(void); ++void disable_afl_tracing(void); ++void init_afl_tracing(void); ++ ++ + /* Globals needed by the injected instrumentation. The __afl_area_initial region + is used for instrumentation output before __afl_map_shm() has a chance to run. + It will end up as .comm, so it shouldn't be too wasteful. */ + ++#define FIREFOX_CONTROL_AREA_ADDR 0x100000 ++ ++u8*** __firefox_afl_control_areas = NULL; ++ + u8 __afl_area_initial[MAP_SIZE]; +-u8* __afl_area_ptr = __afl_area_initial; ++__thread u8* __afl_area_ptr = __afl_area_initial; ++ ++u8* __afl_area_ptr_pre = __afl_area_initial; + + __thread u32 __afl_prev_loc; + +@@ -82,17 +97,15 @@ static void __afl_map_shm(void) { + + u32 shm_id = atoi(id_str); + +- __afl_area_ptr = shmat(shm_id, NULL, 0); ++ __afl_area_ptr_pre = shmat(shm_id, NULL, 0); + + /* Whooooops. */ + +- if (__afl_area_ptr == (void *)-1) _exit(1); ++ if (__afl_area_ptr_pre == (void *)-1) _exit(1); + + /* Write something into the bitmap so that even with low AFL_INST_RATIO, + our parent doesn't give up on us. */ + +- __afl_area_ptr[0] = 1; +- + } + + } +@@ -256,6 +269,16 @@ void __afl_manual_init(void) { + + __attribute__((constructor(CONST_PRIO))) void __afl_auto_init(void) { + ++ __firefox_afl_control_areas = mmap((void*)FIREFOX_CONTROL_AREA_ADDR, 0x1000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED , 0, 0); ++ if(__firefox_afl_control_areas == (void*)-1){ ++ exit(1); ++ } ++ ++ __firefox_afl_control_areas[0] = (u8**) enable_afl_tracing; ++ __firefox_afl_control_areas[1] = (u8**) disable_afl_tracing; ++ __firefox_afl_control_areas[2] = (u8**) init_afl_tracing; ++ __firefox_afl_control_areas[3] = (u8**) 1337; ++ + is_persistent = !!getenv(PERSIST_ENV_VAR); + + if (getenv(DEFER_ENV_VAR)) return; +@@ -310,5 +333,55 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t* start, uint32_t* stop) { + start++; + + } ++} ++ ++void enable_afl_tracing(void){ ++ if(__afl_area_ptr == __afl_area_initial && __afl_area_ptr_pre != __afl_area_initial){ ++ __afl_area_ptr = __afl_area_ptr_pre; ++ } ++} ++ ++void disable_afl_tracing(void){ ++ if(__afl_area_ptr != __afl_area_initial){ ++ __afl_area_ptr = __afl_area_initial; ++ } ++} ++ ++void init_afl_tracing(){ ++ __afl_area_ptr_pre[0] = 1; ++} ++ ++void print_afl_bitmap(void){ ++ if(__afl_area_ptr_pre == __afl_area_initial){ ++ return; ++ } ++ void* data = __afl_area_ptr_pre; ++ int size = 2 << 15; ++ char ascii[17]; ++ size_t i, j; ++ ascii[16] = '\0'; ++ for (i = 0; i < size; ++i) { ++ printf("%02X ", ((unsigned char*)data)[i]); ++ if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') { ++ ascii[i % 16] = ((unsigned char*)data)[i]; ++ } else { ++ ascii[i % 16] = '.'; ++ } ++ if ((i+1) % 8 == 0 || i+1 == size) { ++ printf(" "); ++ if ((i+1) % 16 == 0) { ++ printf("| %s \n", ascii); ++ } else if (i+1 == size) { ++ ascii[(i+1) % 16] = '\0'; ++ if ((i+1) % 16 <= 8) { ++ printf(" "); ++ } ++ for (j = (i+1) % 16; j < 16; ++j) { ++ printf(" "); ++ } ++ printf("| %s \n", ascii); ++ } ++ } ++ } + + } +-- +2.37.1 + +From 003221dd9fec462177445040c7fa57c09397c684 Mon Sep 17 00:00:00 2001 +From: "Christian Holler (:decoder)" +Date: Fri, 15 Oct 2021 11:55:02 +0200 +Subject: [PATCH 02/10] [compiler] Add selective instrumentation through + AFL_INST_FILTER + +--- + llvm_mode/afl-clang-fast.c | 57 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 56 insertions(+), 1 deletion(-) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index c154e01..b5aa521 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -29,6 +29,9 @@ + */ + + #define AFL_MAIN ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE ++#endif + + #include "../config.h" + #include "../types.h" +@@ -39,6 +42,7 @@ + #include + #include + #include ++#include + + static u8* obj_path; /* Path to runtime libraries */ + static u8** cc_params; /* Parameters passed to the real CC */ +@@ -119,13 +123,63 @@ static void edit_params(u32 argc, char** argv) { + cc_params[0] = alt_cc ? alt_cc : (u8*)"clang"; + } + ++#define CPP_SUFF ".cpp" ++#define CPP_SLEN (sizeof(CPP_SUFF)-1) ++#define C_SUFF ".c" ++#define C_SLEN (sizeof(C_SUFF)-1) ++ u8 should_instrument = 1; ++ ++ u8* instfilter = getenv("AFL_INST_FILTER"); ++ ++ if (instfilter) { ++ ++ should_instrument = 0; ++ ++ char cwd [PATH_MAX]; ++ getcwd(cwd, sizeof(cwd)); ++ ++ for (u32 argi = 0; argi < argc; ++argi) { ++ u8 is_source = 0; ++ u32 arglen = strlen(argv[argi]); ++ //SAYF("Checking: %s\n", argv[argi]); ++ if (arglen > CPP_SLEN) { ++ if (!memcmp(argv[argi] + arglen - CPP_SLEN, CPP_SUFF, CPP_SLEN)) { ++ is_source = 1; ++ } ++ } ++ ++ if (!is_source && arglen > C_SLEN) { ++ if (!memcmp(argv[argi] + arglen - C_SLEN, C_SUFF, C_SLEN)) { ++ is_source = 1; ++ } ++ } ++ ++ if (is_source) { ++ //SAYF("This is a source file: %s\n", argv[argi]); ++ char relpath [PATH_MAX]; ++ strcat(relpath, cwd); ++ strcat(relpath, "/"); ++ strcat(relpath, argv[argi]); ++ char abspath [PATH_MAX]; ++ if (realpath(relpath, abspath)) { ++ if (strcasestr(abspath, instfilter)) { ++ should_instrument = 1; ++ SAYF("Instrumenting file %s\n", argv[argi]); ++ break; ++ } ++ } ++ } ++ } ++ ++ } ++ + /* There are two ways to compile afl-clang-fast. In the traditional mode, we + use afl-llvm-pass.so to inject instrumentation. In the experimental + 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks + instead. The latter is a very recent addition - see: + + http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */ +- ++if (should_instrument) { + #ifdef USE_TRACE_PC + cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard"; + cc_params[cc_par_cnt++] = "-mllvm"; +@@ -136,6 +190,7 @@ static void edit_params(u32 argc, char** argv) { + cc_params[cc_par_cnt++] = "-Xclang"; + cc_params[cc_par_cnt++] = alloc_printf("%s/afl-llvm-pass.so", obj_path); + #endif /* ^USE_TRACE_PC */ ++} + + cc_params[cc_par_cnt++] = "-Qunused-arguments"; + +-- +2.37.1 + +From 3e126e0f9bf21c32cb650d49f5f088b213538854 Mon Sep 17 00:00:00 2001 +From: "Christian Holler (:decoder)" +Date: Tue, 22 Feb 2022 16:44:27 +0100 +Subject: [PATCH 03/10] Fix AFL compiler to ignore wasm-compiled code + +--- + llvm_mode/afl-clang-fast.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index 226ee36..6d4171c 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -213,6 +213,7 @@ if (should_instrument) { + if (strstr(cur, "FORTIFY_SOURCE")) fortify_set = 1; + + if (!strcmp(cur, "-shared")) maybe_linking = 0; ++ if (!strcmp(cur, "--target=wasm32-wasi")) maybe_linking = 0; + + if (!strcmp(cur, "-Wl,-z,defs") || + !strcmp(cur, "-Wl,--no-undefined")) continue; +-- +2.37.1 + +From e2e269e9d00b47cc6a139045688f32b26d30fc85 Mon Sep 17 00:00:00 2001 +From: "Christian Holler (:decoder)" +Date: Thu, 9 Jun 2022 10:20:34 +0200 +Subject: [PATCH 04/10] Update IRBuilder calls to LLVM 14 API + +--- + llvm_mode/afl-llvm-pass.so.cc | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc +index 0bfbfdf..203cffa 100644 +--- a/llvm_mode/afl-llvm-pass.so.cc ++++ b/llvm_mode/afl-llvm-pass.so.cc +@@ -38,12 +38,14 @@ + #include + #include + ++#include "llvm/Pass.h" + #include "llvm/ADT/Statistic.h" + #include "llvm/IR/IRBuilder.h" + #include "llvm/IR/LegacyPassManager.h" + #include "llvm/IR/Module.h" + #include "llvm/Support/Debug.h" + #include "llvm/Transforms/IPO/PassManagerBuilder.h" ++#include "llvm/Passes/OptimizationLevel.h" + + using namespace llvm; + +@@ -132,20 +134,20 @@ bool AFLCoverage::runOnModule(Module &M) { + + /* Load prev_loc */ + +- LoadInst *PrevLoc = IRB.CreateLoad(AFLPrevLoc); ++ LoadInst *PrevLoc = IRB.CreateLoad(IRB.getInt32Ty(), AFLPrevLoc); + PrevLoc->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None)); + Value *PrevLocCasted = IRB.CreateZExt(PrevLoc, IRB.getInt32Ty()); + + /* Load SHM pointer */ + +- LoadInst *MapPtr = IRB.CreateLoad(AFLMapPtr); ++ LoadInst *MapPtr = IRB.CreateLoad(PointerType::get(Int8Ty, 0), AFLMapPtr); + MapPtr->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None)); + Value *MapPtrIdx = +- IRB.CreateGEP(MapPtr, IRB.CreateXor(PrevLocCasted, CurLoc)); ++ IRB.CreateGEP(Int8Ty, MapPtr, IRB.CreateXor(PrevLocCasted, CurLoc)); + + /* Update bitmap */ + +- LoadInst *Counter = IRB.CreateLoad(MapPtrIdx); ++ LoadInst *Counter = IRB.CreateLoad(IRB.getInt8Ty(), MapPtrIdx); + Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None)); + Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1)); + IRB.CreateStore(Incr, MapPtrIdx) +-- +2.37.1 + +From be3f79c5b472e5a8a06266d7a74ebb162b3d8cba Mon Sep 17 00:00:00 2001 +From: "Christian Holler (:decoder)" +Date: Thu, 9 Jun 2022 11:37:44 +0200 +Subject: [PATCH 05/10] Switch AFLCoverage pass to new pass manager + +--- + llvm_mode/afl-clang-fast.c | 7 ++--- + llvm_mode/afl-llvm-pass.so.cc | 58 +++++++++++++++++------------------ + 2 files changed, 31 insertions(+), 34 deletions(-) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index 6d4171c..5e00286 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -178,14 +178,12 @@ static void edit_params(u32 argc, char** argv) { + http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */ + if (should_instrument) { + #ifdef USE_TRACE_PC ++ #error "unsupported" + cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard"; + cc_params[cc_par_cnt++] = "-mllvm"; + cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0"; + #else +- cc_params[cc_par_cnt++] = "-Xclang"; +- cc_params[cc_par_cnt++] = "-load"; +- cc_params[cc_par_cnt++] = "-Xclang"; +- cc_params[cc_par_cnt++] = alloc_printf("%s/afl-llvm-pass.so", obj_path); ++ cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path); + #endif /* ^USE_TRACE_PC */ + } + +diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc +index 203cffa..1483943 100644 +--- a/llvm_mode/afl-llvm-pass.so.cc ++++ b/llvm_mode/afl-llvm-pass.so.cc +@@ -41,44 +41,57 @@ + #include "llvm/Pass.h" + #include "llvm/ADT/Statistic.h" + #include "llvm/IR/IRBuilder.h" +-#include "llvm/IR/LegacyPassManager.h" + #include "llvm/IR/Module.h" +-#include "llvm/Support/Debug.h" +-#include "llvm/Transforms/IPO/PassManagerBuilder.h" ++#include "llvm/IR/PassManager.h" + #include "llvm/Passes/OptimizationLevel.h" ++#include "llvm/Passes/PassPlugin.h" ++#include "llvm/Passes/PassBuilder.h" ++#include "llvm/Support/Debug.h" + + using namespace llvm; + + namespace { + +- class AFLCoverage : public ModulePass { ++ class AFLCoverage : public PassInfoMixin { + + public: + +- static char ID; +- AFLCoverage() : ModulePass(ID) { } +- +- bool runOnModule(Module &M) override; +- +- // StringRef getPassName() const override { +- // return "American Fuzzy Lop Instrumentation"; +- // } ++ AFLCoverage() { } + ++ PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM); + }; + + } + ++extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK ++llvmGetPassPluginInfo() { ++ ++ return {LLVM_PLUGIN_API_VERSION, "AFLCoverage", "v0.1", ++ /* lambda to insert our pass into the pass pipeline. */ ++ [](PassBuilder &PB) { + +-char AFLCoverage::ID = 0; ++ #if LLVM_VERSION_MAJOR <= 13 ++ using OptimizationLevel = typename PassBuilder::OptimizationLevel; ++ #endif ++ PB.registerOptimizerLastEPCallback( ++ [](ModulePassManager &MPM, OptimizationLevel OL) { + ++ MPM.addPass(AFLCoverage()); + +-bool AFLCoverage::runOnModule(Module &M) { ++ }); ++ }}; ++ ++} ++ ++PreservedAnalyses AFLCoverage::run(Module &M, ModuleAnalysisManager &MAM) { + + LLVMContext &C = M.getContext(); + + IntegerType *Int8Ty = IntegerType::getInt8Ty(C); + IntegerType *Int32Ty = IntegerType::getInt32Ty(C); + ++ auto PA = PreservedAnalyses::all(); ++ + /* Show a banner */ + + char be_quiet = 0; +@@ -175,21 +188,6 @@ bool AFLCoverage::runOnModule(Module &M) { + + } + +- return true; ++ return PA; + + } +- +- +-static void registerAFLPass(const PassManagerBuilder &, +- legacy::PassManagerBase &PM) { +- +- PM.add(new AFLCoverage()); +- +-} +- +- +-static RegisterStandardPasses RegisterAFLPass( +- PassManagerBuilder::EP_ModuleOptimizerEarly, registerAFLPass); +- +-static RegisterStandardPasses RegisterAFLPass0( +- PassManagerBuilder::EP_EnabledOnOptLevel0, registerAFLPass); +-- +2.37.1 + +From bd47b9066e616fdfdad1808ec0365992a4962ff2 Mon Sep 17 00:00:00 2001 +From: Jesse Schwartzentruber +Date: Tue, 9 Aug 2022 17:18:15 -0400 +Subject: [PATCH 06/10] Add install step for afl-clang-fast only + +--- + llvm_mode/Makefile | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile +index 823e959..b155eb5 100644 +--- a/llvm_mode/Makefile ++++ b/llvm_mode/Makefile +@@ -103,3 +103,13 @@ all_done: + clean: + rm -f *.o *.so *~ a.out core core.[1-9][0-9]* test-instr .test-instr0 .test-instr1 + rm -f $(PROGS) ../afl-clang-fast++ ++ ++install: all ++ mkdir -p -m 755 $${DESTDIR}$(BIN_PATH) $${DESTDIR}$(HELPER_PATH) ++ifndef AFL_TRACE_PC ++ if [ -f ../afl-clang-fast -a -f ../afl-llvm-pass.so -a -f ../afl-llvm-rt.o ]; then set -e; install -m 755 ../afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 ../afl-llvm-pass.so ../afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi ++else ++ if [ -f ../afl-clang-fast -a -f ../afl-llvm-rt.o ]; then set -e; install -m 755 ../afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 ../afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi ++endif ++ if [ -f ../afl-llvm-rt-32.o ]; then set -e; install -m 755 ../afl-llvm-rt-32.o $${DESTDIR}$(HELPER_PATH); fi ++ if [ -f ../afl-llvm-rt-64.o ]; then set -e; install -m 755 ../afl-llvm-rt-64.o $${DESTDIR}$(HELPER_PATH); fi +-- +2.37.1 + +From 11f8b04786239bc8daa2c7a207b5e19f5c19ec6e Mon Sep 17 00:00:00 2001 +From: Jesse Schwartzentruber +Date: Thu, 11 Aug 2022 11:39:37 -0400 +Subject: [PATCH 07/10] Reenable instrumentation tests + +--- + config.h | 4 ++++ + llvm_mode/Makefile | 15 +++++++++++++-- + llvm_mode/afl-llvm-rt.o.c | 1 + + 3 files changed, 18 insertions(+), 2 deletions(-) + +diff --git a/config.h b/config.h +index b21298d..c035af2 100644 +--- a/config.h ++++ b/config.h +@@ -285,6 +285,10 @@ + #define PERSIST_ENV_VAR "__AFL_PERSISTENT" + #define DEFER_ENV_VAR "__AFL_DEFER_FORKSRV" + ++/* Enable tracing by default at startup */ ++ ++#define TRACE_ENV_VAR "__AFL_ENABLE_TRACE" ++ + /* In-code signatures for deferred and persistent mode. */ + + #define PERSIST_SIG "##SIG_AFL_PERSISTENT##" +diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile +index b155eb5..4f460ff 100644 +--- a/llvm_mode/Makefile ++++ b/llvm_mode/Makefile +@@ -62,7 +62,7 @@ else + PROGS = ../afl-clang-fast ../afl-llvm-rt.o ../afl-llvm-rt-32.o ../afl-llvm-rt-64.o + endif + +-all: test_deps $(PROGS) all_done ++all: test_deps $(PROGS) test_build all_done + + test_deps: + ifndef AFL_TRACE_PC +@@ -95,7 +95,18 @@ endif + @printf "[*] Building 64-bit variant of the runtime (-m64)... " + @$(CC) $(CFLAGS) -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi + +-all_done: ++test_build: $(PROGS) ++ @echo "[*] Testing the CC wrapper and instrumentation output..." ++ unset AFL_USE_ASAN AFL_USE_MSAN AFL_INST_RATIO; AFL_QUIET=1 AFL_PATH=. AFL_CC=$(CC) ../afl-clang-fast $(CFLAGS) ../test-instr.c -o test-instr $(LDFLAGS) ++# Use /dev/null to avoid problems with optimization messing up expected ++# branches. See https://github.com/google/AFL/issues/30. ++ __AFL_ENABLE_TRACE=1 ../afl-showmap -m none -q -o .test-instr0 ./test-instr < /dev/null ++ echo 1 | __AFL_ENABLE_TRACE=1 ../afl-showmap -m none -q -o .test-instr1 ./test-instr ++ @rm -f test-instr ++ @cmp -s .test-instr0 .test-instr1; DR="$$?"; rm -f .test-instr0 .test-instr1; if [ "$$DR" = "0" ]; then echo; echo "Oops, the instrumentation does not seem to be behaving correctly!"; echo; echo "Please ping to troubleshoot the issue."; echo; exit 1; fi ++ @echo "[+] All right, the instrumentation seems to be working!" ++ ++all_done: test_build + @echo "[+] All done! You can now use '../afl-clang-fast' to compile programs." + + .NOTPARALLEL: clean +diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c +index 536adb9..c3b710f 100644 +--- a/llvm_mode/afl-llvm-rt.o.c ++++ b/llvm_mode/afl-llvm-rt.o.c +@@ -285,6 +285,7 @@ __attribute__((constructor(CONST_PRIO))) void __afl_auto_init(void) { + + __afl_manual_init(); + ++ if (getenv(TRACE_ENV_VAR)) enable_afl_tracing(); + } + + +-- +2.37.1 + +From dd1050393281f2ea4c9b6521f5e48bec365b0a8a Mon Sep 17 00:00:00 2001 +From: Jesse Schwartzentruber +Date: Thu, 11 Aug 2022 13:17:34 -0400 +Subject: [PATCH 08/10] Add search in HELPER_PATH for libraries. + +--- + llvm_mode/afl-clang-fast.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index 5e00286..70b6af2 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -85,6 +85,16 @@ static void find_obj(u8* argv0) { + return; + } + ++ ck_free(tmp); ++ tmp = alloc_printf("%s/../lib/afl/afl-llvm-rt.o", dir); ++ ++ if (!access(tmp, R_OK)) { ++ ck_free(tmp); ++ obj_path = alloc_printf("%s/../lib/afl", dir); ++ ck_free(dir); ++ return; ++ } ++ + ck_free(tmp); + ck_free(dir); + +-- +2.37.1 + +From 9eb9eaf26d473bb8479df380f918a1bf83250029 Mon Sep 17 00:00:00 2001 +From: Jesse Schwartzentruber +Date: Thu, 11 Aug 2022 19:16:36 -0400 +Subject: [PATCH 09/10] Don't instrument at all for wasm + +--- + llvm_mode/afl-clang-fast.c | 41 ++++++++++++++++++++------------------ + 1 file changed, 22 insertions(+), 19 deletions(-) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index 70b6af2..0d1e76b 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -180,23 +180,6 @@ static void edit_params(u32 argc, char** argv) { + + } + +- /* There are two ways to compile afl-clang-fast. In the traditional mode, we +- use afl-llvm-pass.so to inject instrumentation. In the experimental +- 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks +- instead. The latter is a very recent addition - see: +- +- http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */ +-if (should_instrument) { +-#ifdef USE_TRACE_PC +- #error "unsupported" +- cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard"; +- cc_params[cc_par_cnt++] = "-mllvm"; +- cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0"; +-#else +- cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path); +-#endif /* ^USE_TRACE_PC */ +-} +- + cc_params[cc_par_cnt++] = "-Qunused-arguments"; + + /* Detect stray -v calls from ./configure scripts. */ +@@ -222,7 +204,10 @@ if (should_instrument) { + if (strstr(cur, "FORTIFY_SOURCE")) fortify_set = 1; + + if (!strcmp(cur, "-shared")) maybe_linking = 0; +- if (!strcmp(cur, "--target=wasm32-wasi")) maybe_linking = 0; ++ if (!strcmp(cur, "--target=wasm32-wasi")) { ++ maybe_linking = 0; ++ should_instrument = 0; ++ } + + if (!strcmp(cur, "-Wl,-z,defs") || + !strcmp(cur, "-Wl,--no-undefined")) continue; +@@ -231,6 +216,23 @@ if (should_instrument) { + + } + ++ /* There are two ways to compile afl-clang-fast. In the traditional mode, we ++ use afl-llvm-pass.so to inject instrumentation. In the experimental ++ 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks ++ instead. The latter is a very recent addition - see: ++ ++ http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */ ++ if (should_instrument) { ++#ifdef USE_TRACE_PC ++ #error "unsupported" ++ cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard"; ++ cc_params[cc_par_cnt++] = "-mllvm"; ++ cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0"; ++#else ++ cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path); ++#endif /* ^USE_TRACE_PC */ ++ } ++ + if (getenv("AFL_HARDEN")) { + + cc_params[cc_par_cnt++] = "-fstack-protector-all"; +-- +2.37.1 + +From 6ea1771e95d6f4c19453047996b0fc4ffa3fdeda Mon Sep 17 00:00:00 2001 +From: Jesse Schwartzentruber +Date: Wed, 20 Apr 2022 15:39:28 -0400 +Subject: [PATCH 10/10] fix instrumentation for + -Werror,-Wunused-but-set-variable + +`used` is so it isn't optimized out. `unused` is to avoid the warning. +--- + llvm_mode/afl-clang-fast.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c +index 0d1e76b..3bc0daa 100644 +--- a/llvm_mode/afl-clang-fast.c ++++ b/llvm_mode/afl-clang-fast.c +@@ -321,7 +321,7 @@ static void edit_params(u32 argc, char** argv) { + */ + + cc_params[cc_par_cnt++] = "-D__AFL_LOOP(_A)=" +- "({ static volatile char *_B __attribute__((used)); " ++ "({ static volatile char *_B __attribute__((used,unused)); " + " _B = (char*)\"" PERSIST_SIG "\"; " + #ifdef __APPLE__ + "__attribute__((visibility(\"default\"))) " +@@ -333,7 +333,7 @@ static void edit_params(u32 argc, char** argv) { + "_L(_A); })"; + + cc_params[cc_par_cnt++] = "-D__AFL_INIT()=" +- "do { static volatile char *_A __attribute__((used)); " ++ "do { static volatile char *_A __attribute__((used,unused)); " + " _A = (char*)\"" DEFER_SIG "\"; " + #ifdef __APPLE__ + "__attribute__((visibility(\"default\"))) " +-- +2.37.1 + +From 0884906de0cdd007b28b15aae35cee484d1bc31d Mon Sep 17 00:00:00 2001 +From: Mike Hommey +Date: Tue, 6 Sep 2022 11:08:55 +0900 +Subject: [PATCH] Fix build failures with clang 15 + +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 5e800db..c875f2d 100644 +--- a/Makefile ++++ b/Makefile +@@ -50,7 +50,7 @@ ifndef AFL_NO_X86 + + test_x86: + @echo "[*] Checking for the ability to compile x86 code..." +- @echo 'main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 ) ++ @echo 'int main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 ) + @rm -f .test + @echo "[+] Everything seems to be working, ready to compile." + +-- +2.37.1.1.g659da70093 + +From 0544d02715a26a032f109984d5f70360b80f3875 Mon Sep 17 00:00:00 2001 +From: Mike Hommey +Date: Wed, 14 Dec 2022 16:25:53 +0900 +Subject: [PATCH] Add missing include + +--- + llvm_mode/afl-llvm-pass.so.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc +index 1483943..0a7c37a 100644 +--- a/llvm_mode/afl-llvm-pass.so.cc ++++ b/llvm_mode/afl-llvm-pass.so.cc +@@ -39,6 +39,7 @@ + #include + + #include "llvm/Pass.h" ++#include "llvm/ADT/None.h" + #include "llvm/ADT/Statistic.h" + #include "llvm/IR/IRBuilder.h" + #include "llvm/IR/Module.h" +-- +2.38.1.1.g6d9df9d320 + diff --git a/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh b/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh new file mode 100755 index 0000000000..bf91d64709 --- /dev/null +++ b/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh @@ -0,0 +1,21 @@ +#!/bin/bash -vex + +set -x -e + +echo "running as" $(id) + +set -v + +cd $GECKO_PATH + +# Needed for Nexus +export PATH=$MOZ_FETCHES_DIR/jdk-8/bin:$PATH + +. taskcluster/scripts/misc/android-gradle-dependencies/before.sh + +export MOZCONFIG=mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite +./mach build +./mach gradle downloadDependencies +./mach android gradle-dependencies + +. taskcluster/scripts/misc/android-gradle-dependencies/after.sh diff --git a/taskcluster/scripts/misc/android-gradle-dependencies.sh b/taskcluster/scripts/misc/android-gradle-dependencies.sh new file mode 100755 index 0000000000..2624dc961a --- /dev/null +++ b/taskcluster/scripts/misc/android-gradle-dependencies.sh @@ -0,0 +1,21 @@ +#!/bin/bash -vex + +set -x -e + +echo "running as" $(id) + +set -v + +cd $GECKO_PATH + +# Nexus needs Java 8 +export PATH=$MOZ_FETCHES_DIR/jdk-8/bin:$PATH + +. taskcluster/scripts/misc/android-gradle-dependencies/before.sh + +export MOZCONFIG=mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly +./mach build +./mach gradle downloadDependencies +./mach android gradle-dependencies + +. taskcluster/scripts/misc/android-gradle-dependencies/after.sh diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/after.sh b/taskcluster/scripts/misc/android-gradle-dependencies/after.sh new file mode 100755 index 0000000000..446f40db12 --- /dev/null +++ b/taskcluster/scripts/misc/android-gradle-dependencies/after.sh @@ -0,0 +1,32 @@ +#!/bin/bash -vex + +set -x -e + +echo "running as" $(id) + +: WORKSPACE ${WORKSPACE:=/builds/worker/workspace} + +set -v + +# Package everything up. +pushd $WORKSPACE +mkdir -p android-gradle-dependencies /builds/worker/artifacts + +# NEXUS_WORK is exported by `before.sh`. +cp -R ${NEXUS_WORK}/storage/mozilla android-gradle-dependencies +cp -R ${NEXUS_WORK}/storage/central android-gradle-dependencies +cp -R ${NEXUS_WORK}/storage/google android-gradle-dependencies +cp -R ${NEXUS_WORK}/storage/gradle-plugins android-gradle-dependencies + +# The Gradle wrapper will have downloaded and verified the hash of exactly one +# Gradle distribution. It will be located in $GRADLE_USER_HOME, like +# ~/.gradle/wrapper/dists/gradle-2.7-all/$PROJECT_HASH/gradle-2.7-all.zip. We +# want to remove the version from the internal directory for use via tooltool in +# a mozconfig. +cp ${GRADLE_USER_HOME}/wrapper/dists/gradle-*-*/*/gradle-*-*.zip gradle.zip +unzip -q gradle.zip +mv gradle-* android-gradle-dependencies/gradle-dist + +tar cavf /builds/worker/artifacts/android-gradle-dependencies.tar.zst android-gradle-dependencies + +popd diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/before.sh b/taskcluster/scripts/misc/android-gradle-dependencies/before.sh new file mode 100755 index 0000000000..7150731d73 --- /dev/null +++ b/taskcluster/scripts/misc/android-gradle-dependencies/before.sh @@ -0,0 +1,30 @@ +#!/bin/bash -vex + +set -x -e + +echo "running as" $(id) + +: WORKSPACE ${WORKSPACE:=/builds/worker/workspace} + +set -v + +# Export NEXUS_WORK so that `after.sh` can use it. +export NEXUS_WORK=/builds/worker/workspace/sonatype-nexus-work +mkdir -p ${NEXUS_WORK}/conf +cp /builds/worker/workspace/build/src/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml ${NEXUS_WORK}/conf/nexus.xml + +RUN_AS_USER=worker $MOZ_FETCHES_DIR/sonatype-nexus/bin/nexus restart + +# Wait "a while" for Nexus to actually start. Don't fail if this fails. +wget --quiet --retry-connrefused --waitretry=2 --tries=100 \ + http://localhost:8081/nexus/service/local/status || true +rm -rf status + +# It's helpful when debugging to see the "latest state". +curl http://localhost:8081/nexus/service/local/status || true + +# Verify Nexus has actually started. Fail if this fails. +curl --fail --silent --location http://localhost:8081/nexus/service/local/status | grep 'STARTED' + +# It's helpful when debugging to see the repository configurations. +curl http://localhost:8081/nexus/service/local/repositories || true diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml b/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml new file mode 100644 index 0000000000..e3e37373d8 --- /dev/null +++ b/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml @@ -0,0 +1,413 @@ + + + + + 2.8.0 + 2.12.0-01 + + 20000 + 3 + + + + 60000 + + + true + 8082 + strict + + + true + + + + mozilla + Mozilla Maven + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + true + 1440 + true + true + true + READ_ONLY + true + true + + file + + + https://maven.mozilla.org/maven2/ + + + RELEASE + STRICT + true + false + -1 + 1440 + 1440 + true + + + + gradle-plugins + Gradle Plugins + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + true + 1440 + true + true + true + READ_ONLY + true + true + + file + + + https://plugins.gradle.org/m2/ + + + RELEASE + STRICT + true + false + -1 + 1440 + 1440 + true + + + + google + google + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + true + 1440 + true + true + true + READ_ONLY + true + true + + file + + + https://maven.google.com/ + + + RELEASE + + STRICT_IF_EXISTS + true + false + -1 + 1440 + 1440 + true + + + + central + Central + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + true + 1440 + true + true + true + READ_ONLY + true + true + + file + + + https://repo1.maven.org/maven2/ + + + ALLOW + -1 + 1440 + false + false + WARN + RELEASE + + + + apache-snapshots + Apache Snapshots + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + true + 1440 + true + true + true + READ_ONLY + true + true + + file + + + https://repository.apache.org/snapshots/ + + + ALLOW + 1440 + 1440 + false + false + WARN + SNAPSHOT + + + + releases + Releases + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + 1440 + true + true + true + ALLOW_WRITE_ONCE + true + true + + file + + + ALLOW + -1 + 1440 + false + false + WARN + RELEASE + + + + snapshots + Snapshots + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + 1440 + true + true + true + ALLOW_WRITE + true + true + + file + + + ALLOW + 1440 + 1440 + false + false + WARN + SNAPSHOT + + + + thirdparty + 3rd party + org.sonatype.nexus.proxy.repository.Repository + maven2 + IN_SERVICE + 1440 + true + true + true + ALLOW_WRITE_ONCE + true + true + + file + + + ALLOW + -1 + 1440 + false + false + WARN + RELEASE + + + + central-m1 + Central M1 shadow + org.sonatype.nexus.proxy.repository.ShadowRepository + m2-m1-shadow + IN_SERVICE + 15 + true + true + true + READ_ONLY + + file + + + central + false + + + + public + Public Repositories + org.sonatype.nexus.proxy.repository.GroupRepository + maven2 + IN_SERVICE + 15 + true + true + true + READ_ONLY + true + + file + + + true + + releases + snapshots + thirdparty + central + + + + + + + + inhouse-stuff + * + inclusive + + ^/(com|org)/somecompany/.* + + + snapshots + releases + + + + apache-stuff + * + exclusive + + ^/org/some-oss/.* + + + releases + snapshots + + + + + + + 1 + All (Maven2) + maven2 + + .* + + + + 2 + All (Maven1) + maven1 + + .* + + + + 3 + All but sources (Maven2) + maven2 + + (?!.*-sources.*).* + + + + 4 + All Metadata (Maven2) + maven2 + + .*maven-metadata\.xml.* + + + + any + All (Any Repository) + any + + .* + + + + site + All (site) + site + + .* + + + + npm + All (npm) + npm + + .* + + + + nuget + All (nuget) + nuget + + .* + + + + rubygems + All (rubygems) + rubygems + + .* + + + + + smtp-host + 25 + smtp-username + {jyU2gDFaNz8HQ4ybBAIdtJ6KL+YB08GXQs7vLPnia3o=} + system@nexus.org + + + diff --git a/taskcluster/scripts/misc/are-we-esmified-yet.py b/taskcluster/scripts/misc/are-we-esmified-yet.py new file mode 100644 index 0000000000..c16658baee --- /dev/null +++ b/taskcluster/scripts/misc/are-we-esmified-yet.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import json +import pathlib +import re +import subprocess +import sys + +TBPL_FAILURE = 2 + +excluded_files = [ + # Testcase for loader. + "js/xpconnect/tests/chrome/file_expandosharing.jsm", + "js/xpconnect/tests/unit/environment_script.js", + "js/xpconnect/tests/unit/bogus_element_type.jsm", + "js/xpconnect/tests/unit/bogus_exports_type.jsm", + "js/xpconnect/tests/unit/envChain.jsm", + "js/xpconnect/tests/unit/envChain_subscript.jsm", + "js/xpconnect/tests/unit/environment_checkscript.jsm", + "js/xpconnect/tests/unit/environment_loadscript.jsm", + "js/xpconnect/tests/unit/import_stack.jsm", + "js/xpconnect/tests/unit/importer.jsm", + "js/xpconnect/tests/unit/jsm_loaded-1.jsm", + "js/xpconnect/tests/unit/jsm_loaded-2.jsm", + "js/xpconnect/tests/unit/jsm_loaded-3.jsm", + "js/xpconnect/tests/unit/not-esmified-not-exported.jsm", + "js/xpconnect/tests/unit/recursive_importA.jsm", + "js/xpconnect/tests/unit/recursive_importB.jsm", + "js/xpconnect/tests/unit/ReturnCodeChild.jsm", + "js/xpconnect/tests/unit/syntax_error.jsm", + "js/xpconnect/tests/unit/TestBlob.jsm", + "js/xpconnect/tests/unit/TestFile.jsm", + "js/xpconnect/tests/unit/uninitialized_lexical.jsm", + "dom/url/tests/file_url.jsm", + "dom/url/tests/file_worker_url.jsm", + "dom/url/tests/test_bug883784.jsm", + "dom/workers/test/WorkerTest.jsm", + "dom/encoding/test/file_stringencoding.jsm", + "remote/shared/messagehandler/test/browser/resources/modules/root/invalid.jsm", + "toolkit/actors/TestProcessActorChild.jsm", + "toolkit/actors/TestProcessActorParent.jsm", + "toolkit/actors/TestWindowChild.jsm", + "toolkit/actors/TestWindowParent.jsm", + # Testcase for build system. + "python/mozbuild/mozbuild/test/backend/data/build/bar.jsm", + "python/mozbuild/mozbuild/test/backend/data/build/baz.jsm", + "python/mozbuild/mozbuild/test/backend/data/build/foo.jsm", + "python/mozbuild/mozbuild/test/backend/data/build/qux.jsm", + # Testcase for test harness. + "testing/mochitest/tests/Harness_sanity/ImportTesting.jsm", + # EXPORTED_SYMBOLS inside testcase. + "tools/lint/eslint/eslint-plugin-mozilla/tests/mark-exported-symbols-as-used.js", +] + +if pathlib.Path(".hg").exists(): + mode = "hg" +elif pathlib.Path(".git").exists(): + mode = "git" +else: + print( + "Error: This script needs to be run inside mozilla-central checkout " + "of either mercurial or git.", + file=sys.stderr, + ) + sys.exit(TBPL_FAILURE) + + +def new_files_struct(): + return { + "jsm": [], + "esm": [], + "subdir": {}, + } + + +def put_file(files, kind, path): + """Put a path into files tree structure.""" + + if str(path) in excluded_files: + return + + name = path.name + + current_files = files + for part in path.parent.parts: + if part not in current_files["subdir"]: + current_files["subdir"][part] = new_files_struct() + current_files = current_files["subdir"][part] + + current_files[kind].append(name) + + +def run(cmd): + """Run command and return output as lines, excluding empty line.""" + lines = subprocess.run(cmd, stdout=subprocess.PIPE).stdout.decode() + return filter(lambda x: x != "", lines.split("\n")) + + +def collect_jsm(files): + """Collect JSM files.""" + kind = "jsm" + + # jsm files + if mode == "hg": + cmd = ["hg", "files", "set:glob:**/*.jsm"] + else: + cmd = ["git", "ls-files", "*.jsm"] + for line in run(cmd): + put_file(files, kind, pathlib.Path(line)) + + # js files with EXPORTED_SYMBOLS + if mode == "hg": + cmd = ["hg", "files", "set:grep('EXPORTED_SYMBOLS = \[') and glob:**/*.js"] + for line in run(cmd): + put_file(files, kind, pathlib.Path(line)) + else: + handled = {} + cmd = ["git", "grep", "EXPORTED_SYMBOLS = \[", "*.js"] + for line in run(cmd): + m = re.search("^([^:]+):", line) + if not m: + continue + path = m.group(1) + if path in handled: + continue + handled[path] = True + put_file(files, kind, pathlib.Path(path)) + + +def collect_esm(files): + """Collect system ESM files.""" + kind = "esm" + + # sys.mjs files + if mode == "hg": + cmd = ["hg", "files", "set:glob:**/*.sys.mjs"] + else: + cmd = ["git", "ls-files", "*.sys.mjs"] + for line in run(cmd): + put_file(files, kind, pathlib.Path(line)) + + +def to_stat(files): + """Convert files tree into status tree.""" + jsm = len(files["jsm"]) + esm = len(files["esm"]) + subdir = {} + + for key, sub_files in files["subdir"].items(): + sub_stat = to_stat(sub_files) + + subdir[key] = sub_stat + jsm += sub_stat["jsm"] + esm += sub_stat["esm"] + + stat = { + "jsm": jsm, + "esm": esm, + } + if len(subdir): + stat["subdir"] = subdir + + return stat + + +if mode == "hg": + cmd = ["hg", "parent", "--template", "{node}"] + commit_hash = list(run(cmd))[0] + + cmd = ["hg", "parent", "--template", "{date|shortdate}"] + date = list(run(cmd))[0] +else: + cmd = ["git", "log", "-1", "--pretty=%H"] + git_hash = list(run(cmd))[0] + cmd = ["git", "cinnabar", "git2hg", git_hash] + commit_hash = list(run(cmd))[0] + + cmd = ["git", "log", "-1", "--pretty=%cs"] + date = list(run(cmd))[0] + +files = new_files_struct() +collect_jsm(files) +collect_esm(files) + +stat = to_stat(files) +stat["hash"] = commit_hash +stat["date"] = date + +print(json.dumps(stat, indent=2)) diff --git a/taskcluster/scripts/misc/browsertime.sh b/taskcluster/scripts/misc/browsertime.sh new file mode 100755 index 0000000000..27ef83c095 --- /dev/null +++ b/taskcluster/scripts/misc/browsertime.sh @@ -0,0 +1,19 @@ +#!/bin/bash -vex + +set -x -e + +echo "running as" $(id) + +set -v + +cd $GECKO_PATH + +export PATH=$PATH:$MOZ_FETCHES_DIR/node/bin + +./mach browsertime --setup + +# We have tools/browsertime/{package.json,node_modules,...} and want +# browsertime/{package.json,node_modules}. +mkdir -p /builds/worker/artifacts +cd tools +tar caf /builds/worker/artifacts/browsertime.tar.zst browsertime diff --git a/taskcluster/scripts/misc/build-afl.sh b/taskcluster/scripts/misc/build-afl.sh new file mode 100755 index 0000000000..371000aa2a --- /dev/null +++ b/taskcluster/scripts/misc/build-afl.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e -x + +artifact=$(basename "$TOOLCHAIN_ARTIFACT") +dir="${artifact%.tar.*}" +scripts="$(realpath "${0%/*}")" + +cd "$MOZ_FETCHES_DIR/AFL" +patch -p1 -i "$scripts/afl-nyx.patch" +make afl-showmap \ + CC="$MOZ_FETCHES_DIR/clang/bin/clang" +# -O3 -funroll-loops as per llvm_mode/Makefile +CFLAGS="-O3 -funroll-loops --sysroot $MOZ_FETCHES_DIR/sysroot" \ +CXXFLAGS="-O3 -funroll-loops --sysroot $MOZ_FETCHES_DIR/sysroot" \ +make -C llvm_mode install \ + DESTDIR="../$dir" \ + PREFIX=/ \ + LLVM_CONFIG="$MOZ_FETCHES_DIR/clang/bin/llvm-config" + +tar caf "$artifact" "$dir" + +mkdir -p "$UPLOAD_DIR" +mv "$artifact" "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/build-binutils-linux.sh b/taskcluster/scripts/misc/build-binutils-linux.sh new file mode 100755 index 0000000000..b4e1d8bf6d --- /dev/null +++ b/taskcluster/scripts/misc/build-binutils-linux.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -x -e -v + +# This script is for building binutils for Linux. + +cd $GECKO_PATH + +PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH + +build/unix/build-binutils/build-binutils.sh $MOZ_FETCHES_DIR + +# Put a tarball in the artifacts dir +mkdir -p $UPLOAD_DIR +cp $MOZ_FETCHES_DIR/binutils.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-breakpad-injector.sh b/taskcluster/scripts/misc/build-breakpad-injector.sh new file mode 100755 index 0000000000..ecd53e13d1 --- /dev/null +++ b/taskcluster/scripts/misc/build-breakpad-injector.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -x -e -v + +# This script is for building libbreakpadinjector.so, currently for linux only + +COMPRESS_EXT=zst + +cd $GECKO_PATH + +export MOZ_OBJDIR=obj-injector + +echo ac_add_options --enable-project=tools/crashreporter/injector > .mozconfig +echo ac_add_options --enable-linker=lld >> .mozconfig + +INJECTOR=libbreakpadinjector.so + +TOOLCHAINS="rustc clang" + +for t in $TOOLCHAINS; do + PATH="$MOZ_FETCHES_DIR/$t/bin:$PATH" +done + +./mach build -v + +mkdir injector +cp $MOZ_OBJDIR/dist/bin/$INJECTOR injector/ + +tar -acf injector.tar.$COMPRESS_EXT injector/ +mkdir -p $UPLOAD_DIR +cp injector.tar.$COMPRESS_EXT $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-cctools-port.sh b/taskcluster/scripts/misc/build-cctools-port.sh new file mode 100755 index 0000000000..d0ea6b78f4 --- /dev/null +++ b/taskcluster/scripts/misc/build-cctools-port.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +# cctools sometimes needs to be rebuilt when clang is modified. +# Until bug 1471905 is addressed, increase the following number +# when a forced rebuild of cctools is necessary: 1 + +set -x -e -v + +# This script is for building cctools (Apple's binutils) for Linux using +# cctools-port (https://github.com/tpoechtrager/cctools-port). +WORKSPACE=$HOME/workspace + +# Set some crosstools-port and libtapi directories +CROSSTOOLS_SOURCE_DIR=$MOZ_FETCHES_DIR/cctools-port +CROSSTOOLS_CCTOOLS_DIR=$CROSSTOOLS_SOURCE_DIR/cctools +CROSSTOOLS_BUILD_DIR=$WORKSPACE/cctools +LIBTAPI_SOURCE_DIR=$MOZ_FETCHES_DIR/apple-libtapi +LIBTAPI_BUILD_DIR=$WORKSPACE/libtapi-build +LDID_SOURCE_DIR=$MOZ_FETCHES_DIR/ldid +CLANG_DIR=$MOZ_FETCHES_DIR/clang + +# Create our directories +mkdir -p $CROSSTOOLS_BUILD_DIR $LIBTAPI_BUILD_DIR + +cd $GECKO_PATH + +# Common setup for libtapi and cctools +export CC=$CLANG_DIR/bin/clang +export CXX=$CLANG_DIR/bin/clang++ +# We also need this LD_LIBRARY_PATH at build time, since tapi builds bits of +# clang build tools, and then executes those tools. +export LD_LIBRARY_PATH=$CLANG_DIR/lib + +# Build libtapi; the included build.sh is not sufficient for our purposes. +cd $LIBTAPI_BUILD_DIR + +# Values taken from build.sh +TAPI_REPOSITORY=tapi-1000.10.8 +TAPI_VERSION=10.0.0 + +INCLUDE_FIX="-I $LIBTAPI_SOURCE_DIR/src/llvm/projects/clang/include -I $PWD/projects/clang/include" + +cmake $LIBTAPI_SOURCE_DIR/src/llvm \ + -GNinja \ + -DCMAKE_CXX_FLAGS="$INCLUDE_FIX" \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DCMAKE_BUILD_TYPE=RELEASE \ + -DCMAKE_INSTALL_PREFIX=$CROSSTOOLS_BUILD_DIR \ + -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \ + -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \ + -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld \ + -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \ + -DTAPI_REPOSITORY_STRING=$TAPI_REPOSITORY \ + -DTAPI_FULL_VERSION=$TAPI_VERSION + +ninja clangBasic -v +ninja libtapi install-libtapi install-tapi-headers -v + +# Setup LDFLAGS late so run-at-build-time tools in the basic clang build don't +# pick up the possibly-incompatible libstdc++ from clang. +# Also set it up such that loading libtapi doesn't require a LD_LIBRARY_PATH. +# (this requires two dollars and extra backslashing because it's used verbatim +# via a Makefile) +export LDFLAGS="-fuse-ld=lld -lpthread -Wl,-rpath-link,$MOZ_FETCHES_DIR/sysroot/lib/x86_64-linux-gnu -Wl,-rpath-link,$MOZ_FETCHES_DIR/sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath,\\\$\$ORIGIN/../lib,-rpath,\\\$\$ORIGIN/../../clang/lib" + +export CC="$CC --sysroot=$MOZ_FETCHES_DIR/sysroot" +export CXX="$CXX --sysroot=$MOZ_FETCHES_DIR/sysroot" + +# Configure crosstools-port +cd $CROSSTOOLS_CCTOOLS_DIR +# Force re-libtoolization to overwrite files with the new libtool bits. +perl -pi -e 's/(LIBTOOLIZE -c)/\1 -f/' autogen.sh +./autogen.sh +./configure \ + --prefix=$CROSSTOOLS_BUILD_DIR \ + --target=x86_64-apple-darwin \ + --with-llvm-config=$CLANG_DIR/bin/llvm-config \ + --enable-lto-support \ + --enable-tapi-support \ + --with-libtapi=$CROSSTOOLS_BUILD_DIR + +# Build cctools +make -j `nproc --all` install + +# Build ldid +cd $LDID_SOURCE_DIR +# The crypto library in the sysroot cannot be linked in a PIE executable so we use -no-pie +make -j `nproc --all` install INSTALLPREFIX=$CROSSTOOLS_BUILD_DIR LDFLAGS="-no-pie -Wl,-Bstatic -lcrypto -Wl,-Bdynamic -ldl -pthread" + +strip $CROSSTOOLS_BUILD_DIR/bin/* +# various build scripts based on cmake want to find `lipo` without a prefix +cp $CROSSTOOLS_BUILD_DIR/bin/x86_64-apple-darwin-lipo $CROSSTOOLS_BUILD_DIR/bin/lipo + +(cd $CROSSTOOLS_BUILD_DIR/bin/; for i in x86_64-apple-darwin-*; do + ln $i aarch64${i#x86_64} +done) + +# Put a tarball in the artifacts dir +mkdir -p $UPLOAD_DIR +tar caf $UPLOAD_DIR/cctools.tar.zst -C $CROSSTOOLS_BUILD_DIR/.. `basename $CROSSTOOLS_BUILD_DIR` diff --git a/taskcluster/scripts/misc/build-clang-mingw.sh b/taskcluster/scripts/misc/build-clang-mingw.sh new file mode 100755 index 0000000000..2e8543b38e --- /dev/null +++ b/taskcluster/scripts/misc/build-clang-mingw.sh @@ -0,0 +1,254 @@ +#!/bin/bash +set -x -e -v + +# This script is for building a mingw-clang toolchain for use on Linux. + +if [[ $# -eq 0 ]]; then + echo "Provide either x86 or x64 to specify a toolchain." + exit 1; +elif [ "$1" == "x86" ]; then + machine="i686" + compiler_rt_machine="i386" + crt_flags="--enable-lib32 --disable-lib64" + WRAPPER_FLAGS="" +elif [ "$1" == "x64" ]; then + machine="x86_64" + compiler_rt_machine="x86_64" + crt_flags="--disable-lib32 --enable-lib64" + WRAPPER_FLAGS="" +else + echo "Provide either x86 or x64 to specify a toolchain." + exit 1; +fi + +TOOLCHAIN_DIR=$MOZ_FETCHES_DIR/llvm-project +INSTALL_DIR=$MOZ_FETCHES_DIR/clang +CROSS_PREFIX_DIR=$INSTALL_DIR/$machine-w64-mingw32 + +make_flags="-j$(nproc)" + +if [ -d "$MOZ_FETCHES_DIR/binutils/bin" ]; then + export PATH="$MOZ_FETCHES_DIR/binutils/bin:$PATH" +fi + +# This is default value of _WIN32_WINNT. Gecko configure script explicitly sets this, +# so this is not used to build Gecko itself. We default to 0x601, which is Windows 7. +default_win32_winnt=0x601 + +cd $GECKO_PATH + +patch_file2="$(pwd)/taskcluster/scripts/misc/mingw-dwrite_3.patch" +patch_file3="$(pwd)/taskcluster/scripts/misc/mingw-unknown.patch" +patch_file4="$(pwd)/taskcluster/scripts/misc/mingw-enum.patch" +patch_file5="$(pwd)/taskcluster/scripts/misc/mingw-widl.patch" +patch_file6="$(pwd)/taskcluster/scripts/misc/mingw-dispatchqueue.patch" +patch_file10="$(pwd)/taskcluster/scripts/misc/mingw-ts_sd.patch" +patch_file11="$(pwd)/taskcluster/scripts/misc/mingw-composition.patch" + +prepare() { + pushd $MOZ_FETCHES_DIR/mingw-w64 + patch -p1 <$patch_file2 + patch -p1 <$patch_file3 + patch -p1 <$patch_file4 + patch -p1 <$patch_file5 + patch -p1 <$patch_file6 + patch -p1 <$patch_file10 + patch -p1 <$patch_file11 + popd +} + +install_wrappers() { + pushd $INSTALL_DIR/bin + + compiler_flags="--sysroot \$DIR/../$machine-w64-mingw32 -rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld $WRAPPER_FLAGS -fuse-cxa-atexit -Qunused-arguments" + + cat <$machine-w64-mingw32-clang +#!/bin/sh +DIR="\$(cd "\$(dirname "\$0")" && pwd)" +\$DIR/clang -target $machine-w64-mingw32 $compiler_flags "\$@" +EOF + chmod +x $machine-w64-mingw32-clang + + cat <$machine-w64-mingw32-clang++ +#!/bin/sh +DIR="\$(cd "\$(dirname "\$0")" && pwd)" +\$DIR/clang -target $machine-w64-mingw32 --driver-mode=g++ $compiler_flags "\$@" +EOF + chmod +x $machine-w64-mingw32-clang++ + + CC="$machine-w64-mingw32-clang" + CXX="$machine-w64-mingw32-clang++" + + popd +} + +build_mingw() { + mkdir mingw-w64-headers + pushd mingw-w64-headers + $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-headers/configure \ + --host=$machine-w64-mingw32 \ + --enable-sdk=all \ + --enable-idl \ + --with-default-msvcrt=ucrt \ + --with-default-win32-winnt=$default_win32_winnt \ + --prefix=$CROSS_PREFIX_DIR + make $make_flags install + popd + + mkdir mingw-w64-crt + pushd mingw-w64-crt + $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-crt/configure \ + --host=$machine-w64-mingw32 \ + $crt_flags \ + --with-default-msvcrt=ucrt \ + CC="$CC" \ + AR=llvm-ar \ + RANLIB=llvm-ranlib \ + DLLTOOL=llvm-dlltool \ + --prefix=$CROSS_PREFIX_DIR + make $make_flags + make $make_flags install + popd + + mkdir widl + pushd widl + $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-tools/widl/configure --target=$machine-w64-mingw32 --prefix=$INSTALL_DIR + make $make_flags + make $make_flags install + popd +} + +build_compiler_rt() { + CLANG_VERSION=$(basename $(dirname $(dirname $(dirname $($CC --print-libgcc-file-name -rtlib=compiler-rt))))) + mkdir compiler-rt + pushd compiler-rt + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=$CC \ + -DCMAKE_SYSTEM_NAME=Windows \ + -DCMAKE_AR=$INSTALL_DIR/bin/llvm-ar \ + -DCMAKE_RANLIB=$INSTALL_DIR/bin/llvm-ranlib \ + -DCMAKE_C_COMPILER_WORKS=1 \ + -DCMAKE_C_COMPILER_TARGET=$compiler_rt_machine-windows-gnu \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \ + $TOOLCHAIN_DIR/compiler-rt/lib/builtins + make $make_flags + mkdir -p $INSTALL_DIR/lib/clang/$CLANG_VERSION/lib/windows + cp lib/windows/libclang_rt.builtins-$compiler_rt_machine.a $INSTALL_DIR/lib/clang/$CLANG_VERSION/lib/windows/ + popd +} + +build_runtimes() { + # Below, we specify -g -gcodeview to build static libraries with debug information. + # Because we're not distributing these builds, this is fine. If one were to distribute + # the builds, perhaps one would want to make those flags conditional or investigation + # other options. + DEBUG_FLAGS="-g -gcodeview" + + # First configure libcxx + mkdir runtimes + pushd runtimes + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=$CROSS_PREFIX_DIR \ + -DCMAKE_C_COMPILER=$CC \ + -DCMAKE_CXX_COMPILER=$CXX \ + -DCMAKE_CROSSCOMPILING=TRUE \ + -DCMAKE_SYSTEM_NAME=Windows \ + -DCMAKE_C_COMPILER_WORKS=TRUE \ + -DCMAKE_CXX_COMPILER_WORKS=TRUE \ + -DLLVM_COMPILER_CHECKED=TRUE \ + -DCMAKE_AR=$INSTALL_DIR/bin/llvm-ar \ + -DCMAKE_RANLIB=$INSTALL_DIR/bin/llvm-ranlib \ + -DCMAKE_CXX_FLAGS="${DEBUG_FLAGS} -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXX_INSTALL_HEADERS=ON \ + -DLIBCXX_ENABLE_EXCEPTIONS=ON \ + -DLIBCXX_ENABLE_THREADS=ON \ + -DLIBCXX_HAS_WIN32_THREAD_API=ON \ + -DLIBCXX_ENABLE_MONOTONIC_CLOCK=ON \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG=TRUE \ + -DLIBCXX_HAVE_CXX_ATOMICS_WITHOUT_LIB=TRUE \ + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \ + -DLIBCXX_ENABLE_FILESYSTEM=OFF \ + -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXXABI_USE_LLVM_UNWINDER=TRUE \ + -DLIBCXXABI_ENABLE_STATIC_UNWINDER=TRUE \ + -DLLVM_NO_OLD_LIBSTDCXX=TRUE \ + -DLIBUNWIND_USE_COMPILER_RT=TRUE \ + -DLIBUNWIND_ENABLE_THREADS=TRUE \ + -DLIBUNWIND_ENABLE_SHARED=FALSE \ + -DLIBUNWIND_ENABLE_CROSS_UNWINDING=FALSE \ + -DLIBUNWIND_CXX_FLAGS="${DEBUG_FLAGS} -Wno-dll-attribute-on-redeclaration -nostdinc++ -DPSAPI_VERSION=2" \ + -DLIBUNWIND_C_FLAGS="-Wno-dll-attribute-on-redeclaration" \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ + -DLIBCXXABI_ENABLE_THREADS=ON \ + -DLIBCXXABI_TARGET_TRIPLE=$machine-w64-mingw32 \ + -DLIBCXXABI_ENABLE_SHARED=OFF \ + -DLIBCXXABI_CXX_FLAGS="${DEBUG_FLAGS} -D_LIBCPP_HAS_THREAD_API_WIN32" \ + -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx;libunwind" \ + $TOOLCHAIN_DIR/runtimes + + make $make_flags VERBOSE=1 + make $make_flags install + + popd +} + +build_libssp() { + pushd $MOZ_FETCHES_DIR/gcc-source/ + + # Massage the environment for the build-libssp.sh script + mkdir -p ./$machine-w64-mingw32/lib + cp $MOZ_FETCHES_DIR/llvm-mingw/libssp-Makefile . + sed -i 's/set -e/set -x -e -v/' $MOZ_FETCHES_DIR/llvm-mingw/build-libssp.sh + sed -i 's/(CROSS)gcc/(CROSS)clang/' libssp-Makefile + sed -i 's/\$(CROSS)ar/llvm-ar/' libssp-Makefile + OLDPATH=$PATH + PATH=$INSTALL_DIR/bin:$PATH + + # Run the script + TOOLCHAIN_ARCHS=$machine $MOZ_FETCHES_DIR/llvm-mingw/build-libssp.sh . + + # Grab the artifacts, cleanup + cp $MOZ_FETCHES_DIR/gcc-source/$machine-w64-mingw32/lib/{libssp.a,libssp_nonshared.a} $INSTALL_DIR/$machine-w64-mingw32/lib/ + unset TOOLCHAIN_ARCHS + PATH=$OLDPATH + popd +} + +build_utils() { + pushd $INSTALL_DIR/bin/ + for prog in ar nm objcopy ranlib readobj strip; do + ln -s llvm-$prog $machine-w64-mingw32-$prog + done + ./clang $MOZ_FETCHES_DIR/llvm-mingw/wrappers/windres-wrapper.c -O2 -Wl,-s -o $machine-w64-mingw32-windres + popd +} + +export PATH=$INSTALL_DIR/bin:$PATH + +prepare + +mkdir $TOOLCHAIN_DIR/build +pushd $TOOLCHAIN_DIR/build + +install_wrappers +build_mingw +build_compiler_rt +build_runtimes +build_libssp +build_utils + +popd + +# Put a tarball in the artifacts dir +mkdir -p $UPLOAD_DIR + +pushd $(dirname $INSTALL_DIR) +tar caf clangmingw.tar.zst clang +mv clangmingw.tar.zst $UPLOAD_DIR +popd diff --git a/taskcluster/scripts/misc/build-clang-tidy-external.sh b/taskcluster/scripts/misc/build-clang-tidy-external.sh new file mode 100755 index 0000000000..8647432e7c --- /dev/null +++ b/taskcluster/scripts/misc/build-clang-tidy-external.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -x + +# # Delete the external directory +rm -rf $GECKO_PATH/build/clang-plugin/external/* + +# Move external repository into its place +cp -r $MOZ_FETCHES_DIR/civet.git/* $GECKO_PATH/build/clang-plugin/external + +# Call build-clang.sh with this script's first argument (our JSON config) +$GECKO_PATH/taskcluster/scripts/misc/build-clang.sh $1 diff --git a/taskcluster/scripts/misc/build-clang.sh b/taskcluster/scripts/misc/build-clang.sh new file mode 100755 index 0000000000..9307774062 --- /dev/null +++ b/taskcluster/scripts/misc/build-clang.sh @@ -0,0 +1,72 @@ +#!/bin/bash +set -x -e -v + +# This script is for building clang. + +ORIGPWD="$PWD" +CONFIGS=$(for c; do echo -n " -c $GECKO_PATH/$c"; done) + +cd $GECKO_PATH + +if [ -d "$MOZ_FETCHES_DIR/binutils/bin" ]; then + export PATH="$MOZ_FETCHES_DIR/binutils/bin:$PATH" +fi + +# Make the installed compiler-rt(s) available to clang. +UPLOAD_DIR= taskcluster/scripts/misc/repack-clang.sh + +case "$CONFIGS" in +*macosx64*) + # cmake makes decisions based on the output of the mac-only sw_vers, which is + # obviously missing when cross-compiling, so create a fake one. The exact + # version doesn't really matter: as of writing, cmake checks at most for 10.5. + mkdir -p $ORIGPWD/bin + echo "#!/bin/sh" > $ORIGPWD/bin/sw_vers + echo echo 10.12 >> $ORIGPWD/bin/sw_vers + chmod +x $ORIGPWD/bin/sw_vers + # these variables are used in build-clang.py + export CROSS_SYSROOT=$(ls -d $MOZ_FETCHES_DIR/MacOSX1*.sdk) + export PATH=$PATH:$ORIGPWD/bin + ;; +*win64*) + case "$(uname -s)" in + MINGW*|MSYS*) + export UPLOAD_DIR=$ORIGPWD/public/build + # Set up all the Visual Studio paths. + . taskcluster/scripts/misc/vs-setup.sh + + # LLVM_ENABLE_DIA_SDK is set if the directory "$ENV{VSINSTALLDIR}DIA SDK" + # exists. + export VSINSTALLDIR="${VSPATH}/" + + export PATH="$(cd $MOZ_FETCHES_DIR/cmake && pwd)/bin:${PATH}" + export PATH="$(cd $MOZ_FETCHES_DIR/ninja && pwd)/bin:${PATH}" + ;; + *) + export VSINSTALLDIR="$MOZ_FETCHES_DIR/vs" + ;; + esac + ;; +*linux64*|*android*) + ;; +*) + echo Cannot figure out build configuration for $CONFIGS + exit 1 + ;; +esac + +# gets a bit too verbose here +set +x + +cd $MOZ_FETCHES_DIR/llvm-project +python3 $GECKO_PATH/build/build-clang/build-clang.py $CONFIGS + +set -x + +if [ -f clang*.tar.zst ]; then + # Put a tarball in the artifacts dir + mkdir -p $UPLOAD_DIR + cp clang*.tar.zst $UPLOAD_DIR +fi + +. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh diff --git a/taskcluster/scripts/misc/build-compiler-rt-wasi.sh b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh new file mode 100755 index 0000000000..d23e4b1e5a --- /dev/null +++ b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -x -e -v + +artifact=$(basename $TOOLCHAIN_ARTIFACT) +dir=${artifact%.tar.*} + +cd $MOZ_FETCHES_DIR/wasi-sdk +LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project + +mkdir -p build/install/wasi +# The wasi-sdk build system wants to build clang itself. We trick it into +# thinking it did, and put our own clang where it would have built its own. +ln -s $MOZ_FETCHES_DIR/clang build/llvm +touch build/llvm.BUILT + +# The wasi-sdk build system wants a clang and an ar binary in +# build/install/$PREFIX/bin +ln -s $MOZ_FETCHES_DIR/clang/bin build/install/wasi/bin +ln -s llvm-ar build/install/wasi/bin/ar + +# Build compiler-rt +make \ + LLVM_PROJ_DIR=$LLVM_PROJ_DIR \ + PREFIX=/wasi \ + build/compiler-rt.BUILT \ + -j$(nproc) + +mkdir -p $dir/lib +mv build/install/wasi/lib/clang/*/lib/wasi $dir/lib +tar --zstd -cf $artifact $dir +mkdir -p $UPLOAD_DIR +mv $artifact $UPLOAD_DIR/ diff --git a/taskcluster/scripts/misc/build-compiler-rt.sh b/taskcluster/scripts/misc/build-compiler-rt.sh new file mode 100755 index 0000000000..b5665381d1 --- /dev/null +++ b/taskcluster/scripts/misc/build-compiler-rt.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e -x + +artifact=$(basename $TOOLCHAIN_ARTIFACT) +dir=${artifact%.tar.*} +target=${dir#compiler-rt-} + +case "$target" in +*-linux-android) + EXTRA_CMAKE_FLAGS=" + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF + -DCOMPILER_RT_BUILD_ORC=OFF + -DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF + " + ;; +*-apple-darwin) + EXTRA_CMAKE_FLAGS=" + -DCOMPILER_RT_ENABLE_IOS=OFF + -DCOMPILER_RT_ENABLE_WATCHOS=OFF + -DCOMPILER_RT_ENABLE_TVOS=OFF + " + ;; +*-windows-msvc) + EXTRA_CMAKE_FLAGS=" + -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded + " + ;; +esac + +EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON + -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF +" + +export EXTRA_CMAKE_FLAGS + +$(dirname $0)/build-llvm-common.sh compiler-rt install $target "$@" diff --git a/taskcluster/scripts/misc/build-cpython.sh b/taskcluster/scripts/misc/build-cpython.sh new file mode 100755 index 0000000000..f6a683cc7d --- /dev/null +++ b/taskcluster/scripts/misc/build-cpython.sh @@ -0,0 +1,70 @@ +#!/bin/sh +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This script builds the official interpreter for the python language, +# while also packing in a few default extra packages. + +set -e +set -x + +# Required fetch artifact +clang_bindir=${MOZ_FETCHES_DIR}/clang/bin +clang_libdir=${MOZ_FETCHES_DIR}/clang/lib +python_src=${MOZ_FETCHES_DIR}/cpython-source + +# Make the compiler-rt available to clang. +env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh + +# Setup environment +export PATH=${clang_bindir}:${PATH} +export CC=clang +export CXX=clang++ +export LDFLAGS=-fuse-ld=lld + +# Extra setup for OSX +case `uname -s` in + Darwin) + case `uname -m` in + aarch64) + macosx_version_min=11.0 + ;; + *) + macosx_version_min=10.12 + ;; + esac + macosx_sdk=13.3 + # NOTE: both CFLAGS and CPPFLAGS need to be set here, otherwise + # configure step fails. + sysroot_flags="-isysroot ${MOZ_FETCHES_DIR}/MacOSX${macosx_sdk}.sdk -mmacosx-version-min=${macosx_version_min}" + export CPPFLAGS=${sysroot_flags} + export CFLAGS=${sysroot_flags} + export LDFLAGS="${LDFLAGS} ${sysroot_flags}" + configure_flags_extra=--with-openssl=/usr/local/opt/openssl + + # see https://bugs.python.org/issue44065 + sed -i -e 's,$CC --print-multiarch,:,' ${python_src}/configure + ;; +esac + +# Patch Python to honor MOZPYTHONHOME instead of PYTHONHOME. That way we have a +# relocatable python for free, while not interfering with the system Python that +# already honors PYTHONHOME. +find ${python_src} -type f -print0 | xargs -0 perl -i -pe "s,PYTHONHOME,MOZPYTHONHOME,g" + +# Actual build +work_dir=`pwd` +tardir=python + +cd `mktemp -d` +${python_src}/configure --prefix=/${tardir} --enable-optimizations ${configure_flags_extra} || { exit_status=$? && cat config.log && exit $exit_status ; } +export MAKEFLAGS=-j`nproc` +make +make DESTDIR=${work_dir} install +cd ${work_dir} + +${work_dir}/python/bin/python3 -m pip install --upgrade pip==23.0 +${work_dir}/python/bin/python3 -m pip install -r ${GECKO_PATH}/build/psutil_requirements.txt -r ${GECKO_PATH}/build/zstandard_requirements.txt + +$(dirname $0)/pack.sh ${tardir} diff --git a/taskcluster/scripts/misc/build-custom-car-linux.sh b/taskcluster/scripts/misc/build-custom-car-linux.sh new file mode 100755 index 0000000000..c92b696e28 --- /dev/null +++ b/taskcluster/scripts/misc/build-custom-car-linux.sh @@ -0,0 +1,65 @@ +#!/bin/bash +set -x -e -v + +# This script is for building a custom version of chromium-as-release on Linux + +# First argument must be the artifact name +ARTIFACT_NAME=$(basename $TOOLCHAIN_ARTIFACT) +shift + +# Use the rest of the arguments as the build config +CONFIG=$(echo $* | tr -d "'") + + +mkdir custom_car +cd custom_car +CUSTOM_CAR_DIR=$PWD + +# Setup depot_tools +git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +export PATH=$PATH:$CUSTOM_CAR_DIR/depot_tools + + +# Get chromium source code and dependencies +mkdir chromium +cd chromium +fetch --no-history --nohooks chromium + +# setup the .gclient file to ensure pgo profiles are downloaded +# for some reason we need to set --name flag even though it already exists. +# currently the gclient.py file does NOT recognize --custom-var as it's own argument +gclient config --name src "https://chromium.googlesource.com/chromium/src.git" --custom-var="checkout_pgo_profiles=True" --unmanaged + +cd src + +# now we can run hooks and fetch PGO + everything else +gclient runhooks + +# PGO data should be in src/chrome/build/pgo_profiles/ +# with a name like "chrome-{OS}-" +export PGO_DATA_DIR="$CUSTOM_CAR_DIR/chromium/src/chrome/build/pgo_profiles" +for entry in "$PGO_DATA_DIR"/* +do + if [ -f "$entry" ];then + export PGO_DATA_PATH="$entry" + fi +done +CONFIG=$(echo $CONFIG pgo_data_path='"'$PGO_DATA_PATH'"') + + +# set up then build chrome +gn gen out/Default --args="$CONFIG" +autoninja -C out/Default chrome # skips test binaries + + +# Gather binary and related files into a zip, and upload it +cd .. +mkdir chromium + +mv src/out/Default chromium +chmod -R +x chromium + +tar caf $ARTIFACT_NAME chromium + +mkdir -p $UPLOAD_DIR +mv $ARTIFACT_NAME $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-custom-car-win64.sh b/taskcluster/scripts/misc/build-custom-car-win64.sh new file mode 100644 index 0000000000..512a0a072f --- /dev/null +++ b/taskcluster/scripts/misc/build-custom-car-win64.sh @@ -0,0 +1,102 @@ +#!/bin/bash +set -x -e -v + +# This script is for building a custom version of chromium-as-release on Windows + +# First argument must be the artifact name +ARTIFACT_NAME=$(basename $TOOLCHAIN_ARTIFACT) +shift + +# Use the rest of the arguments as the build config +CONFIG=$(echo $* | tr -d "'") + +mkdir custom_car +cd custom_car +CUSTOM_CAR_DIR=$PWD + +# setup VS 2022 +. $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh + +# setup depot_tools +git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +export PATH="$(cd ./depot_tools && pwd):$PATH" + +# setup some environment variables for chromium build scripts +export DEPOT_TOOLS_WIN_TOOLCHAIN=0 +export GYP_MSVS_OVERRIDE_PATH="$MOZ_FETCHES_DIR/VS" +export GYP_MSVS_VERSION=2022 +export vs2022_install="$MOZ_FETCHES_DIR/VS" +export WINDOWSSDKDIR="$MOZ_FETCHES_DIR/VS/Windows Kits/10" +export DEPOT_TOOLS_UPDATE=1 +export GCLIENT_PY3=1 +# Fool GYP +touch "$MOZ_FETCHES_DIR/VS/VC/vcvarsall.bat" + + +# construct some of our own dirs and move VS dlls + other files +# to a path that chromium build files are expecting +mkdir chrome_dll +cd chrome_dll +mkdir system32 +cd ../ +pushd "$WINDOWSSDKDIR" +mkdir -p Debuggers/x64/ +popd +mv $MOZ_FETCHES_DIR/VS/VC/Redist/MSVC/14.34.31931/x64/Microsoft.VC143.CRT/* chrome_dll/system32/ +mv "$WINDOWSSDKDIR/App Certification Kit/"* "$WINDOWSSDKDIR"/Debuggers/x64/ +export WINDIR="$PWD/chrome_dll" + +# run glcient once first to get some windows deps +gclient + +# fetch chromium src code +mkdir chromium +cd chromium +fetch --no-history --nohooks chromium + +# setup the .gclient file to ensure pgo profiles are downloaded +# for some reason we need to set --name flag even though it already exists. +# currently the gclient.py file does NOT recognize --custom-var as it's own argument +gclient config --name src https://chromium.googlesource.com/chromium/src.git --custom-var=checkout_pgo_profiles=True --unmanaged + +cd src + +# For fast fetches it seems we will be missing some dummy files in windows. +# We can create a dummy this way to satisfy the rest of the build sequence +# this is ok because we are not doing any development here and don't need +# history. +python3 build/util/lastchange.py -o build/util/LASTCHANGE + +# now we can run hooks and fetch PGO + everything else +gclient runhooks + +# PGO data should be in src/chrome/build/pgo_profiles/ +# with a name like "chrome-{OS}-" +export PGO_DATA_DIR="$CUSTOM_CAR_DIR/chromium/src/chrome/build/pgo_profiles" +for entry in "$PGO_DATA_DIR"/* +do + if [ -f "$entry" ];then + export PGO_DATA_PATH="$entry" + fi +done +# compute a relative path that the build scripts looks for. +# this odd pathing seems to only happen on windows +PGO_FILE=${PGO_DATA_PATH#*/*/*/*/*/*/*/*/*/} +mv $PGO_DATA_PATH build/config/compiler/pgo/ +CONFIG=$(echo $CONFIG pgo_data_path='"'$PGO_FILE'"') + +# set up then build chrome +gn gen out/Default --args="$CONFIG" +autoninja -C out/Default chrome # skips test binaries + +# Gather binary and related files into a zip, and upload it +cd .. +mkdir chromium + +mv src/out/Default chromium +chmod -R +x chromium + +tar caf $ARTIFACT_NAME chromium + +mkdir -p $UPLOAD_DIR +mv $ARTIFACT_NAME $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-custom-v8.sh b/taskcluster/scripts/misc/build-custom-v8.sh new file mode 100755 index 0000000000..5c8ea673ad --- /dev/null +++ b/taskcluster/scripts/misc/build-custom-v8.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -x -e -v + +# This script is for building a custom version of V8 +ARTIFACT_NAME='d8.tar.zst' +CONFIG='is_debug=false target_cpu="x64"' +if [[ $# -eq 0 ]]; then + echo "Using default configuration for v8 build." + CONFIG=$(echo $CONFIG | tr -d "'") +else + # First argument must be the artifact name + ARTIFACT_NAME="$1" + shift + + # Use the rest of the arguments as the build config + CONFIG=$(echo $* | tr -d "'") +fi + +echo "Config: $CONFIG" +echo "Artifact name: $ARTIFACT_NAME" + +cd $GECKO_PATH + +# Setup depot_tools +git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +export PATH=$PATH:$GECKO_PATH/depot_tools + +# Get v8 source code and dependencies +fetch --force v8 +cd v8 + +# Build v8 +gn gen out/release --args="$CONFIG" +ninja -C out/release d8 + +# Gather binary and related files into a zip, and upload it +cd .. +mkdir d8 + +cp -R v8/out/release d8 +cp -R v8/include d8 +chmod -R +x d8 + +tar caf $ARTIFACT_NAME d8 + +mkdir -p $UPLOAD_DIR +cp $ARTIFACT_NAME $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-dist-toolchains.sh b/taskcluster/scripts/misc/build-dist-toolchains.sh new file mode 100755 index 0000000000..1ad1871775 --- /dev/null +++ b/taskcluster/scripts/misc/build-dist-toolchains.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -x -e -v + +# This script is for packaging toolchains suitable for use by distributed sccache. +TL_NAME="$1" + +mkdir -p $HOME/artifacts +mkdir -p $HOME/toolchains + +mv $MOZ_FETCHES_DIR/$TL_NAME $HOME/toolchains/$TL_NAME + +$MOZ_FETCHES_DIR/sccache/sccache --package-toolchain $HOME/toolchains/$TL_NAME/bin/$TL_NAME $HOME/artifacts/$TL_NAME-dist-toolchain.tar.xz diff --git a/taskcluster/scripts/misc/build-dmg-hfsplus.sh b/taskcluster/scripts/misc/build-dmg-hfsplus.sh new file mode 100755 index 0000000000..b0039432aa --- /dev/null +++ b/taskcluster/scripts/misc/build-dmg-hfsplus.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -x -e -v + +# This script is for building libdmg-hfsplus to get the `dmg` and `hfsplus` +# tools for producing DMG archives on Linux. + +WORKSPACE=$HOME/workspace +STAGE=$WORKSPACE/dmg + +mkdir -p $UPLOAD_DIR $STAGE + +cd $MOZ_FETCHES_DIR/libdmg-hfsplus + +# The openssl libraries in the sysroot cannot be linked in a PIE executable so we use -no-pie +cmake \ + -DCMAKE_C_COMPILER=$MOZ_FETCHES_DIR/clang/bin/clang \ + -DCMAKE_CXX_COMPILER=$MOZ_FETCHES_DIR/clang/bin/clang++ \ + -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \ + -DOPENSSL_USE_STATIC_LIBS=1 \ + -DCMAKE_EXE_LINKER_FLAGS=-no-pie \ + . + +make VERBOSE=1 -j$(nproc) + +# We only need the dmg and hfsplus tools. +strip dmg/dmg hfs/hfsplus +cp dmg/dmg hfs/hfsplus $STAGE + +# duplicate the functionality of taskcluster-lib-urls, but in bash.. +queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1" + +cat >$STAGE/README<&2 + exit 1 + fi + + # The sixgill plugin uses some gmp symbols, including some not exported by + # cc1/cc1plus. So link the plugin statically to libgmp. Except that the + # default static build does not have -fPIC, and will result in a relocation + # error, so build our own. This requires the gcc and related source to be + # in $root_dir/gcc-source. + + mkdir $root_dir/gmp-objdir || true + ( + cd $root_dir/gmp-objdir + $root_dir/gcc-source/gmp/configure --disable-shared --with-pic --prefix=$gmp_prefix + make -j8 + make install DESTDIR=$root_dir + ) +} + +build_sixgill() {( + cd $root_dir/sixgill + export CC=$gcc_bindir/gcc + export CXX=$gcc_bindir/g++ + export PATH="$gcc_bindir:$PATH" + export LD_LIBRARY_PATH="${gcc_bindir%/bin}/lib64" + export TARGET_CC=$CC + export CPPFLAGS=-I$gmp_dir/include + export EXTRA_LDFLAGS=-L$gmp_dir/lib + export HOST_CFLAGS=$CPPFLAGS + + ./release.sh --build-and-package --with-gmp=$gmp_dir + tarball=$(ls -td *-sixgill | head -1)/sixgill.tar.xz + cp $tarball $root_dir/sixgill.tar.xz +)} + +prepare_sixgill +build_gmp +build_sixgill + +# Put a tarball in the artifacts dir +mkdir -p $UPLOAD_DIR +cp $MOZ_FETCHES_DIR/sixgill.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-geckodriver.sh b/taskcluster/scripts/misc/build-geckodriver.sh new file mode 100755 index 0000000000..7434ee2ef8 --- /dev/null +++ b/taskcluster/scripts/misc/build-geckodriver.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +set -x -e -v + +# Needed by osx-cross-linker. +export TARGET="$1" + +cd $GECKO_PATH + +EXE= +COMPRESS_EXT=gz + +case "$TARGET" in +*windows-msvc) + EXE=.exe + COMPRESS_EXT=zip + . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh + # Bug 1584530: don't require the Microsoft MSVC runtime to be installed. + export RUSTFLAGS="-Ctarget-feature=+crt-static -C linker=$MOZ_FETCHES_DIR/clang/bin/lld-link" + export TARGET_CFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + export TARGET_CXXFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + ;; +# OSX cross builds are a bit harder +*-apple-darwin) + export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + export RUSTFLAGS="-C linker=$GECKO_PATH/taskcluster/scripts/misc/osx-cross-linker" + if test "$TARGET" = "aarch64-apple-darwin"; then + export MACOSX_DEPLOYMENT_TARGET=11.0 + else + export MACOSX_DEPLOYMENT_TARGET=10.12 + fi + ;; +aarch64-unknown-linux-musl) + export RUSTFLAGS="-C linker=$MOZ_FETCHES_DIR/clang/bin/clang -C link-arg=--target=$TARGET -C link-arg=-fuse-ld=lld" + ;; +esac + +export PATH="$MOZ_FETCHES_DIR/rustc/bin:$PATH" + +cd $GECKO_PATH/testing/geckodriver + +cp $GECKO_PATH/.cargo/config.in $GECKO_PATH/.cargo/config + +cargo build --frozen --verbose --release --target "$TARGET" + +cd $GECKO_PATH +mkdir -p $UPLOAD_DIR + +cp target/$TARGET/release/geckodriver$EXE . +if [ "$COMPRESS_EXT" = "zip" ]; then + zip geckodriver.zip geckodriver$EXE + cp geckodriver.zip $UPLOAD_DIR +else + tar -acf geckodriver.tar.$COMPRESS_EXT geckodriver$EXE + cp geckodriver.tar.$COMPRESS_EXT $UPLOAD_DIR +fi + +. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh diff --git a/taskcluster/scripts/misc/build-gn-common.sh b/taskcluster/scripts/misc/build-gn-common.sh new file mode 100755 index 0000000000..b72d51df09 --- /dev/null +++ b/taskcluster/scripts/misc/build-gn-common.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -e -v + +# This is shared code for building GN. +cd $MOZ_FETCHES_DIR/gn + +if test -n "$MAC_CROSS"; then + python3 build/gen.py --platform darwin --no-last-commit-position +else + python3 build/gen.py --no-last-commit-position +fi + +cat > out/last_commit_position.h < gn.tar.zst +cp gn.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-gn-linux.sh b/taskcluster/scripts/misc/build-gn-linux.sh new file mode 100755 index 0000000000..f6fd9fd507 --- /dev/null +++ b/taskcluster/scripts/misc/build-gn-linux.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e -v + +# This script is for building GN on Linux. + +WORKSPACE=$HOME/workspace +export CC=gcc +export CXX=g++ +export LDFLAGS=-lrt + +cd $GECKO_PATH + +. taskcluster/scripts/misc/build-gn-common.sh diff --git a/taskcluster/scripts/misc/build-gn-macosx.sh b/taskcluster/scripts/misc/build-gn-macosx.sh new file mode 100755 index 0000000000..0daafea940 --- /dev/null +++ b/taskcluster/scripts/misc/build-gn-macosx.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e -v + +# This script is for building GN. + +WORKSPACE=$HOME/workspace + +CROSS_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk +export MACOSX_DEPLOYMENT_TARGET=10.12 + +export CC=$MOZ_FETCHES_DIR/clang/bin/clang +export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++ +export AR=$MOZ_FETCHES_DIR/clang/bin/llvm-ar +export CFLAGS="-target x86_64-apple-darwin -isysroot ${CROSS_SYSROOT} -I${CROSS_SYSROOT}/usr/include -iframework ${CROSS_SYSROOT}/System/Library/Frameworks" +export CXXFLAGS="-stdlib=libc++ ${CFLAGS}" +export LDFLAGS="-fuse-ld=lld ${CXXFLAGS} -Wl,-syslibroot,${CROSS_SYSROOT} -Wl,-dead_strip" + +# We patch tools/gn/bootstrap/bootstrap.py to detect this. +export MAC_CROSS=1 + +cd $GECKO_PATH + +. taskcluster/scripts/misc/build-gn-common.sh diff --git a/taskcluster/scripts/misc/build-gn-win64.sh b/taskcluster/scripts/misc/build-gn-win64.sh new file mode 100755 index 0000000000..3ecd71fc74 --- /dev/null +++ b/taskcluster/scripts/misc/build-gn-win64.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e -v -x + +# This script is for building GN on Windows. + +UPLOAD_DIR=$PWD/public/build + +cd $GECKO_PATH + +export PATH="$(cd $MOZ_FETCHES_DIR && pwd)/ninja/bin:$PATH" +export PATH="$(cd $MOZ_FETCHES_DIR && pwd)/mingw64/bin:$PATH" + +. taskcluster/scripts/misc/vs-setup.sh +. taskcluster/scripts/misc/build-gn-common.sh + +. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh diff --git a/taskcluster/scripts/misc/build-hfsplus-linux.sh b/taskcluster/scripts/misc/build-hfsplus-linux.sh new file mode 100755 index 0000000000..91f9901ebc --- /dev/null +++ b/taskcluster/scripts/misc/build-hfsplus-linux.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -x -e -v + +# This script is for building hfsplus for Linux. + +cd $GECKO_PATH + +export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin + +build/unix/build-hfsplus/build-hfsplus.sh $MOZ_FETCHES_DIR + +# Put a tarball in the artifacts dir +mkdir -p $UPLOAD_DIR +cp $MOZ_FETCHES_DIR/hfsplus.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-libunwind.sh b/taskcluster/scripts/misc/build-libunwind.sh new file mode 100755 index 0000000000..1be5168d0a --- /dev/null +++ b/taskcluster/scripts/misc/build-libunwind.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e -x + +artifact=$(basename $TOOLCHAIN_ARTIFACT) +dir=${artifact%.tar.*} +target=${dir#libunwind-} + +# Make the android compiler-rt available to clang. +env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh + +EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON + -DCMAKE_C_COMPILER_WORKS=1 + -DCMAKE_CXX_COMPILER_WORKS=1 + -DLLVM_ENABLE_RUNTIMES=libunwind + -DLIBUNWIND_ENABLE_SHARED=OFF +" + +export EXTRA_CMAKE_FLAGS + +$(dirname $0)/build-llvm-common.sh runtimes install $target "$@" diff --git a/taskcluster/scripts/misc/build-llvm-common.sh b/taskcluster/scripts/misc/build-llvm-common.sh new file mode 100755 index 0000000000..9ee9147bc0 --- /dev/null +++ b/taskcluster/scripts/misc/build-llvm-common.sh @@ -0,0 +1,206 @@ +#!/bin/sh + +set -e -x + +artifact=$(basename $TOOLCHAIN_ARTIFACT) +dir=${artifact%.tar.*} +what=$1 +shift +install=$1 +shift +target=$1 +shift + +clang=$MOZ_FETCHES_DIR/clang/bin/clang + +case "$target" in +aarch64-apple-darwin) + arch=arm64 + export MACOSX_DEPLOYMENT_TARGET=11.0 + compiler_wrapper() { + echo exec \$MOZ_FETCHES_DIR/clang/bin/$1 -mcpu=apple-m1 \"\$@\" > $1 + chmod +x $1 + } + compiler_wrapper clang + compiler_wrapper clang++ + clang=$PWD/clang + ;; +x86_64-apple-darwin) + arch=x86_64 + export MACOSX_DEPLOYMENT_TARGET=10.12 + ;; +armv7-linux-android|i686-linux-android) + api_level=16 + ;; +aarch64-linux-android|x86_64-linux-android) + api_level=21 + ;; +esac + +case "$target" in +*-apple-darwin) + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld64.lld + -DCMAKE_LIPO=$MOZ_FETCHES_DIR/clang/bin/llvm-lipo + -DCMAKE_SYSTEM_NAME=Darwin + -DCMAKE_SYSTEM_VERSION=$MACOSX_DEPLOYMENT_TARGET + -DCMAKE_OSX_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk + -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld + -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld + -DDARWIN_osx_ARCHS=$arch + -DDARWIN_osx_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk + -DDARWIN_macosx_OVERRIDE_SDK_VERSION=11.0 + -DDARWIN_osx_BUILTIN_ARCHS=$arch + -DLLVM_DEFAULT_TARGET_TRIPLE=$target + " + # compiler-rt build script expects to find `codesign` in $PATH. + # Give it a fake one. + echo "#!/bin/sh" > codesign + chmod +x codesign + # cmake makes decisions based on the output of the mac-only sw_vers, which is + # obviously missing when cross-compiling, so create a fake one. The exact + # version doesn't really matter: as of writing, cmake checks at most for 10.5. + echo "#!/bin/sh" > sw_vers + echo echo 10.12 >> sw_vers + chmod +x sw_vers + PATH="$PATH:$PWD" + ;; +*-linux-android) + case "$target" in + armv7-linux-android) + arch=arm + ;; + *-linux-android) + arch=${target%-linux-android} + ;; + esac + target=$target$api_level + # These flags are only necessary to pass the cmake tests. They don't end up + # actually using libgcc, so use an empty library instead of trying to find + # where it is in the NDK. + if [ "$what" = "compiler-rt" ]; then + exe_linker_flags="--rtlib=libgcc -L$PWD" + touch libgcc.a + fi + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot + -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld.lld + -DCMAKE_EXE_LINKER_FLAGS='-fuse-ld=lld $exe_linker_flags' + -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld + -DANDROID=1 + -DANDROID_NATIVE_API_LEVEL=$api_level + -DSANITIZER_ALLOW_CXXABI=OFF + -DLLVM_DEFAULT_TARGET_TRIPLE=$arch-unknown-linux-android + " + ;; +*-unknown-linux-gnu) + if [ -d "$MOZ_FETCHES_DIR/sysroot" ]; then + sysroot=$MOZ_FETCHES_DIR/sysroot + else + sysroot=$MOZ_FETCHES_DIR/sysroot-${target%-unknown-linux-gnu}-linux-gnu + fi + if [ "${target%-unknown-linux-gnu}" = i686 ]; then + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DLLVM_TABLEGEN=$MOZ_FETCHES_DIR/clang/bin/llvm-tblgen + " + fi + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCMAKE_SYSROOT=$sysroot + -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld.lld + -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld + -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld + -DLLVM_ENABLE_TERMINFO=OFF + " + ;; +*-pc-windows-msvc) + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCMAKE_TOOLCHAIN_FILE=$MOZ_FETCHES_DIR/llvm-project/llvm/cmake/platforms/WinMsvc.cmake + -DLLVM_NATIVE_TOOLCHAIN=$MOZ_FETCHES_DIR/clang + -DHOST_ARCH=${target%-pc-windows-msvc} + -DLLVM_DISABLE_ASSEMBLY_FILES=ON + " + # LLVM 15+ uses different input variables. + if grep -q LLVM_WINSYSROOT $MOZ_FETCHES_DIR/llvm-project/llvm/cmake/platforms/WinMsvc.cmake; then + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DLLVM_WINSYSROOT=$MOZ_FETCHES_DIR/vs + " + else + # WinMsvc.cmake before LLVM 15 doesn't support spaces in WINDSK_BASE. + ln -s "windows kits/10" $MOZ_FETCHES_DIR/vs/sdk + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DMSVC_BASE=$MOZ_FETCHES_DIR/vs/vc/tools/msvc/14.29.30133 + -DWINSDK_BASE=$MOZ_FETCHES_DIR/vs/sdk + -DWINSDK_VER=10.0.19041.0 + " + fi + ;; +*) + echo $target is not supported yet + exit 1 + ;; +esac + +case "$target" in +*-pc-windows-msvc) + ;; +*) + EXTRA_CMAKE_FLAGS=" + $EXTRA_CMAKE_FLAGS + -DCMAKE_C_COMPILER=$clang + -DCMAKE_CXX_COMPILER=$clang++ + -DCMAKE_AR=$MOZ_FETCHES_DIR/clang/bin/llvm-ar + -DCMAKE_RANLIB=$MOZ_FETCHES_DIR/clang/bin/llvm-ranlib + " + ;; +esac + +mkdir build +cd build + +for patchfile in "$@"; do + case $patchfile in + *.json) + jq -r '.patches[]' $GECKO_PATH/$patchfile | while read p; do + patch -d $MOZ_FETCHES_DIR/llvm-project -p1 < $GECKO_PATH/$(dirname $patchfile)/$p + done + ;; + *) + patch -d $MOZ_FETCHES_DIR/llvm-project -p1 < $GECKO_PATH/$patchfile + ;; + esac +done + +eval cmake \ + $MOZ_FETCHES_DIR/llvm-project/$what \ + -GNinja \ + -DCMAKE_C_COMPILER_TARGET=$target \ + -DCMAKE_CXX_COMPILER_TARGET=$target \ + -DCMAKE_ASM_COMPILER_TARGET=$target \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${PWD}/${dir} \ + -DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_CONFIG_PATH=$MOZ_FETCHES_DIR/clang/bin/llvm-config \ + $EXTRA_CMAKE_FLAGS + +ninja -v $install + +if [ "$what" = "compiler-rt" ]; then + # ninja install doesn't copy the PDBs + case "$target" in + *-pc-windows-msvc) + cp lib/windows/*pdb $dir/lib/windows/ + ;; + esac +fi + +tar caf "$artifact" "$dir" + +mkdir -p "$UPLOAD_DIR" +mv "$artifact" "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/build-llvm-symbolizer.sh b/taskcluster/scripts/misc/build-llvm-symbolizer.sh new file mode 100755 index 0000000000..f0b3657376 --- /dev/null +++ b/taskcluster/scripts/misc/build-llvm-symbolizer.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e -x + +$(dirname $0)/build-llvm-common.sh llvm install-llvm-symbolizer "$@" diff --git a/taskcluster/scripts/misc/build-mar-tools.sh b/taskcluster/scripts/misc/build-mar-tools.sh new file mode 100755 index 0000000000..1a813dd772 --- /dev/null +++ b/taskcluster/scripts/misc/build-mar-tools.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -x -e -v + +# This script is for building mar and mbsdiff + +COMPRESS_EXT=zst + +cd $GECKO_PATH + +export MOZ_OBJDIR=obj-mar + +echo ac_add_options --enable-project=tools/update-packaging > .mozconfig +echo ac_add_options --enable-linker=lld >> .mozconfig + +TOOLCHAINS="clang" + +for t in $TOOLCHAINS; do + PATH="$MOZ_FETCHES_DIR/$t/bin:$PATH" +done + +./mach build -v + +mkdir mar-tools +cp $MOZ_OBJDIR/dist/host/bin/{mar,mbsdiff} mar-tools/ + +tar -acf mar-tools.tar.$COMPRESS_EXT mar-tools/ +mkdir -p $UPLOAD_DIR +cp mar-tools.tar.$COMPRESS_EXT $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh b/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh new file mode 100755 index 0000000000..da93bbf1bc --- /dev/null +++ b/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -x -e -v + +WORKSPACE=$HOME/workspace +INSTALL_DIR=$WORKSPACE/fxc2 + +mkdir -p $INSTALL_DIR/bin + +export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + +# -------------- + +cd $MOZ_FETCHES_DIR/fxc2 +make -j$(nproc) x86 + +cp fxc2.exe $INSTALL_DIR/bin/ +cp dll/d3dcompiler_47_32.dll $INSTALL_DIR/bin/d3dcompiler_47.dll + +# -------------- + +cd $WORKSPACE +tar caf fxc2.tar.zst fxc2 + +mkdir -p $UPLOAD_DIR +cp fxc2.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-mingw32-nsis.sh b/taskcluster/scripts/misc/build-mingw32-nsis.sh new file mode 100755 index 0000000000..806f9c8608 --- /dev/null +++ b/taskcluster/scripts/misc/build-mingw32-nsis.sh @@ -0,0 +1,70 @@ +#!/bin/bash +set -x -e -v + +INSTALL_DIR=$MOZ_FETCHES_DIR/nsis + +mkdir -p $INSTALL_DIR + +cd $MOZ_FETCHES_DIR + +export PATH="$MOZ_FETCHES_DIR/binutils/bin:$MOZ_FETCHES_DIR/clang/bin:$PATH" + +# Call.S, included from CallCPP.S contains directives that clang's integrated +# assembler doesn't understand. +cat <<'EOF' >$MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-gcc +#!/bin/sh +case "$@" in +*/CallCPP.S) + $(dirname $0)/i686-w64-mingw32-clang -fno-integrated-as "$@" + ;; +*) + $(dirname $0)/i686-w64-mingw32-clang "$@" + ;; +esac +EOF + +chmod +x $MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-gcc +ln -s i686-w64-mingw32-clang++ $MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-g++ + +# -------------- + +cd zlib-1.2.13 +make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- + +cd ../nsis-3.07-src +patch -p1 < $GECKO_PATH/build/win32/nsis-no-insert-timestamp.patch +patch -p1 < $GECKO_PATH/build/win32/nsis-no-underscore.patch +# --exclude-libs is not supported by lld, but is not required anyways. +# /fixed is passed by the build system when building with MSVC but not +# when building with GCC/binutils. The build system doesn't really support +# clang/lld, but apparently binutils and lld don't have the same defaults +# related to this. Unfortunately, /fixed is necessary for the stubs to be +# handled properly by the resource editor in NSIS, which doesn't handle +# relocations, so we pass the equivalent flag to lld-link through lld through +# clang. +sed -i 's/-Wl,--exclude-libs,msvcrt.a/-Wl,-Xlink=-fixed/' SCons/Config/gnu +# memcpy.c and memset.c are built with a C++ compiler so we need to +# avoid their symbols being mangled. +sed -i '2i extern "C"' SCons/Config/{memcpy,memset}.c +# Makensisw is skipped because its resource file fails to build with +# llvm-rc, but we don't need makensisw. +scons \ + PATH=$PATH \ + CC="clang --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ + CXX="clang++ --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ + XGCC_W32_PREFIX=i686-w64-mingw32- \ + ZLIB_W32=../zlib-1.2.13 \ + SKIPUTILS="NSIS Menu,Makensisw" \ + PREFIX_DEST=$INSTALL_DIR/ \ + PREFIX_BIN=bin \ + NSIS_CONFIG_CONST_DATA_PATH=no \ + VERSION=3.07 \ + install +# -------------- + +cd $MOZ_FETCHES_DIR + +tar caf nsis.tar.zst nsis + +mkdir -p $UPLOAD_DIR +cp nsis.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-mkbom-linux.sh b/taskcluster/scripts/misc/build-mkbom-linux.sh new file mode 100755 index 0000000000..8b4a69a1ef --- /dev/null +++ b/taskcluster/scripts/misc/build-mkbom-linux.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -x -e -v + +# This script is for building mkbom for Linux. +mkdir -p $UPLOAD_DIR + +export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin +cd $MOZ_FETCHES_DIR/bomutils + +make_flags="-j$(nproc)" +make "$make_flags" + +cd $(mktemp -d) +mkdir mkbom + +cp $MOZ_FETCHES_DIR/bomutils/build/bin/mkbom ./mkbom/mkbom +tar caf $UPLOAD_DIR/mkbom.tar.zst ./mkbom diff --git a/taskcluster/scripts/misc/build-mozmake.sh b/taskcluster/scripts/misc/build-mozmake.sh new file mode 100755 index 0000000000..455496787b --- /dev/null +++ b/taskcluster/scripts/misc/build-mozmake.sh @@ -0,0 +1,66 @@ +#!/bin/bash +set -x -e -v + +. $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh + +cd $MOZ_FETCHES_DIR/make + +# Patch for http://savannah.gnu.org/bugs/?58656 +patch -p1 <<'EOF' +diff --git a/src/remake.c b/src/remake.c +index fb237c5..b2ba069 100644 +--- a/src/remake.c ++++ b/src/remake.c +@@ -35,6 +35,13 @@ this program. If not, see . */ + #endif + #ifdef WINDOWS32 + #include ++#include ++#if defined(_MSC_VER) && _MSC_VER > 1200 ++/* VC7 or later support _stat64 to access 64-bit file size. */ ++#define stat64 _stat64 ++#else ++#define stat64 stat ++#endif + #endif + + +@@ -1466,7 +1473,11 @@ static FILE_TIMESTAMP + name_mtime (const char *name) + { + FILE_TIMESTAMP mtime; ++#if defined(WINDOWS32) ++ struct stat64 st; ++#else + struct stat st; ++#endif + int e; + + #if defined(WINDOWS32) +@@ -1498,7 +1509,7 @@ name_mtime (const char *name) + tend = &tem[0]; + } + +- e = stat (tem, &st); ++ e = stat64 (tem, &st); + if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1)) + { + errno = ENOTDIR; +EOF + +chmod +w src/config.h.W32 +sed "/#define BATCH_MODE_ONLY_SHELL/s/\/\*\(.*\)\*\//\1/" src/config.h.W32 > src/config.h +make -f Basic.mk \ + MAKE_HOST=Windows32 \ + MKDIR.cmd='mkdir -p $1' \ + RM.cmd='rm -f $1' \ + CP.cmd='cp $1 $2' \ + msvc_CC="$MOZ_FETCHES_DIR/clang/bin/clang-cl -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" \ + msvc_LD=$MOZ_FETCHES_DIR/clang/bin/lld-link + +mkdir mozmake +cp WinRel/gnumake.exe mozmake/mozmake.exe + +tar -acvf mozmake.tar.zst mozmake +mkdir -p $UPLOAD_DIR +cp mozmake.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-msix-packaging.sh b/taskcluster/scripts/misc/build-msix-packaging.sh new file mode 100755 index 0000000000..345057a016 --- /dev/null +++ b/taskcluster/scripts/misc/build-msix-packaging.sh @@ -0,0 +1,33 @@ +#!/bin/bash +set -x -e -v + +cd $MOZ_FETCHES_DIR/msix-packaging + +export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH + +# makelinux.sh invokes `make` with no parallelism. These jobs run on hosts with +# 16+ vCPUs; let's try to take advantage. +export MAKEFLAGS=-j16 + +./makelinux.sh --pack -- \ + -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \ + -DCMAKE_EXE_LINKER_FLAGS_INIT='-fuse-ld=lld -Wl,-rpath=\$ORIGIN' \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT='-fuse-ld=lld -Wl,-rpath=\$ORIGIN' \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE + +mkdir msix-packaging +cp .vs/bin/makemsix msix-packaging +cp .vs/lib/libmsix.so msix-packaging + +# The `msix-packaging` tool links against libicu dynamically. It would be +# better to link statically, but it's not easy to achieve. This copies the +# needed libicu libraries from the sysroot, and the rpath settings above allows +# them to be loaded, which means the consuming environment doesn't need to +# install libicu directly. +LD_LIBRARY_PATH=$MOZ_FETCHES_DIR/sysroot/usr/lib/x86_64-linux-gnu \ +ldd msix-packaging/libmsix.so | awk '$3 ~ /libicu/ {print $3}' | xargs -I '{}' cp '{}' msix-packaging + +tar caf msix-packaging.tar.zst msix-packaging + +mkdir -p $UPLOAD_DIR +cp msix-packaging.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-nasm.sh b/taskcluster/scripts/misc/build-nasm.sh new file mode 100755 index 0000000000..79b0887b3e --- /dev/null +++ b/taskcluster/scripts/misc/build-nasm.sh @@ -0,0 +1,63 @@ +#!/bin/bash +set -x -e -v + +COMPRESS_EXT=zst + +cd $MOZ_FETCHES_DIR/nasm-* + +case $(cat version) in +2.14.02) + # Fix for .debug_loc section containing garbage on elf32 + # https://bugzilla.nasm.us/show_bug.cgi?id=3392631 + patch -p1 <<'EOF' +diff --git a/output/outelf.c b/output/outelf.c +index de99d076..47031e12 100644 +--- a/output/outelf.c ++++ b/output/outelf.c +@@ -3275,7 +3275,7 @@ static void dwarf_generate(void) + WRITELONG(pbuf,framelen-4); /* initial length */ + + /* build loc section */ +- loclen = 16; ++ loclen = is_elf64() ? 16 : 8; + locbuf = pbuf = nasm_malloc(loclen); + if (is_elf32()) { + WRITELONG(pbuf,0); /* null beginning offset */ +EOF + ;; +esac + +export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + +case "$1" in + win64) + TARGET=x86_64-w64-mingw32 + CC=x86_64-w64-mingw32-clang + EXE=.exe + ;; + macosx64) + export MACOSX_DEPLOYMENT_TARGET=10.12 + TARGET=x86_64-apple-darwin + CC="clang -fuse-ld=lld --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk" + EXE= + ;; + macosx64-aarch64) + export MACOSX_DEPLOYMENT_TARGET=11.0 + TARGET=aarch64-apple-darwin + CC="clang -fuse-ld=lld --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk" + EXE= + ;; + *) + CC="clang --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" + EXE= + ;; +esac +./configure CC="$CC" AR=llvm-ar RANLIB=llvm-ranlib LDFLAGS=-fuse-ld=lld ${TARGET:+--host=$TARGET} +make -j$(nproc) + +mv nasm$EXE nasm-tmp +mkdir nasm +mv nasm-tmp nasm/nasm$EXE +tar -acf nasm.tar.$COMPRESS_EXT nasm +mkdir -p "$UPLOAD_DIR" +cp nasm.tar.$COMPRESS_EXT "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/build-nsis.sh b/taskcluster/scripts/misc/build-nsis.sh new file mode 100755 index 0000000000..b1b8e06248 --- /dev/null +++ b/taskcluster/scripts/misc/build-nsis.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -x -e -v + +export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH + +# nsis/ contains the pre-built windows native nsis. We build a linux +# makensis from source and install it there. +INSTALL_DIR=$MOZ_FETCHES_DIR/nsis + +cd $MOZ_FETCHES_DIR/nsis-3.07-src +patch -p1 < $GECKO_PATH/build/win32/nsis-no-underscore.patch +scons \ + -j $(nproc) \ + PATH=$PATH \ + CC="clang --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ + CXX="clang++ --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ + SKIPSTUBS=all \ + SKIPPLUGINS=all \ + SKIPUTILS=all \ + SKIPMISC=all \ + PREFIX_DEST=$INSTALL_DIR/ \ + PREFIX_BIN=bin \ + NSIS_CONFIG_CONST_DATA_PATH=no \ + VERSION=3.07 \ + install-compiler + +cd $MOZ_FETCHES_DIR + +tar caf nsis.tar.zst nsis + +mkdir -p $UPLOAD_DIR +cp nsis.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-pkgconf.sh b/taskcluster/scripts/misc/build-pkgconf.sh new file mode 100755 index 0000000000..bc4ec7d4bb --- /dev/null +++ b/taskcluster/scripts/misc/build-pkgconf.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -x -e -v + +# This script is for building pkgconfs. +PROJECT=pkgconf + +cd ${MOZ_FETCHES_DIR}/${PROJECT} + +export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + +case "$1" in +x86_64-unknown-linux-gnu) + CC="clang --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" + EXE= + ;; +x86_64-apple-darwin) + export MACOSX_DEPLOYMENT_TARGET=10.12 + TARGET=$1 + CC="clang --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk" + EXE= + ;; +aarch64-apple-darwin) + export MACOSX_DEPLOYMENT_TARGET=11.0 + TARGET=$1 + CC="clang --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk" + EXE= + ;; +x86_64-pc-windows-gnu) + TARGET=x86_64-w64-mingw32 + CC="x86_64-w64-mingw32-clang -DPKGCONFIG_IS_STATIC=1" + EXE=.exe + ;; +esac + +./configure --disable-shared CC="$CC" AR=llvm-ar RANLIB=llvm-ranlib LDFLAGS=-fuse-ld=lld ${TARGET:+--host=$TARGET} +make -j$(nproc) V=1 + +mv ${PROJECT}${EXE} ${PROJECT}_tmp +mkdir ${PROJECT} +mv ${PROJECT}_tmp ${PROJECT}/pkg-config${EXE} +tar -acf ${PROJECT}.tar.zst ${PROJECT} + +mkdir -p $UPLOAD_DIR +mv ${PROJECT}.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-resourcemonitor.sh b/taskcluster/scripts/misc/build-resourcemonitor.sh new file mode 100755 index 0000000000..6643079c76 --- /dev/null +++ b/taskcluster/scripts/misc/build-resourcemonitor.sh @@ -0,0 +1,40 @@ +#!/bin/bash +set -x -e -v + +cd "$MOZ_FETCHES_DIR"/resource-monitor/ || exit 1 +COMPRESS_EXT=zst + +PATH="$MOZ_FETCHES_DIR/go/bin:$PATH" +export PATH + +EXE_SUFFIX="" + +case "$1" in + linux64) GOOS=linux; GOARCH=amd64 ;; + macos64) GOOS=darwin; GOARCH=amd64 ;; + windows64) GOOS=windows; GOARCH=amd64; EXE_SUFFIX=".exe" ;; + windows32) GOOS=windows; GOARCH=386; EXE_SUFFIX=".exe" ;; + *) + echo "Unknown architecture $1 not recognized in build-resourcemonitor.sh" >&2 + exit 1 + ;; +esac + +export GOOS +export GOARCH +export EXE_SUFFIX + +echo "GOOS=$GOOS" +echo "GOARCH=$GOARCH" + +go build . + +STAGING_DIR="resource-monitor" +mv "resource-monitor${EXE_SUFFIX}" resource-monitor.tmp +mkdir "${STAGING_DIR}" + +cp resource-monitor.tmp "${STAGING_DIR}/resource-monitor${EXE_SUFFIX}" + +tar -acf "resource-monitor.tar.$COMPRESS_EXT" "${STAGING_DIR}"/ +mkdir -p "$UPLOAD_DIR" +cp "resource-monitor.tar.$COMPRESS_EXT" "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/build-rust-based-toolchain.sh b/taskcluster/scripts/misc/build-rust-based-toolchain.sh new file mode 100755 index 0000000000..a5939ed58e --- /dev/null +++ b/taskcluster/scripts/misc/build-rust-based-toolchain.sh @@ -0,0 +1,66 @@ +#!/bin/bash +set -x -e -v + +artifact=$(basename "$TOOLCHAIN_ARTIFACT") +project=${artifact%.tar.*} +workspace=$HOME/workspace + +# Exported for osx-cross-linker. +export TARGET=$1 +shift + +FEATURES="$@" + +case "$TARGET" in +x86_64-unknown-linux-gnu) + # Native Linux Build + export RUSTFLAGS="-Clinker=$MOZ_FETCHES_DIR/clang/bin/clang++ -C link-arg=--sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu -C link-arg=-fuse-ld=lld" + export CC=$MOZ_FETCHES_DIR/clang/bin/clang + export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++ + export TARGET_CFLAGS="--sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" + export TARGET_CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" + ;; +*-apple-darwin) + # Cross-compiling for Mac on Linux. + export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + export RUSTFLAGS="-C linker=$GECKO_PATH/taskcluster/scripts/misc/osx-cross-linker" + if test "$TARGET" = "aarch64-apple-darwin"; then + export MACOSX_DEPLOYMENT_TARGET=11.0 + else + export MACOSX_DEPLOYMENT_TARGET=10.12 + fi + export CC="$MOZ_FETCHES_DIR/clang/bin/clang" + export CXX="$MOZ_FETCHES_DIR/clang/bin/clang++" + export TARGET_CFLAGS="-isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk" + export TARGET_CXXFLAGS="-isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk -stdlib=libc++" + ;; +*-pc-windows-msvc) + # Cross-compiling for Windows on Linux. + export CC=$MOZ_FETCHES_DIR/clang/bin/clang-cl + export CXX=$MOZ_FETCHES_DIR/clang/bin/clang-cl + export TARGET_AR=$MOZ_FETCHES_DIR/clang/bin/llvm-lib + + . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh + export CARGO_TARGET_I686_PC_WINDOWS_MSVC_LINKER=$MOZ_FETCHES_DIR/clang/bin/lld-link + export CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER=$MOZ_FETCHES_DIR/clang/bin/lld-link + export TARGET_CFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + export TARGET_CXXFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + ;; +esac + +PATH="$MOZ_FETCHES_DIR/rustc/bin:$PATH" + +cargo install \ + --locked \ + --verbose \ + --path $MOZ_FETCHES_DIR/${FETCH-$project} \ + --target-dir $workspace/obj \ + --root $workspace/out \ + --target "$TARGET" \ + ${FEATURES:+--features "$FEATURES"} + +mkdir $workspace/$project +mv $workspace/out/bin/* $workspace/$project +tar -C $workspace -acvf $project.tar.zst $project +mkdir -p $UPLOAD_DIR +mv $project.tar.zst $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-sysroot-wasi.sh b/taskcluster/scripts/misc/build-sysroot-wasi.sh new file mode 100755 index 0000000000..2c6ef551ce --- /dev/null +++ b/taskcluster/scripts/misc/build-sysroot-wasi.sh @@ -0,0 +1,46 @@ +#!/bin/bash +set -x -e -v + +artifact=$(basename $TOOLCHAIN_ARTIFACT) +sysroot=${artifact%.tar.*} + +# Make the wasi compiler-rt available to clang. +env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh + +cd $MOZ_FETCHES_DIR/wasi-sdk +LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project + +mkdir -p build/install/wasi +# The wasi-sdk build system wants to build clang itself. We trick it into +# thinking it did, and put our own clang where it would have built its own. +ln -s $MOZ_FETCHES_DIR/clang build/llvm +touch build/llvm.BUILT + +# The wasi-sdk build system wants a clang and an ar binary in +# build/install/$PREFIX/bin +ln -s $MOZ_FETCHES_DIR/clang/bin build/install/wasi/bin +ln -s llvm-ar build/install/wasi/bin/ar + +# Build wasi-libc, libc++ and libc++abi. +do_make() { + make \ + LLVM_PROJ_DIR=$LLVM_PROJ_DIR \ + PREFIX=/wasi \ + -j$(nproc) \ + $1 +} + +do_make build/wasi-libc.BUILT + +# The wasi-sdk build system has a dependency on compiler-rt for libcxxabi, +# but that's not actually necessary. Pretend it's already built. +# Because compiler-rt has a dependency on wasi-libc, we can only do this +# after wasi-libc is built. +touch build/compiler-rt.BUILT + +do_make build/libcxx.BUILT + +mv build/install/wasi/share/wasi-sysroot $sysroot +tar --zstd -cf $artifact $sysroot +mkdir -p $UPLOAD_DIR +mv $artifact $UPLOAD_DIR/ diff --git a/taskcluster/scripts/misc/build-sysroot.sh b/taskcluster/scripts/misc/build-sysroot.sh new file mode 100755 index 0000000000..8b110eadf7 --- /dev/null +++ b/taskcluster/scripts/misc/build-sysroot.sh @@ -0,0 +1,127 @@ +#!/bin/sh + +set -x +set -e + +arch=$1 +shift + +sysroot=$(basename $TOOLCHAIN_ARTIFACT) +sysroot=${sysroot%%.*} + +# To repackage Firefox as a .deb package +# we bootstrap jessie systems on a bullseye image. +# To keep the build and repackage environments +# consistent the build baseline used here (jessie) should be +# synchronized with the packaging baseline used in +# taskcluster/docker/debian-repackage/Dockerfile +# and python/mozbuild/mozbuild/repackaging/deb.py +case "$arch" in +i386|amd64) + dist=jessie + if [ -n "$PACKAGES_TASKS" ]; then + gcc_version=8 + else + gcc_version=4.9 + fi + # The Debian Jessie GPG key expired. + extra_apt_opt='Apt::Key::gpgvcommand "/usr/local/sbin/gpgvnoexpkeysig"' + ;; +arm64) + dist=buster + gcc_version=8 + ;; +*) + echo "$arch is not supported." >&2 + exit 1 + ;; +esac + +case "$dist" in +jessie) + repo_url=https://archive.debian.org/debian + ;; +*) + SNAPSHOT=20210208T213147Z + repo_url=http://snapshot.debian.org/archive/debian/$SNAPSHOT + ;; +esac + +packages=" + linux-libc-dev + libasound2-dev + libstdc++-${gcc_version}-dev + libdbus-glib-1-dev + libfontconfig1-dev + libfreetype6-dev + libgconf2-dev + libgcc-${gcc_version}-dev + libgtk-3-dev + libpango1.0-dev + libpulse-dev + libx11-xcb-dev + libxt-dev + valgrind + $* +" + +# --keyring=... works around https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=981710 +# For a sysroot, we don't need everything. Essentially only libraries and headers, as +# well as pkgconfig files. We exclude debug info files and valgrind files that are not +# useful to build. +queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1" +( + echo "deb $repo_url $dist main" + for task in $PACKAGES_TASKS; do + echo "deb [trusted=yes] $queue_base/task/$task/artifacts/public/build/ apt/" + done +) | mmdebstrap \ + --architectures=$arch \ + --variant=extract \ + --include=$(echo $packages | tr ' ' ,) \ + $dist \ + $sysroot \ + - \ + --aptopt=/etc/apt/apt.conf.d/99taskcluster \ + ${extra_apt_opt:+--aptopt="$extra_apt_opt"} \ + --dpkgopt=path-exclude="*" \ + --dpkgopt=path-include="/lib/*" \ + --dpkgopt=path-include="/lib32/*" \ + --dpkgopt=path-include="/usr/include/*" \ + --dpkgopt=path-include="/usr/lib/*" \ + --dpkgopt=path-include="/usr/lib32/*" \ + --dpkgopt=path-exclude="/usr/lib/debug/*" \ + --dpkgopt=path-exclude="/usr/lib/python*" \ + --dpkgopt=path-exclude="/usr/lib/valgrind/*" \ + --dpkgopt=path-include="/usr/share/pkgconfig/*" \ + --keyring=/usr/share/keyrings/debian-archive-removed-keys.gpg \ + -v + +# Remove files that are created despite the path-exclude=*. +rm -rf $sysroot/etc $sysroot/dev $sysroot/tmp $sysroot/var + +# Remove empty directories +find $sysroot -depth -type d -empty -delete + +# Adjust symbolic links to link into the sysroot instead of absolute +# paths that end up pointing at the host system. +find $sysroot -type l | while read l; do + t=$(readlink $l) + case "$t" in + /*) + # We have a path in the form "$sysroot/a/b/c/d" and we want ../../.., + # which is how we get from d to the root of the sysroot. For that, + # we start from the directory containing d ("$sysroot/a/b/c"), remove + # all non-slash characters, leaving is with "///", replace each slash + # with "../", which gives us "../../../", and then we remove the last + # slash. + rel=$(dirname $l | sed 's,[^/],,g;s,/,../,g;s,/$,,') + ln -sf $rel$t $l + ;; + esac +done + +tar caf $sysroot.tar.zst $sysroot + +mkdir -p "$UPLOAD_DIR" +mv "$sysroot.tar.zst" "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/build-upx.sh b/taskcluster/scripts/misc/build-upx.sh new file mode 100755 index 0000000000..a0ad9af626 --- /dev/null +++ b/taskcluster/scripts/misc/build-upx.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -x -e -v + +WORKSPACE=$HOME/workspace +INSTALL_DIR=$WORKSPACE/upx + +mkdir -p $INSTALL_DIR/bin + +cd $WORKSPACE + +git clone -n https://github.com/upx/upx.git upx-clone +cd upx-clone +# https://github.com/upx/upx/releases/tag/v3.95 +git checkout 7a3637ff5a800b8bcbad20ae7f668d8c8449b014 # Asserts integrity of the clone (right?) +git submodule update --init --recursive +cd src +make -j$(nproc) +cp upx.out $INSTALL_DIR/bin/upx + +# -------------- + +cd $WORKSPACE +tar caf upx.tar.zst upx + +mkdir -p $UPLOAD_DIR +cp upx.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-winchecksec.sh b/taskcluster/scripts/misc/build-winchecksec.sh new file mode 100755 index 0000000000..f13ef5b77b --- /dev/null +++ b/taskcluster/scripts/misc/build-winchecksec.sh @@ -0,0 +1,54 @@ +#!/bin/bash +set -e -v -x + +mkdir -p $UPLOAD_DIR + +cd $MOZ_FETCHES_DIR/winchecksec + +SUFFIX= + +case "$1" in +x86_64-pc-windows-msvc) + SUFFIX=.exe + export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH" + + . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh + + # Patch pe-parse because clang-cl doesn't support /analyze. + patch -p1 <<'EOF' +--- a/pe-parse/cmake/compilation_flags.cmake ++++ b/pe-parse/cmake/compilation_flags.cmake +@@ -1,5 +1,5 @@ + if (MSVC) +- list(APPEND DEFAULT_CXX_FLAGS /W4 /analyze) ++ list(APPEND DEFAULT_CXX_FLAGS /W4) + + if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + list(APPEND DEFAULT_CXX_FLAGS /Zi) +EOF + + CMAKE_FLAGS=' + -DCMAKE_CXX_COMPILER=clang-cl + -DCMAKE_C_COMPILER=clang-cl + -DCMAKE_LINKER=lld-link + -DCMAKE_C_FLAGS="-fuse-ld=lld -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + -DCMAKE_CXX_FLAGS="-fuse-ld=lld -EHsc -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" + -DCMAKE_RC_COMPILER=llvm-rc + -DCMAKE_MT=llvm-mt + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded + ' + ;; +esac + +eval cmake \ + -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=Off \ + $CMAKE_FLAGS + +ninja -v + +cd .. +tar -caf winchecksec.tar.zst winchecksec/winchecksec${SUFFIX} +cp winchecksec.tar.zst $UPLOAD_DIR/ diff --git a/taskcluster/scripts/misc/build-wine.sh b/taskcluster/scripts/misc/build-wine.sh new file mode 100755 index 0000000000..e292fd2e1e --- /dev/null +++ b/taskcluster/scripts/misc/build-wine.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -x -e -v + +WORKSPACE=$HOME/workspace +INSTALL_DIR=$WORKSPACE/wine + +mkdir -p $INSTALL_DIR +mkdir -p $WORKSPACE/build/wine +mkdir -p $WORKSPACE/build/wine64 + +cd $WORKSPACE/build/wine64 +$MOZ_FETCHES_DIR/wine-source/configure --enable-win64 --without-x --without-freetype --prefix=$INSTALL_DIR/ +make -j$(nproc) + +cd $WORKSPACE/build/wine +$MOZ_FETCHES_DIR/wine-source/configure --with-wine64=../wine64 --without-x --without-freetype --prefix=$INSTALL_DIR/ +make -j$(nproc) +make install + +cd $WORKSPACE/build/wine64 +make install + +# -------------- + +cd $WORKSPACE/ +tar caf wine.tar.zst wine + +mkdir -p $UPLOAD_DIR +cp wine.tar.* $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/build-xar-linux.sh b/taskcluster/scripts/misc/build-xar-linux.sh new file mode 100755 index 0000000000..5c1706b10e --- /dev/null +++ b/taskcluster/scripts/misc/build-xar-linux.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -x -e -v + +# This script is for building xar for Linux. +mkdir -p $UPLOAD_DIR + +export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin +cd $MOZ_FETCHES_DIR/xar/xar + +./autogen.sh --prefix=/builds/worker --enable-static +make_flags="-j$(nproc)" +make $make_flags + +cd $(mktemp -d) +mkdir xar + +cp $MOZ_FETCHES_DIR/xar/xar/src/xar ./xar/xar +tar caf $UPLOAD_DIR/xar.tar.zst ./xar diff --git a/taskcluster/scripts/misc/fetch-chromium.py b/taskcluster/scripts/misc/fetch-chromium.py new file mode 100644 index 0000000000..d9a03261d1 --- /dev/null +++ b/taskcluster/scripts/misc/fetch-chromium.py @@ -0,0 +1,235 @@ +#!/usr/bin/python3 -u +# -*- coding: utf-8 -*- + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +This script downloads the latest chromium build (or a manually +defined version) for a given platform. It then uploads the build, +with the revision of the build stored in a REVISION file. +""" + +import argparse +import errno +import os +import shutil +import subprocess +import tempfile + +import requests +from redo import retriable + +LAST_CHANGE_URL = ( + # formatted with platform + "https://www.googleapis.com/download/storage/v1/b/" + "chromium-browser-snapshots/o/{}%2FLAST_CHANGE?alt=media" +) + +CHROMIUM_BASE_URL = ( + # formatted with (platform/revision/archive) + "https://www.googleapis.com/download/storage/v1/b/" + "chromium-browser-snapshots/o/{}%2F{}%2F{}?alt=media" +) + + +CHROMIUM_INFO = { + "linux": { + "platform": "Linux_x64", + "chromium": "chrome-linux.zip", + "result": "chromium-linux.tar.bz2", + "chromedriver": "chromedriver_linux64.zip", + }, + "win32": { + "platform": "Win", + "chromium": "chrome-win.zip", + "result": "chromium-win32.tar.bz2", + "chromedriver": "chromedriver_win32.zip", + }, + "win64": { + "platform": "Win", + "chromium": "chrome-win.zip", + "result": "chromium-win64.tar.bz2", + "chromedriver": "chromedriver_win32.zip", + }, + "mac": { + "platform": "Mac", + "chromium": "chrome-mac.zip", + "result": "chromium-mac.tar.bz2", + "chromedriver": "chromedriver_mac64.zip", + }, +} + + +def log(msg): + print("build-chromium: %s" % msg) + + +@retriable(attempts=7, sleeptime=5, sleepscale=2) +def fetch_file(url, filepath): + """Download a file from the given url to a given file.""" + size = 4096 + r = requests.get(url, stream=True) + r.raise_for_status() + + with open(filepath, "wb") as fd: + for chunk in r.iter_content(size): + fd.write(chunk) + + +def unzip(zippath, target): + """Unzips an archive to the target location.""" + log("Unpacking archive at: %s to: %s" % (zippath, target)) + unzip_command = ["unzip", "-q", "-o", zippath, "-d", target] + subprocess.check_call(unzip_command) + + +@retriable(attempts=7, sleeptime=5, sleepscale=2) +def fetch_chromium_revision(platform): + """Get the revision of the latest chromium build.""" + chromium_platform = CHROMIUM_INFO[platform]["platform"] + revision_url = LAST_CHANGE_URL.format(chromium_platform) + + log("Getting revision number for latest %s chromium build..." % chromium_platform) + + # Expecting a file with a single number indicating the latest + # chromium build with a chromedriver that we can download + r = requests.get(revision_url, timeout=30) + r.raise_for_status() + + chromium_revision = r.content.decode("utf-8") + return chromium_revision.strip() + + +def fetch_chromium_build(platform, revision, zippath): + """Download a chromium build for a given revision, or the latest.""" + if not revision: + revision = fetch_chromium_revision(platform) + + download_platform = CHROMIUM_INFO[platform]["platform"] + download_url = CHROMIUM_BASE_URL.format( + download_platform, revision, CHROMIUM_INFO[platform]["chromium"] + ) + + log("Downloading %s chromium build revision %s..." % (download_platform, revision)) + log(download_url) + fetch_file(download_url, zippath) + return revision + + +def fetch_chromedriver(platform, revision, chromium_dir): + """Get the chromedriver for the given revision and repackage it.""" + download_url = CHROMIUM_BASE_URL.format( + CHROMIUM_INFO[platform]["platform"], + revision, + CHROMIUM_INFO[platform]["chromedriver"], + ) + + tmpzip = os.path.join(tempfile.mkdtemp(), "cd-tmp.zip") + log("Downloading chromedriver from %s" % download_url) + fetch_file(download_url, tmpzip) + + tmppath = tempfile.mkdtemp() + unzip(tmpzip, tmppath) + + # Find the chromedriver then copy it to the chromium directory + cd_path = None + for dirpath, _, filenames in os.walk(tmppath): + for filename in filenames: + if filename == "chromedriver" or filename == "chromedriver.exe": + cd_path = os.path.join(dirpath, filename) + break + if cd_path is not None: + break + if cd_path is None: + raise Exception("Could not find chromedriver binary in %s" % tmppath) + log("Copying chromedriver from: %s to: %s" % (cd_path, chromium_dir)) + shutil.copy(cd_path, chromium_dir) + + +def build_chromium_archive(platform, revision=None): + """ + Download and store a chromium build for a given platform. + + Retrieves either the latest version, or uses a pre-defined version if + the `--revision` option is given a revision. + """ + upload_dir = os.environ.get("UPLOAD_DIR") + if upload_dir: + # Create the upload directory if it doesn't exist. + try: + log("Creating upload directory in %s..." % os.path.abspath(upload_dir)) + os.makedirs(upload_dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + # Make a temporary location for the file + tmppath = tempfile.mkdtemp() + tmpzip = os.path.join(tmppath, "tmp-chromium.zip") + + revision = fetch_chromium_build(platform, revision, tmpzip) + + # Unpack archive in `tmpzip` to store the revision number and + # the chromedriver + unzip(tmpzip, tmppath) + + dirs = [ + d + for d in os.listdir(tmppath) + if os.path.isdir(os.path.join(tmppath, d)) and d.startswith("chrome-") + ] + + if len(dirs) > 1: + raise Exception( + "Too many directories starting with `chrome-` after extracting." + ) + elif len(dirs) == 0: + raise Exception( + "Could not find any directories after extraction of chromium zip." + ) + + chromium_dir = os.path.join(tmppath, dirs[0]) + revision_file = os.path.join(chromium_dir, ".REVISION") + with open(revision_file, "w+") as f: + f.write(str(revision)) + + # Get and store the chromedriver + fetch_chromedriver(platform, revision, chromium_dir) + + tar_file = CHROMIUM_INFO[platform]["result"] + tar_command = ["tar", "cjf", tar_file, "-C", tmppath, dirs[0]] + log("Added revision to %s file." % revision_file) + + log("Tarring with the command: %s" % str(tar_command)) + subprocess.check_call(tar_command) + + upload_dir = os.environ.get("UPLOAD_DIR") + if upload_dir: + # Move the tarball to the output directory for upload. + log("Moving %s to the upload directory..." % tar_file) + shutil.copy(tar_file, os.path.join(upload_dir, tar_file)) + + shutil.rmtree(tmppath) + + +def parse_args(): + """Read command line arguments and return options.""" + parser = argparse.ArgumentParser() + parser.add_argument( + "--platform", help="Platform version of chromium to build.", required=True + ) + parser.add_argument( + "--revision", + help="Revision of chromium to build to get. " + "(Defaults to the newest chromium build).", + default=None, + ) + + return parser.parse_args() + + +if __name__ == "__main__": + args = vars(parse_args()) + build_chromium_archive(**args) diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content new file mode 100755 index 0000000000..f3160fad5d --- /dev/null +++ b/taskcluster/scripts/misc/fetch-content @@ -0,0 +1,881 @@ +#!/usr/bin/python3 -u +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import bz2 +import concurrent.futures +import contextlib +import datetime +import gzip +import hashlib +import json +import lzma +import multiprocessing +import os +import pathlib +import random +import re +import stat +import subprocess +import sys +import tarfile +import tempfile +import time +import urllib.parse +import urllib.request +import zipfile + +try: + import zstandard +except ImportError: + zstandard = None + +try: + import certifi +except ImportError: + certifi = None + + +CONCURRENCY = multiprocessing.cpu_count() + + +def log(msg): + print(msg, file=sys.stderr) + sys.stderr.flush() + + +class IntegrityError(Exception): + """Represents an integrity error when downloading a URL.""" + + +def ZstdCompressor(*args, **kwargs): + if not zstandard: + raise ValueError("zstandard Python package not available") + return zstandard.ZstdCompressor(*args, **kwargs) + + +def ZstdDecompressor(*args, **kwargs): + if not zstandard: + raise ValueError("zstandard Python package not available") + return zstandard.ZstdDecompressor(*args, **kwargs) + + +@contextlib.contextmanager +def rename_after_close(fname, *args, **kwargs): + """ + Context manager that opens a temporary file to use as a writer, + and closes the file on context exit, renaming it to the expected + file name in case of success, or removing it in case of failure. + + Takes the same options as open(), but must be used as a context + manager. + """ + path = pathlib.Path(fname) + tmp = path.with_name("%s.tmp" % path.name) + try: + with tmp.open(*args, **kwargs) as fh: + yield fh + except Exception: + tmp.unlink() + raise + else: + tmp.rename(fname) + + +# The following is copied from +# https://github.com/mozilla-releng/redo/blob/6d07678a014e0c525e54a860381a165d34db10ff/redo/__init__.py#L15-L85 +def retrier(attempts=5, sleeptime=10, max_sleeptime=300, sleepscale=1.5, jitter=1): + """ + A generator function that sleeps between retries, handles exponential + backoff and jitter. The action you are retrying is meant to run after + retrier yields. + + At each iteration, we sleep for sleeptime + random.randint(-jitter, jitter). + Afterwards sleeptime is multiplied by sleepscale for the next iteration. + + Args: + attempts (int): maximum number of times to try; defaults to 5 + sleeptime (float): how many seconds to sleep between tries; defaults to + 60s (one minute) + max_sleeptime (float): the longest we'll sleep, in seconds; defaults to + 300s (five minutes) + sleepscale (float): how much to multiply the sleep time by each + iteration; defaults to 1.5 + jitter (int): random jitter to introduce to sleep time each iteration. + the amount is chosen at random between [-jitter, +jitter] + defaults to 1 + + Yields: + None, a maximum of `attempts` number of times + + Example: + >>> n = 0 + >>> for _ in retrier(sleeptime=0, jitter=0): + ... if n == 3: + ... # We did the thing! + ... break + ... n += 1 + >>> n + 3 + + >>> n = 0 + >>> for _ in retrier(sleeptime=0, jitter=0): + ... if n == 6: + ... # We did the thing! + ... break + ... n += 1 + ... else: + ... print("max tries hit") + max tries hit + """ + jitter = jitter or 0 # py35 barfs on the next line if jitter is None + if jitter > sleeptime: + # To prevent negative sleep times + raise Exception( + "jitter ({}) must be less than sleep time ({})".format(jitter, sleeptime) + ) + + sleeptime_real = sleeptime + for _ in range(attempts): + log("attempt %i/%i" % (_ + 1, attempts)) + + yield sleeptime_real + + if jitter: + sleeptime_real = sleeptime + random.randint(-jitter, jitter) + # our jitter should scale along with the sleeptime + jitter = int(jitter * sleepscale) + else: + sleeptime_real = sleeptime + + sleeptime *= sleepscale + + if sleeptime_real > max_sleeptime: + sleeptime_real = max_sleeptime + + # Don't need to sleep the last time + if _ < attempts - 1: + log( + "sleeping for %.2fs (attempt %i/%i)" % (sleeptime_real, _ + 1, attempts) + ) + time.sleep(sleeptime_real) + + +def stream_download(url, sha256=None, size=None): + """Download a URL to a generator, optionally with content verification. + + If ``sha256`` or ``size`` are defined, the downloaded URL will be + validated against those requirements and ``IntegrityError`` will be + raised if expectations do not match. + + Because verification cannot occur until the file is completely downloaded + it is recommended for consumers to not do anything meaningful with the + data if content verification is being used. To securely handle retrieved + content, it should be streamed to a file or memory and only operated + on after the generator is exhausted without raising. + """ + log("Downloading %s" % url) + + h = hashlib.sha256() + length = 0 + + t0 = time.time() + with urllib.request.urlopen( + url, timeout=60, cafile=certifi.where() + ) if certifi else urllib.request.urlopen(url, timeout=60) as fh: + if not url.endswith(".gz") and fh.info().get("Content-Encoding") == "gzip": + fh = gzip.GzipFile(fileobj=fh) + + while True: + chunk = fh.read(65536) + if not chunk: + break + + h.update(chunk) + length += len(chunk) + + yield chunk + + duration = time.time() - t0 + digest = h.hexdigest() + + log( + "%s resolved to %d bytes with sha256 %s in %.3fs" + % (url, length, digest, duration) + ) + + if size: + if size == length: + log("Verified size of %s" % url) + else: + raise IntegrityError( + "size mismatch on %s: wanted %d; got %d" % (url, size, length) + ) + + if sha256: + if digest == sha256: + log("Verified sha256 integrity of %s" % url) + else: + raise IntegrityError( + "sha256 mismatch on %s: wanted %s; got %s" % (url, sha256, digest) + ) + + +def download_to_path(url, path, sha256=None, size=None): + """Download a URL to a filesystem path, possibly with verification.""" + + # We download to a temporary file and rename at the end so there's + # no chance of the final file being partially written or containing + # bad data. + try: + path.unlink() + except FileNotFoundError: + pass + + for _ in retrier(attempts=5, sleeptime=60): + try: + log("Downloading %s to %s" % (url, path)) + + with rename_after_close(path, "wb") as fh: + for chunk in stream_download(url, sha256=sha256, size=size): + fh.write(chunk) + + return + except IntegrityError: + raise + except Exception as e: + log("Download failed: {}".format(e)) + continue + + raise Exception("Download failed, no more retries!") + + +def download_to_memory(url, sha256=None, size=None): + """Download a URL to memory, possibly with verification.""" + + data = b"" + for _ in retrier(attempts=5, sleeptime=60): + try: + log("Downloading %s" % (url)) + + for chunk in stream_download(url, sha256=sha256, size=size): + data += chunk + + return data + except IntegrityError: + raise + except Exception as e: + log("Download failed: {}".format(e)) + continue + + raise Exception("Download failed, no more retries!") + + +def gpg_verify_path(path: pathlib.Path, public_key_data: bytes, signature_data: bytes): + """Verify that a filesystem path verifies using GPG. + + Takes a Path defining a file to verify. ``public_key_data`` contains + bytes with GPG public key data. ``signature_data`` contains a signed + GPG document to use with ``gpg --verify``. + """ + log("Validating GPG signature of %s" % path) + log("GPG key data:\n%s" % public_key_data.decode("ascii")) + + with tempfile.TemporaryDirectory() as td: + try: + # --batch since we're running unattended. + gpg_args = ["gpg", "--homedir", td, "--batch"] + + log("Importing GPG key...") + subprocess.run(gpg_args + ["--import"], input=public_key_data, check=True) + + log("Verifying GPG signature...") + subprocess.run( + gpg_args + ["--verify", "-", "%s" % path], + input=signature_data, + check=True, + ) + + log("GPG signature verified!") + finally: + # There is a race between the agent self-terminating and + # shutil.rmtree() from the temporary directory cleanup that can + # lead to exceptions. Kill the agent before cleanup to prevent this. + env = dict(os.environ) + env["GNUPGHOME"] = td + subprocess.run(["gpgconf", "--kill", "gpg-agent"], env=env) + + +def open_tar_stream(path: pathlib.Path): + """""" + if path.suffix == ".bz2": + return bz2.open(str(path), "rb") + elif path.suffix in (".gz", ".tgz") : + return gzip.open(str(path), "rb") + elif path.suffix == ".xz": + return lzma.open(str(path), "rb") + elif path.suffix == ".zst": + dctx = ZstdDecompressor() + return dctx.stream_reader(path.open("rb")) + elif path.suffix == ".tar": + return path.open("rb") + else: + raise ValueError("unknown archive format for tar file: %s" % path) + + +def archive_type(path: pathlib.Path): + """Attempt to identify a path as an extractable archive.""" + if path.suffixes[-2:-1] == [".tar"] or path.suffixes[-1:] == [".tgz"]: + return "tar" + elif path.suffix == ".zip": + return "zip" + else: + return None + + +def extract_archive(path, dest_dir, typ): + """Extract an archive to a destination directory.""" + + # Resolve paths to absolute variants. + path = path.resolve() + dest_dir = dest_dir.resolve() + + log("Extracting %s to %s" % (path, dest_dir)) + t0 = time.time() + + # We pipe input to the decompressor program so that we can apply + # custom decompressors that the program may not know about. + if typ == "tar": + ifh = open_tar_stream(path) + # On Windows, the tar program doesn't support things like symbolic + # links, while Windows actually support them. The tarfile module in + # python does. So use that. But since it's significantly slower than + # the tar program on Linux, only use tarfile on Windows (tarfile is + # also not much slower on Windows, presumably because of the + # notoriously bad I/O). + if sys.platform == "win32": + tar = tarfile.open(fileobj=ifh, mode="r|") + tar.extractall(str(dest_dir)) + args = [] + else: + args = ["tar", "xf", "-"] + pipe_stdin = True + elif typ == "zip": + # unzip from stdin has wonky behavior. We don't use a pipe for it. + ifh = open(os.devnull, "rb") + args = ["unzip", "-o", str(path)] + pipe_stdin = False + else: + raise ValueError("unknown archive format: %s" % path) + + if args: + with ifh, subprocess.Popen( + args, cwd=str(dest_dir), bufsize=0, stdin=subprocess.PIPE + ) as p: + while True: + if not pipe_stdin: + break + + chunk = ifh.read(131072) + if not chunk: + break + + p.stdin.write(chunk) + + if p.returncode: + raise Exception("%r exited %d" % (args, p.returncode)) + + log("%s extracted in %.3fs" % (path, time.time() - t0)) + + +def repack_archive( + orig: pathlib.Path, dest: pathlib.Path, strip_components=0, prefix="" +): + assert orig != dest + log("Repacking as %s" % dest) + orig_typ = archive_type(orig) + typ = archive_type(dest) + if not orig_typ: + raise Exception("Archive type not supported for %s" % orig.name) + if not typ: + raise Exception("Archive type not supported for %s" % dest.name) + + if dest.suffixes[-2:] != [".tar", ".zst"]: + raise Exception("Only producing .tar.zst archives is supported.") + + if strip_components or prefix: + + def filter(name): + if strip_components: + stripped = "/".join(name.split("/")[strip_components:]) + if not stripped: + raise Exception( + "Stripping %d components would remove files" % strip_components + ) + name = stripped + return prefix + name + + else: + filter = None + + with rename_after_close(dest, "wb") as fh: + ctx = ZstdCompressor() + if orig_typ == "zip": + assert typ == "tar" + zip = zipfile.ZipFile(orig) + # Convert the zip stream to a tar on the fly. + with ctx.stream_writer(fh) as compressor, tarfile.open( + fileobj=compressor, mode="w:" + ) as tar: + for zipinfo in zip.infolist(): + if zipinfo.is_dir(): + continue + tarinfo = tarfile.TarInfo() + filename = zipinfo.filename + tarinfo.name = filter(filename) if filter else filename + tarinfo.size = zipinfo.file_size + # Zip files don't have any knowledge of the timezone + # they were created in. Which is not really convenient to + # reliably convert to a timestamp. But we don't really + # care about accuracy, but rather about reproducibility, + # so we pick UTC. + time = datetime.datetime( + *zipinfo.date_time, tzinfo=datetime.timezone.utc + ) + tarinfo.mtime = time.timestamp() + # 0 is MS-DOS, 3 is UNIX. Only in the latter case do we + # get anything useful for the tar file mode. + if zipinfo.create_system == 3: + mode = zipinfo.external_attr >> 16 + else: + mode = 0o0644 + tarinfo.mode = stat.S_IMODE(mode) + if stat.S_ISLNK(mode): + tarinfo.type = tarfile.SYMTYPE + tarinfo.linkname = zip.read(filename).decode() + tar.addfile(tarinfo, zip.open(filename)) + elif stat.S_ISREG(mode) or stat.S_IFMT(mode) == 0: + tar.addfile(tarinfo, zip.open(filename)) + else: + raise Exception("Unsupported file mode %o" % stat.S_IFMT(mode)) + + elif orig_typ == "tar": + if typ == "zip": + raise Exception("Repacking a tar to zip is not supported") + assert typ == "tar" + + ifh = open_tar_stream(orig) + if filter: + # To apply the filter, we need to open the tar stream and + # tweak it. + origtar = tarfile.open(fileobj=ifh, mode="r|") + with ctx.stream_writer(fh) as compressor, tarfile.open( + fileobj=compressor, + mode="w:", + format=origtar.format, + ) as tar: + for tarinfo in origtar: + if tarinfo.isdir(): + continue + tarinfo.name = filter(tarinfo.name) + if "path" in tarinfo.pax_headers: + tarinfo.pax_headers["path"] = filter( + tarinfo.pax_headers["path"] + ) + if tarinfo.isfile(): + tar.addfile(tarinfo, origtar.extractfile(tarinfo)) + else: + tar.addfile(tarinfo) + else: + # We only change compression here. The tar stream is unchanged. + ctx.copy_stream(ifh, fh) + + +def fetch_and_extract(url, dest_dir, extract=True, sha256=None, size=None): + """Fetch a URL and extract it to a destination path. + + If the downloaded URL is an archive, it is extracted automatically + and the archive is deleted. Otherwise the file remains in place in + the destination directory. + """ + + basename = urllib.parse.urlparse(url).path.split("/")[-1] + dest_path = dest_dir / basename + + download_to_path(url, dest_path, sha256=sha256, size=size) + + if not extract: + return + + typ = archive_type(dest_path) + if typ: + extract_archive(dest_path, dest_dir, typ) + log("Removing %s" % dest_path) + dest_path.unlink() + + +def fetch_urls(downloads): + """Fetch URLs pairs to a pathlib.Path.""" + with concurrent.futures.ThreadPoolExecutor(CONCURRENCY) as e: + fs = [] + + for download in downloads: + fs.append(e.submit(fetch_and_extract, *download)) + + for f in fs: + f.result() + + +def _git_checkout_github_archive(dest_path: pathlib.Path, repo: str, + commit: str, prefix: str): + 'Use github archive generator to speed up github git repo cloning' + repo = repo.rstrip('/') + github_url = '{repo}/archive/{commit}.tar.gz'.format(**locals()) + + with tempfile.TemporaryDirectory() as td: + temp_dir = pathlib.Path(td) + dl_dest = temp_dir / 'archive.tar.gz' + download_to_path(github_url, dl_dest) + repack_archive(dl_dest, dest_path, + strip_components=1, + prefix=prefix + '/') + + +def _github_submodule_required(repo: str, commit: str): + 'Use github API to check if submodules are used' + url = '{repo}/blob/{commit}/.gitmodules'.format(**locals()) + try: + status_code = urllib.request.urlopen(url).getcode() + return status_code == 200 + except: + return False + + +def git_checkout_archive( + dest_path: pathlib.Path, + repo: str, + commit: str, + prefix=None, + ssh_key=None, + include_dot_git=False, +): + """Produce an archive of the files comprising a Git checkout.""" + dest_path.parent.mkdir(parents=True, exist_ok=True) + + if not prefix: + prefix = repo.rstrip("/").rsplit("/", 1)[-1] + + if dest_path.suffixes[-2:] != [".tar", ".zst"]: + raise Exception("Only producing .tar.zst archives is supported.") + + if repo.startswith('https://github.com/'): + if not include_dot_git and not _github_submodule_required(repo, commit): + log("Using github archive service to speedup archive creation") + # Always log sha1 info, either from commit or resolved from repo. + if re.match(r"^[a-fA-F0-9]{40}$", commit): + revision = commit + else: + ref_output = subprocess.check_output(["git", "ls-remote", repo, + 'refs/heads/' + commit]) + revision, _ = ref_output.decode().split(maxsplit=1) + log("Fetching revision {}".format(revision)) + return _git_checkout_github_archive(dest_path, repo, commit, prefix) + + with tempfile.TemporaryDirectory() as td: + temp_dir = pathlib.Path(td) + + git_dir = temp_dir / prefix + + # This could be faster with a shallow clone. However, Git requires a ref + # to initiate a clone. Since the commit-ish may not refer to a ref, we + # simply perform a full clone followed by a checkout. + print("cloning %s to %s" % (repo, git_dir)) + + env = os.environ.copy() + keypath = "" + if ssh_key: + taskcluster_secret_url = api( + os.environ.get("TASKCLUSTER_PROXY_URL"), + "secrets", + "v1", + "secret/{keypath}".format(keypath=ssh_key), + ) + taskcluster_secret = b"".join(stream_download(taskcluster_secret_url)) + taskcluster_secret = json.loads(taskcluster_secret) + sshkey = taskcluster_secret["secret"]["ssh_privkey"] + + keypath = temp_dir.joinpath("ssh-key") + keypath.write_text(sshkey) + keypath.chmod(0o600) + + env = { + "GIT_SSH_COMMAND": "ssh -o 'StrictHostKeyChecking no' -i {keypath}".format( + keypath=keypath + ) + } + + subprocess.run(["git", "clone", "-n", repo, str(git_dir)], check=True, env=env) + + # Always use a detached head so that git prints out what it checked out. + subprocess.run( + ["git", "checkout", "--detach", commit], cwd=str(git_dir), check=True + ) + + # When including the .git, we want --depth 1, but a direct clone would not + # necessarily be able to give us the right commit. + if include_dot_git: + initial_clone = git_dir.with_name(git_dir.name + ".orig") + git_dir.rename(initial_clone) + subprocess.run( + [ + "git", + "clone", + "file://" + str(initial_clone), + str(git_dir), + "--depth", + "1", + ], + check=True, + ) + subprocess.run( + ["git", "remote", "set-url", "origin", repo], + cwd=str(git_dir), + check=True, + ) + + # --depth 1 can induce more work on the server side, so only use it for + # submodule initialization when we want to keep the .git directory. + depth = ["--depth", "1"] if include_dot_git else [] + subprocess.run( + ["git", "submodule", "update", "--init"] + depth, + cwd=str(git_dir), + check=True, + ) + + if keypath: + os.remove(keypath) + + print("creating archive %s of commit %s" % (dest_path, commit)) + exclude_dot_git = [] if include_dot_git else ["--exclude=.git"] + proc = subprocess.Popen( + [ + "tar", + "cf", + "-", + ] + + exclude_dot_git + + [ + "-C", + str(temp_dir), + prefix, + ], + stdout=subprocess.PIPE, + ) + + with rename_after_close(dest_path, "wb") as out: + ctx = ZstdCompressor() + ctx.copy_stream(proc.stdout, out) + + proc.wait() + + +def command_git_checkout_archive(args): + dest = pathlib.Path(args.dest) + + try: + git_checkout_archive( + dest, + args.repo, + args.commit, + prefix=args.path_prefix, + ssh_key=args.ssh_key_secret, + include_dot_git=args.include_dot_git, + ) + except Exception: + try: + dest.unlink() + except FileNotFoundError: + pass + + raise + + +def command_static_url(args): + gpg_sig_url = args.gpg_sig_url + gpg_env_key = args.gpg_key_env + + if bool(gpg_sig_url) != bool(gpg_env_key): + print("--gpg-sig-url and --gpg-key-env must both be defined") + return 1 + + if gpg_sig_url: + gpg_signature = b"".join(stream_download(gpg_sig_url)) + gpg_key = os.environb[gpg_env_key.encode("ascii")] + + dest = pathlib.Path(args.dest) + dest.parent.mkdir(parents=True, exist_ok=True) + + basename = urllib.parse.urlparse(args.url).path.split("/")[-1] + if basename.endswith("".join(dest.suffixes)): + dl_dest = dest + else: + dl_dest = dest.parent / basename + + try: + download_to_path(args.url, dl_dest, sha256=args.sha256, size=args.size) + + if gpg_sig_url: + gpg_verify_path(dl_dest, gpg_key, gpg_signature) + + if dl_dest != dest or args.strip_components or args.add_prefix: + repack_archive(dl_dest, dest, args.strip_components, args.add_prefix) + except Exception: + try: + dl_dest.unlink() + except FileNotFoundError: + pass + + raise + + if dl_dest != dest: + log("Removing %s" % dl_dest) + dl_dest.unlink() + + +def api(root_url, service, version, path): + # taskcluster-lib-urls is not available when this script runs, so + # simulate its behavior: + return "{root_url}/api/{service}/{version}/{path}".format( + root_url=root_url, service=service, version=version, path=path + ) + + +def get_hash(fetch, root_url): + path = "task/{task}/artifacts/{artifact}".format( + task=fetch["task"], artifact="public/chain-of-trust.json" + ) + url = api(root_url, "queue", "v1", path) + cot = json.loads(download_to_memory(url)) + return cot["artifacts"][fetch["artifact"]]["sha256"] + + +def command_task_artifacts(args): + start = time.monotonic() + fetches = json.loads(os.environ["MOZ_FETCHES"]) + downloads = [] + for fetch in fetches: + extdir = pathlib.Path(args.dest) + if "dest" in fetch: + # Note: normpath doesn't like pathlib.Path in python 3.5 + extdir = pathlib.Path(os.path.normpath(str(extdir.joinpath(fetch["dest"])))) + extdir.mkdir(parents=True, exist_ok=True) + root_url = os.environ["TASKCLUSTER_ROOT_URL"] + sha256 = None + if fetch.get("verify-hash"): + sha256 = get_hash(fetch, root_url) + if fetch["artifact"].startswith("public/"): + path = "task/{task}/artifacts/{artifact}".format( + task=fetch["task"], artifact=fetch["artifact"] + ) + url = api(root_url, "queue", "v1", path) + else: + url = ("{proxy_url}/api/queue/v1/task/{task}/artifacts/{artifact}").format( + proxy_url=os.environ["TASKCLUSTER_PROXY_URL"], + task=fetch["task"], + artifact=fetch["artifact"], + ) + downloads.append((url, extdir, fetch["extract"], sha256)) + + fetch_urls(downloads) + end = time.monotonic() + + perfherder_data = { + "framework": {"name": "build_metrics"}, + "suites": [ + { + "name": "fetch_content", + "value": end - start, + "lowerIsBetter": True, + "shouldAlert": False, + "subtests": [], + } + ], + } + print("PERFHERDER_DATA: {}".format(json.dumps(perfherder_data)), file=sys.stderr) + + +def main(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(title="sub commands") + + git_checkout = subparsers.add_parser( + "git-checkout-archive", + help="Obtain an archive of files from a Git repository checkout", + ) + git_checkout.set_defaults(func=command_git_checkout_archive) + git_checkout.add_argument( + "--path-prefix", help="Prefix for paths in produced archive" + ) + git_checkout.add_argument("repo", help="URL to Git repository to be cloned") + git_checkout.add_argument("commit", help="Git commit to check out") + git_checkout.add_argument("dest", help="Destination path of archive") + git_checkout.add_argument( + "--ssh-key-secret", help="The scope path of the ssh key to used for checkout" + ) + git_checkout.add_argument( + "--include-dot-git", action="store_true", help="Include the .git directory" + ) + + url = subparsers.add_parser("static-url", help="Download a static URL") + url.set_defaults(func=command_static_url) + url.add_argument("--sha256", required=True, help="SHA-256 of downloaded content") + url.add_argument( + "--size", required=True, type=int, help="Size of downloaded content, in bytes" + ) + url.add_argument( + "--gpg-sig-url", + help="URL containing signed GPG document validating " "URL to fetch", + ) + url.add_argument( + "--gpg-key-env", help="Environment variable containing GPG key to validate" + ) + url.add_argument( + "--strip-components", + type=int, + default=0, + help="Number of leading components to strip from file " + "names in the downloaded archive", + ) + url.add_argument( + "--add-prefix", + default="", + help="Prefix to add to file names in the downloaded " "archive", + ) + url.add_argument("url", help="URL to fetch") + url.add_argument("dest", help="Destination path") + + artifacts = subparsers.add_parser("task-artifacts", help="Fetch task artifacts") + artifacts.set_defaults(func=command_task_artifacts) + artifacts.add_argument( + "-d", + "--dest", + default=os.environ.get("MOZ_FETCHES_DIR"), + help="Destination directory which will contain all " + "artifacts (defaults to $MOZ_FETCHES_DIR)", + ) + + args = parser.parse_args() + + if not args.dest: + parser.error( + "no destination directory specified, either pass in --dest " + "or set $MOZ_FETCHES_DIR" + ) + + return args.func(args) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/taskcluster/scripts/misc/get_vs.py b/taskcluster/scripts/misc/get_vs.py new file mode 100755 index 0000000000..d630abedb8 --- /dev/null +++ b/taskcluster/scripts/misc/get_vs.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import os +import shutil +import ssl +from pathlib import Path +from tempfile import TemporaryDirectory +from urllib import request + +import certifi +import yaml +from buildconfig import topsrcdir +from vsdownload import downloadPackages, extractPackages + +# Hack to hook certifi +_urlopen = request.urlopen + + +def urlopen(url, data=None): + return _urlopen( + url, data, context=ssl.create_default_context(cafile=certifi.where()) + ) + + +request.urlopen = urlopen + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Download and build a Visual Studio artifact" + ) + parser.add_argument("manifest", help="YAML manifest of the contents to download") + parser.add_argument("outdir", help="Output directory") + args = parser.parse_args() + + out_dir = Path(args.outdir) + with open(Path(topsrcdir) / args.manifest) as f: + selected = yaml.safe_load(f.read()) + with TemporaryDirectory(prefix="get_vs", dir=".") as tmpdir: + tmpdir = Path(tmpdir) + dl_cache = tmpdir / "cache" + downloadPackages(selected, dl_cache) + unpacked = tmpdir / "unpack" + extractPackages(selected, dl_cache, unpacked) + vfs = {} + # Fill the output directory with all the paths in lowercase form for + # cross-compiles. + for subpath in ("VC", "Windows Kits/10", "DIA SDK"): + dest = subpath + # When running on Windows, SDK files are extracted under Windows Kits, + # but on other platforms, they end up in Program Files/Windows Kits. + program_files_subpath = unpacked / "Program Files" / subpath + if program_files_subpath.exists(): + subpath = program_files_subpath + else: + subpath = unpacked / subpath + dest = Path(dest) + for root, dirs, files in os.walk(subpath): + relpath = Path(root).relative_to(subpath) + for f in files: + path = Path(root) / f + mode = os.stat(path).st_mode + with open(path, "rb") as fh: + lower_f = f.lower() + # Ideally, we'd use the overlay for .libs too but as of + # writing it's still impractical to use, so lowercase + # them for now, that'll be enough. + if lower_f.endswith(".lib"): + f = lower_f + name = str(dest / relpath / f) + # Set executable flag on .exe files, the Firefox build + # system wants it. + if lower_f.endswith(".exe"): + mode |= (mode & 0o444) >> 2 + print("Adding", name) + out_file = out_dir / name + out_file.parent.mkdir(parents=True, exist_ok=True) + with out_file.open("wb") as out_fh: + shutil.copyfileobj(fh, out_fh) + os.chmod(out_file, mode) + if lower_f.endswith((".h", ".idl")): + vfs.setdefault(str(dest / relpath), []).append(f) + # Create an overlay file for use with clang's -ivfsoverlay flag. + overlay = { + "version": 0, + "case-sensitive": False, + "root-relative": "overlay-dir", + "overlay-relative": True, + "roots": [ + { + "name": p, + "type": "directory", + "contents": [ + { + "name": f, + "type": "file", + "external-contents": f"{p}/{f}", + } + for f in files + ], + } + for p, files in vfs.items() + ], + } + overlay_yaml = out_dir / "overlay.yaml" + with overlay_yaml.open("w") as fh: + fh.write(yaml.dump(overlay)) diff --git a/taskcluster/scripts/misc/mingw-composition.patch b/taskcluster/scripts/misc/mingw-composition.patch new file mode 100644 index 0000000000..40edf921d8 --- /dev/null +++ b/taskcluster/scripts/misc/mingw-composition.patch @@ -0,0 +1,50 @@ +diff --git a/mingw-w64-headers/include/windows.ui.composition.h b/mingw-w64-headers/include/windows.ui.composition.h +index 9dac0f1..58872d5 100644 +--- a/mingw-w64-headers/include/windows.ui.composition.h ++++ b/mingw-w64-headers/include/windows.ui.composition.h +@@ -4916,13 +4916,13 @@ namespace ABI { + ICompositionDrawingSurface : public IInspectable + { + virtual HRESULT STDMETHODCALLTYPE get_AlphaMode( +- enum DirectXAlphaMode *value) = 0; ++ ABI::Windows::Graphics::DirectX::DirectXAlphaMode *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_PixelFormat( +- enum DirectXPixelFormat *value) = 0; ++ ABI::Windows::Graphics::DirectX::DirectXPixelFormat *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Size( +- struct Size *value) = 0; ++ ABI::Windows::Foundation::Size *value) = 0; + + }; + } +@@ -5704,8 +5704,8 @@ namespace ABI { + { + virtual HRESULT STDMETHODCALLTYPE CreateDrawingSurface( + struct Size pixels, +- enum DirectXPixelFormat format, +- enum DirectXAlphaMode mode, ++ ABI::Windows::Graphics::DirectX::DirectXPixelFormat format, ++ ABI::Windows::Graphics::DirectX::DirectXAlphaMode mode, + ABI::Windows::UI::Composition::ICompositionDrawingSurface **result) = 0; + + virtual HRESULT STDMETHODCALLTYPE add_RenderingDeviceReplaced( +@@ -9338,7 +9338,7 @@ namespace ABI { + boolean value) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Offset( +- struct Vector3 *value) = 0; ++ ABI::Windows::Foundation::Numerics::Vector3 *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Offset( + struct Vector3 value) = 0; +@@ -9383,7 +9383,7 @@ namespace ABI { + struct Vector3 value) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Size( +- struct Vector2 *value) = 0; ++ ABI::Windows::Foundation::Numerics::Vector2 *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Size( + struct Vector2 value) = 0; diff --git a/taskcluster/scripts/misc/mingw-dispatchqueue.patch b/taskcluster/scripts/misc/mingw-dispatchqueue.patch new file mode 100644 index 0000000000..70fd9be819 --- /dev/null +++ b/taskcluster/scripts/misc/mingw-dispatchqueue.patch @@ -0,0 +1,157 @@ +From 6e031273d1763ef1fd7acc11a6ed6c2a819c91ba Mon Sep 17 00:00:00 2001 +From: Tom Ritter +Date: Thu, 2 Feb 2023 15:51:46 -0500 +Subject: [PATCH 6/6] Add back IDispatcherQueueController + +--- + mingw-w64-headers/include/windows.system.h | 127 +++++++++++++++++++++ + 1 file changed, 127 insertions(+) + +diff --git a/mingw-w64-headers/include/windows.system.h b/mingw-w64-headers/include/windows.system.h +index 688361148..1bb159a31 100644 +--- a/mingw-w64-headers/include/windows.system.h ++++ b/mingw-w64-headers/include/windows.system.h +@@ -41,6 +41,22 @@ namespace ABI { + #endif /* __cplusplus */ + #endif + ++#ifndef ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_FWD_DEFINED__ ++#define ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_FWD_DEFINED__ ++typedef interface __x_ABI_CWindows_CSystem_CIDispatcherQueueController __x_ABI_CWindows_CSystem_CIDispatcherQueueController; ++#ifdef __cplusplus ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController ABI::Windows::System::IDispatcherQueueController ++namespace ABI { ++ namespace Windows { ++ namespace System { ++ interface IDispatcherQueueController; ++ } ++ } ++} ++#endif /* __cplusplus */ ++#endif ++ ++ + #ifndef ____x_ABI_CWindows_CSystem_CUser_FWD_DEFINED__ + #define ____x_ABI_CWindows_CSystem_CUser_FWD_DEFINED__ + #ifdef __cplusplus +@@ -269,6 +285,117 @@ static __WIDL_INLINE HRESULT __x_ABI_CWindows_CSystem_CIUserChangedEventArgs_get + #endif /* ____x_ABI_CWindows_CSystem_CIUserChangedEventArgs_INTERFACE_DEFINED__ */ + #endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */ + ++/***************************************************************************** ++ * IDispatcherQueueController interface ++ */ ++#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000 ++#ifndef ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__ ++#define ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID___x_ABI_CWindows_CSystem_CIDispatcherQueueController, 0x22f34e66, 0x50db, 0x4e36, 0xa9,0x8d, 0x61,0xc0,0x1b,0x38,0x4d,0x20); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++} /* extern "C" */ ++namespace ABI { ++ namespace Windows { ++ namespace System { ++ MIDL_INTERFACE("22f34e66-50db-4e36-a98d-61c01b384d20") ++ IDispatcherQueueController : public IInspectable ++ { ++ }; ++ } ++ } ++} ++extern "C" { ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(__x_ABI_CWindows_CSystem_CIDispatcherQueueController, 0x22f34e66, 0x50db, 0x4e36, 0xa9,0x8d, 0x61,0xc0,0x1b,0x38,0x4d,0x20) ++#endif ++#else ++typedef struct __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This); ++ ++ /*** IInspectable methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetIids)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This, ++ ULONG *iidCount, ++ IID **iids); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This, ++ HSTRING *className); ++ ++ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)( ++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This, ++ TrustLevel *trustLevel); ++ ++ END_INTERFACE ++} __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl; ++ ++interface __x_ABI_CWindows_CSystem_CIDispatcherQueueController { ++ CONST_VTBL __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release(This) (This)->lpVtbl->Release(This) ++/*** IInspectable methods ***/ ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids) ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className) ++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IInspectable methods ***/ ++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,ULONG *iidCount,IID **iids) { ++ return This->lpVtbl->GetIids(This,iidCount,iids); ++} ++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,HSTRING *className) { ++ return This->lpVtbl->GetRuntimeClassName(This,className); ++} ++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,TrustLevel *trustLevel) { ++ return This->lpVtbl->GetTrustLevel(This,trustLevel); ++} ++#endif ++#ifdef WIDL_using_Windows_System ++#define IID_IDispatcherQueueController IID___x_ABI_CWindows_CSystem_CIDispatcherQueueController ++#define IDispatcherQueueControllerVtbl __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl ++#define IDispatcherQueueController __x_ABI_CWindows_CSystem_CIDispatcherQueueController ++#define IDispatcherQueueController_QueryInterface __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface ++#define IDispatcherQueueController_AddRef __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef ++#define IDispatcherQueueController_Release __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release ++#define IDispatcherQueueController_GetIids __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids ++#define IDispatcherQueueController_GetRuntimeClassName __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName ++#define IDispatcherQueueController_GetTrustLevel __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel ++#endif /* WIDL_using_Windows_System */ ++#endif ++ ++#endif ++ ++#endif /* ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__ */ ++#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000 */ ++ + /* + * Class Windows.System.User + */ +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/mingw-dwrite_3.patch b/taskcluster/scripts/misc/mingw-dwrite_3.patch new file mode 100644 index 0000000000..25c7b89eea --- /dev/null +++ b/taskcluster/scripts/misc/mingw-dwrite_3.patch @@ -0,0 +1,87 @@ +From a9804765e442063be37338933b9c40e3e3d01aac Mon Sep 17 00:00:00 2001 +From: Sanketh Menda +Date: Thu, 2 Feb 2023 12:29:03 -0500 +Subject: [PATCH 4/7] dwrite_3.h: rename GetGlyphImageFormats_ to + GetGlyphImageFormats + +Wine's WIDL currently doesn't support overloading functions, so till +that is fixed patch dwrite_3.h to rename GlyphImageFormats_ to +GetGlyphImageFormats. +--- + mingw-w64-headers/include/dwrite_3.h | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/mingw-w64-headers/include/dwrite_3.h b/mingw-w64-headers/include/dwrite_3.h +index 205c47f04..352731bf1 100644 +--- a/mingw-w64-headers/include/dwrite_3.h ++++ b/mingw-w64-headers/include/dwrite_3.h +@@ -8181,7 +8181,7 @@ DEFINE_GUID(IID_IDWriteFontFace4, 0x27f2a904, 0x4eb8, 0x441d, 0x96,0x78, 0x05,0x + MIDL_INTERFACE("27f2a904-4eb8-441d-9678-0563f53e3e2f") + IDWriteFontFace4 : public IDWriteFontFace3 + { +- virtual HRESULT STDMETHODCALLTYPE GetGlyphImageFormats_( ++ virtual HRESULT STDMETHODCALLTYPE GetGlyphImageFormats( + UINT16 glyph, + UINT32 ppem_first, + UINT32 ppem_last, +@@ -8481,7 +8481,7 @@ typedef struct IDWriteFontFace4Vtbl { + WINBOOL *are_local); + + /*** IDWriteFontFace4 methods ***/ +- HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)( ++ HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats)( + IDWriteFontFace4 *This, + UINT16 glyph, + UINT32 ppem_first, +@@ -8562,7 +8562,7 @@ interface IDWriteFontFace4 { + #define IDWriteFontFace4_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) + #define IDWriteFontFace4_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) + /*** IDWriteFontFace4 methods ***/ +-#define IDWriteFontFace4_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) ++#define IDWriteFontFace4_GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) + #define IDWriteFontFace4_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This) + #define IDWriteFontFace4_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context) + #define IDWriteFontFace4_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context) +@@ -8705,8 +8705,8 @@ static __WIDL_INLINE HRESULT IDWriteFontFace4_AreGlyphsLocal(IDWriteFontFace4* T + return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local); + } + /*** IDWriteFontFace4 methods ***/ +-static __WIDL_INLINE HRESULT IDWriteFontFace4_GetGlyphImageFormats_(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) { +- return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats); ++static __WIDL_INLINE HRESULT IDWriteFontFace4_GetGlyphImageFormats(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) { ++ return This->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats); + } + static __WIDL_INLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace4_GetGlyphImageFormats(IDWriteFontFace4* This) { + return This->lpVtbl->GetGlyphImageFormats(This); +@@ -9033,7 +9033,7 @@ typedef struct IDWriteFontFace5Vtbl { + WINBOOL *are_local); + + /*** IDWriteFontFace4 methods ***/ +- HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)( ++ HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats)( + IDWriteFontFace5 *This, + UINT16 glyph, + UINT32 ppem_first, +@@ -9134,7 +9134,7 @@ interface IDWriteFontFace5 { + #define IDWriteFontFace5_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) + #define IDWriteFontFace5_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) + /*** IDWriteFontFace4 methods ***/ +-#define IDWriteFontFace5_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) ++#define IDWriteFontFace5_GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) + #define IDWriteFontFace5_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This) + #define IDWriteFontFace5_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context) + #define IDWriteFontFace5_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context) +@@ -9283,8 +9283,8 @@ static __WIDL_INLINE HRESULT IDWriteFontFace5_AreGlyphsLocal(IDWriteFontFace5* T + return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local); + } + /*** IDWriteFontFace4 methods ***/ +-static __WIDL_INLINE HRESULT IDWriteFontFace5_GetGlyphImageFormats_(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) { +- return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats); ++static __WIDL_INLINE HRESULT IDWriteFontFace5_GetGlyphImageFormats(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) { ++ return This->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats); + } + static __WIDL_INLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace5_GetGlyphImageFormats(IDWriteFontFace5* This) { + return This->lpVtbl->GetGlyphImageFormats(This); +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/mingw-enum.patch b/taskcluster/scripts/misc/mingw-enum.patch new file mode 100644 index 0000000000..de12434ee3 --- /dev/null +++ b/taskcluster/scripts/misc/mingw-enum.patch @@ -0,0 +1,25 @@ +From b415d3e199de9cb2dce6290721bcfc2871f33769 Mon Sep 17 00:00:00 2001 +From: Tom Ritter +Date: Thu, 2 Feb 2023 12:26:47 -0500 +Subject: [PATCH 3/7] Fix enum int issues + +--- + mingw-w64-headers/include/windows.foundation.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mingw-w64-headers/include/windows.foundation.h b/mingw-w64-headers/include/windows.foundation.h +index fd66e27d3..7981f3380 100644 +--- a/mingw-w64-headers/include/windows.foundation.h ++++ b/mingw-w64-headers/include/windows.foundation.h +@@ -647,7 +647,7 @@ static __WIDL_INLINE HRESULT __x_ABI_CWindows_CFoundation_CIAsyncActionCompleted + namespace ABI { + namespace Windows { + namespace Foundation { +- enum PropertyType { ++ enum PropertyType : int { + PropertyType_Empty = 0, + PropertyType_UInt8 = 1, + PropertyType_Int16 = 2, +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/mingw-ts_sd.patch b/taskcluster/scripts/misc/mingw-ts_sd.patch new file mode 100644 index 0000000000..c76f5f1dab --- /dev/null +++ b/taskcluster/scripts/misc/mingw-ts_sd.patch @@ -0,0 +1,33 @@ +From 8e23d493352ada53b3a766f14e2e93484353c15c Mon Sep 17 00:00:00 2001 +From: Tom Ritter +Date: Wed, 8 Feb 2023 10:52:16 -0500 +Subject: [PATCH 11/11] TS_SD_ defines + +--- + mingw-w64-headers/include/textstor.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/mingw-w64-headers/include/textstor.h b/mingw-w64-headers/include/textstor.h +index 0681cab92..64b5ebec5 100644 +--- a/mingw-w64-headers/include/textstor.h ++++ b/mingw-w64-headers/include/textstor.h +@@ -68,6 +68,16 @@ extern "C" { + + #define TS_SD_LOADING (0x2) + ++#define TS_SD_RESERVED (0x4) ++ ++#define TS_SD_TKBAUTOCORRECTENABLE (0x8) ++ ++#define TS_SD_TKBPREDICTIONENABLE (0x10) ++ ++#define TS_SD_UIINTEGRATIONENABLE (0x20) ++ ++#define TS_SD_INPUTPANEMANUALDISPLAYENABLE (0x40) ++ + #define TS_SS_DISJOINTSEL (0x1) + + #define TS_SS_REGIONS (0x2) +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/mingw-unknown.patch b/taskcluster/scripts/misc/mingw-unknown.patch new file mode 100644 index 0000000000..2e29e60106 --- /dev/null +++ b/taskcluster/scripts/misc/mingw-unknown.patch @@ -0,0 +1,46 @@ +From 753c3ad7018936ef9a9d2af8b75efbfa14c149b7 Mon Sep 17 00:00:00 2001 +From: Tom Ritter +Date: Thu, 2 Feb 2023 12:26:22 -0500 +Subject: [PATCH 2/7] Add back the IUnknown_QI functions + +--- + mingw-w64-headers/include/unknwn.h | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/mingw-w64-headers/include/unknwn.h b/mingw-w64-headers/include/unknwn.h +index f3ada04a2..f33e8f270 100644 +--- a/mingw-w64-headers/include/unknwn.h ++++ b/mingw-w64-headers/include/unknwn.h +@@ -169,6 +169,29 @@ static __WIDL_INLINE ULONG IUnknown_Release(IUnknown* This) { + + #endif + ++HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy( ++ IUnknown* This, ++ REFIID riid, ++ void **ppvObject); ++void __RPC_STUB IUnknown_QueryInterface_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy( ++ IUnknown* This); ++void __RPC_STUB IUnknown_AddRef_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy( ++ IUnknown* This); ++void __RPC_STUB IUnknown_Release_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); + + #endif /* __IUnknown_INTERFACE_DEFINED__ */ + +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/mingw-widl.patch b/taskcluster/scripts/misc/mingw-widl.patch new file mode 100644 index 0000000000..225a908ad7 --- /dev/null +++ b/taskcluster/scripts/misc/mingw-widl.patch @@ -0,0 +1,35 @@ +From 534ecbfb4da9a27c287a9a44ea18ef44ccf2aac2 Mon Sep 17 00:00:00 2001 +From: Tom Ritter +Date: Thu, 2 Feb 2023 13:28:39 -0500 +Subject: [PATCH 5/7] Fix widl + +In commit c94f44f9b455 (in wine's repo) open_typelib was changed +from returning a file descriptor (null on error) to aborting if +an error was encountered. + +This is incorrect, because read_importlib in typelib.c has a +fallback behavior where it calls open_typelib again if it +fails the first time. And _then_ it will error if it couldn't do +it either time. + +Restore the original behavior for open_typelib +--- + mingw-w64-tools/widl/src/widl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c +index 986aa3624..39bc8ac21 100644 +--- a/mingw-w64-tools/widl/src/widl.c ++++ b/mingw-w64-tools/widl/src/widl.c +@@ -710,7 +710,7 @@ int open_typelib( const char *name ) + TRYOPEN( strmake( "%s%s/%s", default_dirs[i], pe_dir, name )); + } + } +- error( "cannot find %s\n", name ); ++ return -1; + #undef TRYOPEN + } + +-- +2.25.1 + diff --git a/taskcluster/scripts/misc/moz.build b/taskcluster/scripts/misc/moz.build new file mode 100644 index 0000000000..3b5b0e1e58 --- /dev/null +++ b/taskcluster/scripts/misc/moz.build @@ -0,0 +1,8 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +with Files("verify-updatebot.py"): + BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot") diff --git a/taskcluster/scripts/misc/osx-cross-linker b/taskcluster/scripts/misc/osx-cross-linker new file mode 100755 index 0000000000..1e685db5fb --- /dev/null +++ b/taskcluster/scripts/misc/osx-cross-linker @@ -0,0 +1,8 @@ +#!/bin/sh + +exec $MOZ_FETCHES_DIR/clang/bin/clang -v \ + -fuse-ld=lld \ + -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET:-10.12} \ + -target $TARGET \ + -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk \ + "$@" diff --git a/taskcluster/scripts/misc/pack-cpython.sh b/taskcluster/scripts/misc/pack-cpython.sh new file mode 100755 index 0000000000..71a11adb07 --- /dev/null +++ b/taskcluster/scripts/misc/pack-cpython.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -x -e -v + +# This script is for extracting python bianry for windows from setup file. + +ARTIFACT_NAME=win64-cpython.tar.zst +PYTHON_INSTALLER=`echo $MOZ_FETCHES_DIR/python-3.*-amd64.exe` +WINE=$MOZ_FETCHES_DIR/wine/bin/wine + +cabextract $PYTHON_INSTALLER + +tardir=python +mkdir $tardir +pushd $tardir +msiextract ../* +rm api-ms-win-* + +# bundle pip +$WINE python.exe -m ensurepip +$WINE python.exe -m pip install --upgrade pip==23.0 +$WINE python.exe -m pip install --only-binary ':all:' -r ${GECKO_PATH}/build/psutil_requirements.txt -r ${GECKO_PATH}/build/zstandard_requirements.txt + +# extra symlinks to have a consistent install with Linux and OSX +ln -s python.exe python3.exe +chmod u+x python3.exe + +ln -s ./Scripts/pip3.exe pip3.exe +chmod u+x pip3.exe + + +popd + +tar caf `basename ${TOOLCHAIN_ARTIFACT}` ${tardir} + +mkdir -p $UPLOAD_DIR +mv `basename ${TOOLCHAIN_ARTIFACT}` $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/pack.sh b/taskcluster/scripts/misc/pack.sh new file mode 100755 index 0000000000..f19feb5053 --- /dev/null +++ b/taskcluster/scripts/misc/pack.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -x +set -e +set -o pipefail + +[ -z "$1" ] && echo Missing argument && exit 1 + +dir=$(dirname "$1") +name=$(basename "$1") + +case "$(uname -s)" in +Darwin) + TAR_FLAGS=--no-fflags + ;; +*) + TAR_FLAGS= + ;; +esac + +(cd "$dir"; find "$name"/* -not -type d -print0 | tar $TAR_FLAGS -cvf - --null -T -) | python3 $GECKO_PATH/taskcluster/scripts/misc/zstdpy > "$name.tar.zst" + +mkdir -p "$UPLOAD_DIR" +mv "$name.tar.zst" "$UPLOAD_DIR" diff --git a/taskcluster/scripts/misc/private_local_toolchain.sh b/taskcluster/scripts/misc/private_local_toolchain.sh new file mode 100755 index 0000000000..df255a8576 --- /dev/null +++ b/taskcluster/scripts/misc/private_local_toolchain.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -x +set -e +set -o pipefail + +script=$1 +shift +artifact=$(basename $TOOLCHAIN_ARTIFACT) +dir=${artifact%.tar.*} + +$GECKO_PATH/mach python --virtualenv build $(dirname $0)/$script "$@" $dir + +$(dirname $0)/pack.sh $dir diff --git a/taskcluster/scripts/misc/repack-android-avd-linux.sh b/taskcluster/scripts/misc/repack-android-avd-linux.sh new file mode 100755 index 0000000000..f36fda905d --- /dev/null +++ b/taskcluster/scripts/misc/repack-android-avd-linux.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -x -e -v + +# Initialize XVFB for the AVD +. /builds/worker/scripts/xvfb.sh + +cleanup() { + local rv=$? + cleanup_xvfb + exit $rv +} +trap cleanup EXIT INT + +start_xvfb '1024x768x24' 2 + +# This script is for fetching and repacking the Android SDK (for +# Linux), the tools required to produce Android packages. + +UPLOAD_DIR=/builds/worker/artifacts/ +AVD_JSON_CONFIG="$1" + +mkdir -p $HOME/artifacts $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/android-device +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --artifact-mode --prewarm-avd --avd-manifest="$AVD_JSON_CONFIG" --no-interactive --list-packages + +tar cavf $UPLOAD_DIR/android-avd-linux.tar.zst -C /builds/worker/.mozbuild android-device + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-android-emulator-linux.sh b/taskcluster/scripts/misc/repack-android-emulator-linux.sh new file mode 100755 index 0000000000..be6a61640d --- /dev/null +++ b/taskcluster/scripts/misc/repack-android-emulator-linux.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -x -e -v + +# This script is for fetching and repacking the Android emulator (for +# Linux), the tools required to produce Android packages. + +mkdir -p $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/android-emulator-linux. +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --emulator-only --no-interactive --list-packages + +# Remove extra files we don't need +rm -rfv /builds/worker/.mozbuild/android-sdk-linux/tools +mkdir /builds/worker/.mozbuild/android-sdk-linux/system-images +mkdir /builds/worker/.mozbuild/android-sdk-linux/platforms +find /builds/worker/.mozbuild/android-sdk-linux/emulator/qemu -type f -not -name "*x86*" -print -delete + +tar cavf $UPLOAD_DIR/android-emulator-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux bundletool.jar + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-android-ndk-linux.sh b/taskcluster/scripts/misc/repack-android-ndk-linux.sh new file mode 100755 index 0000000000..f48b60c3e1 --- /dev/null +++ b/taskcluster/scripts/misc/repack-android-ndk-linux.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -x -e -v + +# This script is for fetching and repacking the Android NDK (for +# Linux), the tools required to produce native Android programs. + +mkdir -p $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/android-ndk-$VER. +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --ndk-only --no-interactive + +# Don't generate a tarball with a versioned NDK directory. +mv $HOME/.mozbuild/android-ndk-* $HOME/.mozbuild/android-ndk +tar cavf $UPLOAD_DIR/android-ndk.tar.zst -C /builds/worker/.mozbuild android-ndk + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-android-sdk-linux.sh b/taskcluster/scripts/misc/repack-android-sdk-linux.sh new file mode 100755 index 0000000000..ee2b068701 --- /dev/null +++ b/taskcluster/scripts/misc/repack-android-sdk-linux.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -x -e -v + +# This script is for fetching and repacking the Android SDK (for +# Linux), the tools required to produce Android packages. + +mkdir -p $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/android-sdk-linux. +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --artifact-mode --no-interactive --list-packages + +tar cavf $UPLOAD_DIR/android-sdk-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux bundletool.jar + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-android-system-images-linux.sh b/taskcluster/scripts/misc/repack-android-system-images-linux.sh new file mode 100755 index 0000000000..395061ba9e --- /dev/null +++ b/taskcluster/scripts/misc/repack-android-system-images-linux.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -x -e -v + +# This script is for fetching and repacking the Android SDK (for +# Linux), the tools required to produce Android packages. + +AVD_JSON_CONFIG="$1" + +mkdir -p $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/android-sdk-linux. +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --artifact-mode --system-images-only --avd-manifest="$AVD_JSON_CONFIG" --no-interactive --list-packages + +tar cavf $UPLOAD_DIR/android-system-images-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux/system-images + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-clang.sh b/taskcluster/scripts/misc/repack-clang.sh new file mode 100755 index 0000000000..4a1b3ed01e --- /dev/null +++ b/taskcluster/scripts/misc/repack-clang.sh @@ -0,0 +1,52 @@ +#!/bin/bash +set -x -e -v + +shopt -s nullglob + +# This script is for repacking clang for cross targets on a Linux host. + +cd $MOZ_FETCHES_DIR + +# We have a clang toolchain in $MOZ_FETCHES_DIR/clang +# We have some compiler-rts in $MOZ_FETCHES_DIR/compiler-rt* +# We have some libunwinds in $MOZ_FETCHES_DIR/libunwind* +# We copy everything from the compiler-rts into clang/lib/clang/$version/ +# and everything from the libunwinds into clang/ +clang_ver_dir=$(echo clang/lib/clang/*/include) +clang_ver_dir=${clang_ver_dir%/include} +[ -n "$clang_ver_dir" ] && for c in compiler-rt* libunwind*; do + case $c in + compiler-rt*) + clang_dir=$clang_ver_dir + ;; + libunwind*) + clang_dir=clang + ;; + esac + find $c -mindepth 1 -type d | while read d; do + mkdir -p "$clang_dir/${d#$c/}" + find $d -mindepth 1 -maxdepth 1 -not -type d | while read f; do + target_file="$clang_dir/${f#$c/}" + case $d in + compiler-rt-*/lib/darwin) + if [ -f "$target_file" ]; then + # Unify overlapping files for darwin/ + $MOZ_FETCHES_DIR/cctools/bin/lipo -create "$f" "$target_file" -output "$target_file.new" + mv "$target_file.new" "$target_file" + continue + fi + ;; + esac + if [ -f "$target_file" ] && ! diff -q "$f" "$target_file" 2>/dev/null; then + echo "Cannot copy $f because it is already in ${target_file%/*}" >&2 && exit 1 + fi + cp "$f" "$target_file" + done + done +done + +if [ -n "$UPLOAD_DIR" ]; then + tar caf clang.tar.zst clang + mkdir -p $UPLOAD_DIR + mv clang.tar.zst $UPLOAD_DIR +fi diff --git a/taskcluster/scripts/misc/repack-jdk-linux.sh b/taskcluster/scripts/misc/repack-jdk-linux.sh new file mode 100755 index 0000000000..2d13e360e5 --- /dev/null +++ b/taskcluster/scripts/misc/repack-jdk-linux.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -x -e -v + +# This script is for fetching and repacking the OpenJDK (for +# Linux) + +AVD_JSON_CONFIG="$1" + +mkdir -p $UPLOAD_DIR + +# Populate /builds/worker/.mozbuild/jdk +cd $GECKO_PATH +./mach python python/mozboot/mozboot/android.py --jdk-only + +tar cavf $UPLOAD_DIR/jdk-linux.tar.zst -C /builds/worker/.mozbuild jdk + +ls -al $UPLOAD_DIR diff --git a/taskcluster/scripts/misc/repack-node.sh b/taskcluster/scripts/misc/repack-node.sh new file mode 100755 index 0000000000..d3880e4799 --- /dev/null +++ b/taskcluster/scripts/misc/repack-node.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -x -e -v + +# This script is for repacking Node (and NPM) from nodejs.org. + +mkdir -p "$UPLOAD_DIR" + +cd "$MOZ_FETCHES_DIR" + +# npx doesn't have great security characteristics (it downloads and executes +# stuff directly out of npm at runtime), so let's not risk it getting into +# anyone's PATH who doesn't already have it there: +rm -f node/bin/npx node/bin/npx.exe +tar caf "$UPLOAD_DIR"/node.tar.zst node diff --git a/taskcluster/scripts/misc/repack_rust.py b/taskcluster/scripts/misc/repack_rust.py new file mode 100755 index 0000000000..909ff379dc --- /dev/null +++ b/taskcluster/scripts/misc/repack_rust.py @@ -0,0 +1,647 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +This script downloads and repacks official rust language builds +with the necessary tool and target support for the Firefox +build environment. +""" + +import argparse +import errno +import hashlib +import os +import shutil +import subprocess +import tarfile +import textwrap +from contextlib import contextmanager + +import requests +import toml +import zstandard + + +def log(msg): + print("repack: %s" % msg, flush=True) + + +def fetch_file(url): + """Download a file from the given url if it's not already present. + + Returns the SHA-2 256-bit hash of the received file.""" + filename = os.path.basename(url) + sha = hashlib.sha256() + size = 4096 + if os.path.exists(filename): + with open(filename, "rb") as fd: + while True: + block = fd.read(size) + if not block: + return sha.hexdigest() + sha.update(block) + log("Could not calculate checksum!") + return None + r = requests.get(url, stream=True) + r.raise_for_status() + with open(filename, "wb") as fd: + for chunk in r.iter_content(size): + fd.write(chunk) + sha.update(chunk) + return sha.hexdigest() + + +def check_call_with_input(cmd, input_data): + """Invoke a command, passing the input String over stdin. + + This is like subprocess.check_call, but allows piping + input to interactive commands.""" + p = subprocess.Popen(cmd, stdin=subprocess.PIPE) + p.communicate(input_data) + if p.wait(): + raise subprocess.CalledProcessError(p.returncode, cmd) + + +def setup_gpg(): + """Add the signing key to the current gpg config. + + Import a hard-coded copy of the release signing public key + and mark it trusted in the gpg database so subsequent + signature checks can succeed or fail cleanly.""" + keyid = "0x85AB96E6FA1BE5FE" + log("Importing signing key %s..." % keyid) + key = b""" +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFJEwMkBEADlPACa2K7reD4x5zd8afKx75QYKmxqZwywRbgeICeD4bKiQoJZ +dUjmn1LgrGaXuBMKXJQhyA34e/1YZel/8et+HPE5XpljBfNYXWbVocE1UMUTnFU9 +CKXa4AhJ33f7we2/QmNRMUifw5adPwGMg4D8cDKXk02NdnqQlmFByv0vSaArR5kn +gZKnLY6o0zZ9Buyy761Im/ShXqv4ATUgYiFc48z33G4j+BDmn0ryGr1aFdP58tHp +gjWtLZs0iWeFNRDYDje6ODyu/MjOyuAWb2pYDH47Xu7XedMZzenH2TLM9yt/hyOV +xReDPhvoGkaO8xqHioJMoPQi1gBjuBeewmFyTSPS4deASukhCFOcTsw/enzJagiS +ZAq6Imehduke+peAL1z4PuRmzDPO2LPhVS7CDXtuKAYqUV2YakTq8MZUempVhw5n +LqVaJ5/XiyOcv405PnkT25eIVVVghxAgyz6bOU/UMjGQYlkUxI7YZ9tdreLlFyPR +OUL30E8q/aCd4PGJV24yJ1uit+yS8xjyUiMKm4J7oMP2XdBN98TUfLGw7SKeAxyU +92BHlxg7yyPfI4TglsCzoSgEIV6xoGOVRRCYlGzSjUfz0bCMCclhTQRBkegKcjB3 +sMTyG3SPZbjTlCqrFHy13e6hGl37Nhs8/MvXUysq2cluEISn5bivTKEeeQARAQAB +tERSdXN0IExhbmd1YWdlIChUYWcgYW5kIFJlbGVhc2UgU2lnbmluZyBLZXkpIDxy +dXN0LWtleUBydXN0LWxhbmcub3JnPokCOAQTAQIAIgUCUkTAyQIbAwYLCQgHAwIG +FQgCCQoLBBYCAwECHgECF4AACgkQhauW5vob5f5fYQ//b1DWK1NSGx5nZ3zYZeHJ +9mwGCftIaA2IRghAGrNf4Y8DaPqR+w1OdIegWn8kCoGfPfGAVW5XXJg+Oxk6QIaD +2hJojBUrq1DALeCZVewzTVw6BN4DGuUexsc53a8DcY2Yk5WE3ll6UKq/YPiWiPNX +9r8FE2MJwMABB6mWZLqJeg4RCrriBiCG26NZxGE7RTtPHyppoVxWKAFDiWyNdJ+3 +UnjldWrT9xFqjqfXWw9Bhz8/EoaGeSSbMIAQDkQQpp1SWpljpgqvctZlc5fHhsG6 +lmzW5RM4NG8OKvq3UrBihvgzwrIfoEDKpXbk3DXqaSs1o81NH5ftVWWbJp/ywM9Q +uMC6n0YWiMZMQ1cFBy7tukpMkd+VPbPkiSwBhPkfZIzUAWd74nanN5SKBtcnymgJ ++OJcxfZLiUkXRj0aUT1GLA9/7wnikhJI+RvwRfHBgrssXBKNPOfXGWajtIAmZc2t +kR1E8zjBVLId7r5M8g52HKk+J+y5fVgJY91nxG0zf782JjtYuz9+knQd55JLFJCO +hhbv3uRvhvkqgauHagR5X9vCMtcvqDseK7LXrRaOdOUDrK/Zg/abi5d+NIyZfEt/ +ObFsv3idAIe/zpU6xa1nYNe3+Ixlb6mlZm3WCWGxWe+GvNW/kq36jZ/v/8pYMyVO +p/kJqnf9y4dbufuYBg+RLqC5Ag0EUkTAyQEQANxy2tTSeRspfrpBk9+ju+KZ3zc4 +umaIsEa5DxJ2zIKHywVAR67Um0K1YRG07/F5+tD9TIRkdx2pcmpjmSQzqdk3zqa9 +2Zzeijjz2RNyBY8qYmyE08IncjTsFFB8OnvdXcsAgjCFmI1BKnePxrABL/2k8X18 +aysPb0beWqQVsi5FsSpAHu6k1kaLKc+130x6Hf/YJAjeo+S7HeU5NeOz3zD+h5bA +Q25qMiVHX3FwH7rFKZtFFog9Ogjzi0TkDKKxoeFKyADfIdteJWFjOlCI9KoIhfXq +Et9JMnxApGqsJElJtfQjIdhMN4Lnep2WkudHAfwJ/412fe7wiW0rcBMvr/BlBGRY +vM4sTgN058EwIuY9Qmc8RK4gbBf6GsfGNJjWozJ5XmXElmkQCAvbQFoAfi5TGfVb +77QQrhrQlSpfIYrvfpvjYoqj618SbU6uBhzh758gLllmMB8LOhxWtq9eyn1rMWyR +KL1fEkfvvMc78zP+Px6yDMa6UIez8jZXQ87Zou9EriLbzF4QfIYAqR9LUSMnLk6K +o61tSFmFEDobC3tc1jkSg4zZe/wxskn96KOlmnxgMGO0vJ7ASrynoxEnQE8k3WwA ++/YJDwboIR7zDwTy3Jw3mn1FgnH+c7Rb9h9geOzxKYINBFz5Hd0MKx7kZ1U6WobW +KiYYxcCmoEeguSPHABEBAAGJAh8EGAECAAkFAlJEwMkCGwwACgkQhauW5vob5f7f +FA//Ra+itJF4NsEyyhx4xYDOPq4uj0VWVjLdabDvFjQtbBLwIyh2bm8uO3AY4r/r +rM5WWQ8oIXQ2vvXpAQO9g8iNlFez6OLzbfdSG80AG74pQqVVVyCQxD7FanB/KGge +tAoOstFxaCAg4nxFlarMctFqOOXCFkylWl504JVIOvgbbbyj6I7qCUmbmqazBSMU +K8c/Nz+FNu2Uf/lYWOeGogRSBgS0CVBcbmPUpnDHLxZWNXDWQOCxbhA1Uf58hcyu +036kkiWHh2OGgJqlo2WIraPXx1cGw1Ey+U6exbtrZfE5kM9pZzRG7ZY83CXpYWMp +kyVXNWmf9JcIWWBrXvJmMi0FDvtgg3Pt1tnoxqdilk6yhieFc8LqBn6CZgFUBk0t +NSaWk3PsN0N6Ut8VXY6sai7MJ0Gih1gE1xadWj2zfZ9sLGyt2jZ6wK++U881YeXA +ryaGKJ8sIs182hwQb4qN7eiUHzLtIh8oVBHo8Q4BJSat88E5/gOD6IQIpxc42iRL +T+oNZw1hdwNyPOT1GMkkn86l3o7klwmQUWCPm6vl1aHp3omo+GHC63PpNFO5RncJ +Ilo3aBKKmoE5lDSMGE8KFso5awTo9z9QnVPkRsk6qeBYit9xE3x3S+iwjcSg0nie +aAkc0N00nc9V9jfPvt4z/5A5vjHh+NhFwH5h2vBJVPdsz6m5Ag0EVI9keAEQAL3R +oVsHncJTmjHfBOV4JJsvCum4DuJDZ/rDdxauGcjMUWZaG338ZehnDqG1Yn/ys7zE +aKYUmqyT+XP+M2IAQRTyxwlU1RsDlemQfWrESfZQCCmbnFScL0E7cBzy4xvtInQe +UaFgJZ1BmxbzQrx+eBBdOTDv7RLnNVygRmMzmkDhxO1IGEu1+3ETIg/DxFE7VQY0 +It/Ywz+nHu1o4Hemc/GdKxu9hcYvcRVc/Xhueq/zcIM96l0m+CFbs0HMKCj8dgMe +Ng6pbbDjNM+cV+5BgpRdIpE2l9W7ImpbLihqcZt47J6oWt/RDRVoKOzRxjhULVyV +2VP9ESr48HnbvxcpvUAEDCQUhsGpur4EKHFJ9AmQ4zf91gWLrDc6QmlACn9o9ARU +fOV5aFsZI9ni1MJEInJTP37stz/uDECRie4LTL4O6P4Dkto8ROM2wzZq5CiRNfnT +PP7ARfxlCkpg+gpLYRlxGUvRn6EeYwDtiMQJUQPfpGHSvThUlgDEsDrpp4SQSmdA +CB+rvaRqCawWKoXs0In/9wylGorRUupeqGC0I0/rh+f5mayFvORzwy/4KK4QIEV9 +aYTXTvSRl35MevfXU1Cumlaqle6SDkLr3ZnFQgJBqap0Y+Nmmz2HfO/pohsbtHPX +92SN3dKqaoSBvzNGY5WT3CsqxDtik37kR3f9/DHpABEBAAGJBD4EGAECAAkFAlSP +ZHgCGwICKQkQhauW5vob5f7BXSAEGQECAAYFAlSPZHgACgkQXLSpNHs7CdwemA/+ +KFoGuFqU0uKT9qblN4ugRyil5itmTRVffl4tm5OoWkW8uDnu7Ue3vzdzy+9NV8X2 +wRG835qjXijWP++AGuxgW6LB9nV5OWiKMCHOWnUjJQ6pNQMAgSN69QzkFXVF/q5f +bkma9TgSbwjrVMyPzLSRwq7HsT3V02Qfr4cyq39QeILGy/NHW5z6LZnBy3BaVSd0 +lGjCEc3yfH5OaB79na4W86WCV5n4IT7cojFM+LdL6P46RgmEtWSG3/CDjnJl6BLR +WqatRNBWLIMKMpn+YvOOL9TwuP1xbqWr1vZ66wksm53NIDcWhptpp0KEuzbU0/Dt +OltBhcX8tOmO36LrSadX9rwckSETCVYklmpAHNxPml011YNDThtBidvsicw1vZwR +HsXn+txlL6RAIRN+J/Rw3uOiJAqN9Qgedpx2q+E15t8MiTg/FXtB9SysnskFT/BH +z0USNKJUY0btZBw3eXWzUnZf59D8VW1M/9JwznCHAx0c9wy/gRDiwt9w4RoXryJD +VAwZg8rwByjldoiThUJhkCYvJ0R3xH3kPnPlGXDW49E9R8C2umRC3cYOL4U9dOQ1 +5hSlYydF5urFGCLIvodtE9q80uhpyt8L/5jj9tbwZWv6JLnfBquZSnCGqFZRfXlb +Jphk9+CBQWwiZSRLZRzqQ4ffl4xyLuolx01PMaatkQbRaw/+JpgRNlurKQ0PsTrO +8tztO/tpBBj/huc2DGkSwEWvkfWElS5RLDKdoMVs/j5CLYUJzZVikUJRm7m7b+OA +P3W1nbDhuID+XV1CSBmGifQwpoPTys21stTIGLgznJrIfE5moFviOLqD/LrcYlsq +CQg0yleu7SjOs//8dM3mC2FyLaE/dCZ8l2DCLhHw0+ynyRAvSK6aGCmZz6jMjmYF +MXgiy7zESksMnVFMulIJJhR3eB0wx2GitibjY/ZhQ7tD3i0yy9ILR07dFz4pgkVM +afxpVR7fmrMZ0t+yENd+9qzyAZs0ksxORoc2ze90SCx2jwEX/3K+m4I0hP2H/w5W +gqdvuRLiqf+4BGW4zqWkLLlNIe/okt0r82SwHtDN0Ui1asmZTGj6sm8SXtwx+5cE +38MttWqjDiibQOSthRVcETByRYM8KcjYSUCi4PoBc3NpDONkFbZm6XofR/f5mTcl +2jDw6fIeVc4Hd1jBGajNzEqtneqqbdAkPQaLsuD2TMkQfTDJfE/IljwjrhDa9Mi+ +odtnMWq8vlwOZZ24/8/BNK5qXuCYL67O7AJB4ZQ6BT+g4z96iRLbupzu/XJyXkQF +rOY/Ghegvn7fDrnt2KC9MpgeFBXzUp+k5rzUdF8jbCx5apVjA1sWXB9Kh3L+DUwF +Mve696B5tlHyc1KxjHR6w9GRsh4= +=5FXw +-----END PGP PUBLIC KEY BLOCK----- +""" + check_call_with_input(["gpg", "--import"], key) + check_call_with_input( + ["gpg", "--command-fd", "0", "--edit-key", keyid], b"trust\n5\ny\n" + ) + + +def verify_sha(filename, sha): + """Verify that the checksum file matches the given sha digest.""" + sha_filename = filename + ".sha256" + with open(sha_filename) as f: + # Older sha256 files would contain `sha filename`, but more recent + # ones only contain `sha`. + checksum = f.readline().split()[0] + if checksum != sha: + raise ValueError("Checksum mismatch in %s" % filename) + return True + log("No checksum file for %s!" % filename) + return False + + +def fetch(url, validate=True): + """Download and verify a package url.""" + base = os.path.basename(url) + log("Fetching %s..." % base) + if validate: + fetch_file(url + ".asc") + fetch_file(url + ".sha256") + sha = fetch_file(url) + if validate: + log("Verifying %s..." % base) + verify_sha(base, sha) + subprocess.check_call( + ["gpg", "--keyid-format", "0xlong", "--verify", base + ".asc", base] + ) + return sha + + +def install(filename, target): + """Run a package's installer script against the given target directory.""" + log("Unpacking %s..." % filename) + subprocess.check_call(["tar", "xf", filename]) + basename = filename.split(".tar")[0] + log("Installing %s..." % basename) + install_cmd = [os.path.join(basename, "install.sh")] + install_cmd += ["--prefix=" + os.path.abspath(target)] + install_cmd += ["--disable-ldconfig"] + subprocess.check_call(install_cmd) + log("Cleaning %s..." % basename) + shutil.rmtree(basename) + + +def package(manifest, pkg, target): + """Pull out the package dict for a particular package and target + from the given manifest.""" + version = manifest["pkg"][pkg]["version"] + if target in manifest["pkg"][pkg]["target"]: + info = manifest["pkg"][pkg]["target"][target] + else: + # rust-src is the same for all targets, and has a literal '*' in the + # section key/name instead of a target + info = manifest["pkg"][pkg]["target"]["*"] + if "xz_url" in info: + info["url"] = info.pop("xz_url") + info["hash"] = info.pop("xz_hash") + return (version, info) + + +def fetch_package(manifest, pkg, host): + version, info = package(manifest, pkg, host) + if not info["available"]: + log("%s marked unavailable for %s" % (pkg, host)) + raise KeyError + + log("%s %s\n %s\n %s" % (pkg, version, info["url"], info["hash"])) + sha = fetch(info["url"], info["hash"] is not None) + if info["hash"] and sha != info["hash"]: + log( + "Checksum mismatch: package resource is different from manifest" + "\n %s" % sha + ) + raise AssertionError + return info + + +def fetch_std(manifest, targets): + stds = [] + for target in targets: + stds.append(fetch_package(manifest, "rust-std", target)) + # not available for i686 + if target != "i686-unknown-linux-musl": + stds.append(fetch_package(manifest, "rust-analysis", target)) + return stds + + +def fetch_optional(manifest, pkg, host): + try: + return fetch_package(manifest, pkg, host) + except KeyError: + # The package is not available, oh well! + return None + + +@contextmanager +def chdir(path): + d = os.getcwd() + log('cd "%s"' % path) + os.chdir(path) + try: + yield + finally: + log('cd "%s"' % d) + os.chdir(d) + + +def build_tar_package(name, base, directory): + name = os.path.realpath(name) + log("tarring {} from {}/{}".format(name, base, directory)) + assert name.endswith(".tar.zst") + + cctx = zstandard.ZstdCompressor() + with open(name, "wb") as f, cctx.stream_writer(f) as z: + with tarfile.open(mode="w|", fileobj=z) as tf: + with chdir(base): + tf.add(directory) + + +def fetch_manifest(channel="stable", host=None, targets=()): + if channel.startswith("bors-"): + assert host + rev = channel[len("bors-") :] + base_url = "https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rustc-builds" + manifest = { + "date": "some date", + "pkg": {}, + } + + def target(url): + return { + "url": url, + "hash": None, + "available": requests.head(url).status_code == 200, + } + + for pkg in ( + "cargo", + "rustc", + "rustfmt-preview", + "clippy-preview", + "rust-analyzer-preview", + ): + manifest["pkg"][pkg] = { + "version": "bors", + "target": { + host: target( + "{}/{}/{}-nightly-{}.tar.xz".format(base_url, rev, pkg, host) + ), + }, + } + manifest["pkg"]["rust-src"] = { + "version": "bors", + "target": { + "*": target("{}/{}/rust-src-nightly.tar.xz".format(base_url, rev)), + }, + } + for pkg in ("rust-std", "rust-analysis"): + manifest["pkg"][pkg] = { + "version": "bors", + "target": { + t: target( + "{}/{}/{}-nightly-{}.tar.xz".format(base_url, rev, pkg, t) + ) + for t in sorted(set(targets) | set([host])) + }, + } + return manifest + if "-" in channel: + channel, date = channel.split("-", 1) + prefix = "/" + date + else: + prefix = "" + url = "https://static.rust-lang.org/dist%s/channel-rust-%s.toml" % (prefix, channel) + req = requests.get(url) + req.raise_for_status() + manifest = toml.loads(req.text) + if manifest["manifest-version"] != "2": + raise NotImplementedError( + "Unrecognized manifest version %s." % manifest["manifest-version"] + ) + return manifest + + +def patch_src(patch, module): + log("Patching Rust src... {} with {}".format(module, patch)) + patch = os.path.realpath(patch) + subprocess.check_call(["patch", "-d", module, "-p1", "-i", patch, "--fuzz=0", "-s"]) + + +def build_src(install_dir, host, targets, patches): + install_dir = os.path.abspath(install_dir) + fetches = os.environ["MOZ_FETCHES_DIR"] + rust_dir = os.path.join(fetches, "rust") + patch_dir = os.path.join(os.environ["GECKO_PATH"], "build", "build-rust") + + # Clear and remake any previous install directory. + try: + shutil.rmtree(install_dir) + except OSError as e: + if e.errno != errno.ENOENT: + raise + os.makedirs(install_dir) + + # Patch the src (see the --patch flag's description for details) + for p in patches: + module, colon, file = p.partition(":") + if not colon: + module, file = "", p + patch_file = os.path.join(patch_dir, file) + patch_module = os.path.join(rust_dir, module) + patch_src(patch_file, patch_module) + + log("Building Rust...") + + example_config = "" + for example_toml in ("config.example.toml", "config.toml.example"): + path = os.path.join(rust_dir, example_toml) + if os.path.exists(path): + with open(path) as file: + example_config = file.read() + break + + if "ignore-git" in example_config: + omit_git_hash = "ignore-git" + else: + omit_git_hash = "omit-git-hash" + + # Rust builds are configured primarily through a config.toml file. + # + # `sysconfdir` is overloaded to be relative instead of absolute. + # This is the default of `install.sh`, but for whatever reason + # `x.py install` has its own default of `/etc` which we don't want. + # + # `missing-tools` is set so `rustfmt` is allowed to fail. This means + # we can "succeed" at building Rust while failing to build, say, Cargo. + # Ideally the build system would have better granularity: + # https://github.com/rust-lang/rust/issues/79249 + base_config = textwrap.dedent( + """ + [build] + docs = false + sanitizers = true + extended = true + tools = ["analysis", "cargo", "rustfmt", "clippy", "src", "rust-analyzer"] + + [rust] + {omit_git_hash} = false + use-lld = true + + [install] + prefix = "{prefix}" + sysconfdir = "etc" + + [dist] + missing-tools = true + + [llvm] + download-ci-llvm = false + """.format( + prefix=install_dir, + omit_git_hash=omit_git_hash, + ) + ) + + # Rust requires these to be specified per-target + target_config = textwrap.dedent( + """ + [target.{target}] + cc = "clang" + cxx = "clang++" + linker = "clang" + + """ + ) + + final_config = base_config + for target in sorted(set(targets) | set([host])): + final_config = final_config + target_config.format(target=target) + + with open(os.path.join(rust_dir, "config.toml"), "w") as file: + file.write(final_config) + + # Setup the env so compilers and toolchains are visible + clang = os.path.join(fetches, "clang") + clang_bin = os.path.join(clang, "bin") + clang_lib = os.path.join(clang, "lib") + + env = os.environ.copy() + env.update( + { + "PATH": os.pathsep.join((clang_bin, os.environ["PATH"])), + "LD_LIBRARY_PATH": clang_lib, + } + ) + + # x.py install does everything we need for us. + # If you're running into issues, consider using `-vv` to debug it. + command = ["python3", "x.py", "install", "-v", "--host", host] + for target in targets: + command.extend(["--target", target]) + + subprocess.check_call(command, stderr=subprocess.STDOUT, env=env, cwd=rust_dir) + + +def repack( + host, + targets, + channel="stable", + cargo_channel=None, + patches=[], +): + install_dir = "rustc" + if channel == "dev": + build_src(install_dir, host, targets, patches) + else: + if patches: + raise ValueError( + 'Patch specified, but channel "%s" is not "dev"!' + "\nPatches are only for building from source." % channel + ) + log("Repacking rust for %s supporting %s..." % (host, targets)) + manifest = fetch_manifest(channel, host, targets) + log("Using manifest for rust %s as of %s." % (channel, manifest["date"])) + if cargo_channel == channel: + cargo_manifest = manifest + else: + cargo_manifest = fetch_manifest(cargo_channel, host, targets) + log( + "Using manifest for cargo %s as of %s." + % (cargo_channel, cargo_manifest["date"]) + ) + + log("Fetching packages...") + rustc = fetch_package(manifest, "rustc", host) + cargo = fetch_package(cargo_manifest, "cargo", host) + stds = fetch_std(manifest, targets) + rustsrc = fetch_package(manifest, "rust-src", host) + rustfmt = fetch_optional(manifest, "rustfmt-preview", host) + clippy = fetch_optional(manifest, "clippy-preview", host) + rust_analyzer = fetch_optional(manifest, "rust-analyzer-preview", host) + + log("Installing packages...") + + # Clear any previous install directory. + try: + shutil.rmtree(install_dir) + except OSError as e: + if e.errno != errno.ENOENT: + raise + install(os.path.basename(rustc["url"]), install_dir) + install(os.path.basename(cargo["url"]), install_dir) + install(os.path.basename(rustsrc["url"]), install_dir) + if rustfmt: + install(os.path.basename(rustfmt["url"]), install_dir) + if clippy: + install(os.path.basename(clippy["url"]), install_dir) + if rust_analyzer: + install(os.path.basename(rust_analyzer["url"]), install_dir) + for std in stds: + install(os.path.basename(std["url"]), install_dir) + pass + + log("Creating archive...") + tar_file = install_dir + ".tar.zst" + build_tar_package(tar_file, ".", install_dir) + shutil.rmtree(install_dir) + log("%s is ready." % tar_file) + + upload_dir = os.environ.get("UPLOAD_DIR") + if upload_dir: + # Create the upload directory if it doesn't exist. + try: + log("Creating upload directory in %s..." % os.path.abspath(upload_dir)) + os.makedirs(upload_dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + # Move the tarball to the output directory for upload. + log("Moving %s to the upload directory..." % tar_file) + shutil.move(tar_file, upload_dir) + + +def expand_platform(name): + """Expand a shortcut name to a full Rust platform string.""" + platforms = { + "android": "armv7-linux-androideabi", + "android_x86": "i686-linux-android", + "android_x86-64": "x86_64-linux-android", + "android_aarch64": "aarch64-linux-android", + "linux64": "x86_64-unknown-linux-gnu", + "linux32": "i686-unknown-linux-gnu", + "mac": "x86_64-apple-darwin", + "macos": "x86_64-apple-darwin", + "mac64": "x86_64-apple-darwin", + "mac32": "i686-apple-darwin", + "win64": "x86_64-pc-windows-msvc", + "win32": "i686-pc-windows-msvc", + "mingw32": "i686-pc-windows-gnu", + } + return platforms.get(name, name) + + +def validate_channel(channel): + """Require a specific release version. + + Packaging from meta-channels, like `stable`, `beta`, or `nightly` + doesn't give repeatable output. Reject such channels.""" + channel_prefixes = ("stable", "beta", "nightly") + if any([channel.startswith(c) for c in channel_prefixes]): + if "-" not in channel: + raise ValueError( + 'Generic channel "%s" specified!' + "\nPlease give a specific release version" + ' like "1.24.0" or "beta-2018-02-20".' % channel + ) + + +def args(): + """Read command line arguments and return options.""" + parser = argparse.ArgumentParser() + parser.add_argument( + "--channel", + help="Release channel to use:" + " 1.xx.y, beta-yyyy-mm-dd," + " nightly-yyyy-mm-dd," + " bors-$rev (grab a build from rust's CI)," + " or dev (build from source).", + required=True, + ) + parser.add_argument( + "--patch", + dest="patches", + action="append", + default=[], + help="apply the given patch file to a dev build." + " Patch files should be placed in /build/build-rust." + " Patches can be prefixed with `module-path:` to specify they" + " apply to that git submodule in the Rust source." + " e.g. `src/llvm-project:mypatch.diff` patches rust's llvm." + " Can be given more than once.", + ) + parser.add_argument( + "--cargo-channel", + help="Release channel version to use for cargo." + " Defaults to the same as --channel.", + ) + parser.add_argument( + "--host", + help="Host platform for the toolchain executable:" + " e.g. linux64 or aarch64-linux-android." + " Defaults to linux64.", + ) + parser.add_argument( + "--target", + dest="targets", + action="append", + default=[], + help="Additional target platform to support:" + " e.g. linux32 or i686-pc-windows-gnu." + " can be given more than once.", + ) + args = parser.parse_args() + if not args.cargo_channel: + args.cargo_channel = args.channel + validate_channel(args.channel) + validate_channel(args.cargo_channel) + if not args.host: + args.host = "linux64" + args.host = expand_platform(args.host) + args.targets = [expand_platform(t) for t in args.targets] + + return args + + +if __name__ == "__main__": + args = vars(args()) + setup_gpg() + repack(**args) diff --git a/taskcluster/scripts/misc/run-profileserver-macos.sh b/taskcluster/scripts/misc/run-profileserver-macos.sh new file mode 100755 index 0000000000..61873a273a --- /dev/null +++ b/taskcluster/scripts/misc/run-profileserver-macos.sh @@ -0,0 +1,20 @@ +#! /bin/bash -vex +set -x -e + +#### +# Taskcluster friendly wrapper for running the profileserver on macOS +#### + +export UPLOAD_PATH=../../artifacts +mkdir -p $UPLOAD_PATH + +export JARLOG_FILE="en-US.log" + +export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata + +set -v + +./mach python python/mozbuild/mozbuild/action/install.py $MOZ_FETCHES_DIR/target.dmg $MOZ_FETCHES_DIR +./mach python build/pgo/profileserver.py --binary $MOZ_FETCHES_DIR/*.app/Contents/MacOS/firefox + +tar -Jcvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log diff --git a/taskcluster/scripts/misc/run-profileserver.sh b/taskcluster/scripts/misc/run-profileserver.sh new file mode 100755 index 0000000000..dd0ad31f05 --- /dev/null +++ b/taskcluster/scripts/misc/run-profileserver.sh @@ -0,0 +1,42 @@ +#! /bin/bash -vex + +set -x -e + +echo "running as" $(id) + +: NEED_XVFB ${NEED_XVFB:=false} +: UPLOAD_PATH ${UPLOAD_PATH:=$HOME/artifacts} +export UPLOAD_PATH + +#### +# Taskcluster friendly wrapper for running the profileserver +#### + +PGO_RUNDIR=obj-firefox/dist +export JARLOG_FILE="en-US.log" +export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata + +set -v + +if $NEED_XVFB; then + # run XVfb in the background + . /builds/worker/scripts/xvfb.sh + + cleanup() { + local rv=$? + cleanup_xvfb + exit $rv + } + trap cleanup EXIT INT + + start_xvfb '1024x768x24' 2 +fi + +# Move our fetched firefox into objdir/dist so the jarlog entries will match +# the paths when the final PGO stage packages the build. +mkdir -p $PGO_RUNDIR +mkdir -p $UPLOAD_PATH +mv $MOZ_FETCHES_DIR/firefox $PGO_RUNDIR +./mach python build/pgo/profileserver.py --binary $PGO_RUNDIR/firefox/firefox + +tar -acvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log diff --git a/taskcluster/scripts/misc/source-test-clang-setup.sh b/taskcluster/scripts/misc/source-test-clang-setup.sh new file mode 100755 index 0000000000..5388b6376e --- /dev/null +++ b/taskcluster/scripts/misc/source-test-clang-setup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +source $HOME/checkouts/gecko/taskcluster/scripts/misc/source-test-common.sh + +# Add clang-tidy to PATH +export PATH=$MOZ_FETCHES_DIR/clang-tidy/bin:$PATH + +# Use toolchain clang +export LD_LIBRARY_PATH=$MOZ_FETCHES_DIR/clang/lib + +# Write custom mozconfig +export MOZCONFIG=$GECKO_PATH/mozconfig + +# Add to mozconfig all the appropriate options +cat <> $MOZCONFIG +# Enable debug mode +ac_add_options --enable-debug +# Enable clang-plugin in order to have all defines activated for static-analysis +ac_add_options --enable-clang-plugin +# Enable GC zeal, a testing and debugging feature that helps find GC-related bugs in JSAPI applications. +ac_add_options --enable-gczeal +# Do not treat warnings as errors +ac_add_options --disable-warnings-as-errors +EOT + +# Mach lookup clang-tidy in clang-tools +mkdir -p $MOZBUILD_STATE_PATH/clang-tools +ln -s $MOZ_FETCHES_DIR/clang-tidy $MOZBUILD_STATE_PATH/clang-tools/clang-tidy diff --git a/taskcluster/scripts/misc/source-test-common.sh b/taskcluster/scripts/misc/source-test-common.sh new file mode 100755 index 0000000000..eb2409cf4e --- /dev/null +++ b/taskcluster/scripts/misc/source-test-common.sh @@ -0,0 +1,16 @@ +#! /bin/bash -vex + +set -x -e + +export MOZBUILD_STATE_PATH=$HOME/workspace + +# Add toolchain binaries to PATH to run ./mach configure +export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH +export PATH=$MOZ_FETCHES_DIR/rustc/bin:$PATH +export PATH=$MOZ_FETCHES_DIR/cbindgen:$PATH +export PATH=$MOZ_FETCHES_DIR/nasm:$PATH +export PATH=$MOZ_FETCHES_DIR/node/bin:$PATH + +# Use clang as host compiler +export CC=$MOZ_FETCHES_DIR/clang/bin/clang +export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++ diff --git a/taskcluster/scripts/misc/source-test-infer-setup.sh b/taskcluster/scripts/misc/source-test-infer-setup.sh new file mode 100755 index 0000000000..57786013c5 --- /dev/null +++ b/taskcluster/scripts/misc/source-test-infer-setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash +source $GECKO_PATH/taskcluster/scripts/misc/source-test-common.sh + +# Write custom mozconfig +MOZCONFIG=$GECKO_PATH/mozconfig +echo "ac_add_options --enable-project=mobile/android" > $MOZCONFIG +echo "ac_add_options --target=arm-linux-androideabi" >> $MOZCONFIG +echo "ac_add_options --with-android-sdk=${MOZ_FETCHES_DIR}/android-sdk-linux" >> $MOZCONFIG +echo "ac_add_options --with-android-ndk=${MOZ_FETCHES_DIR}/android-ndk" >> $MOZCONFIG + +# Write custom grade properties +export GRADLE_USER_HOME=$HOME/workspace/gradle +mkdir -p $GRADLE_USER_HOME +echo "org.gradle.daemon=false" >> ${GRADLE_USER_HOME}/gradle.properties + +# Mach lookup infer in infer... +mkdir -p $MOZBUILD_STATE_PATH/infer/infer +mv $MOZ_FETCHES_DIR/infer/{bin,lib} $MOZBUILD_STATE_PATH/infer/infer diff --git a/taskcluster/scripts/misc/summarize-tgdiff.py b/taskcluster/scripts/misc/summarize-tgdiff.py new file mode 100644 index 0000000000..f3a265ed66 --- /dev/null +++ b/taskcluster/scripts/misc/summarize-tgdiff.py @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import json +import pathlib + + +def filter_changes(line): + # Skip diff headers + if line.startswith("---") or line.startswith("+++"): + return False + + # Only count lines that changed + return line.startswith("-") or line.startswith("+") + + +def run(): + + parser = argparse.ArgumentParser( + description="Classify output of taskgraph for CI analsyis" + ) + parser.add_argument( + "path", + type=pathlib.Path, + help="Folder containing all the TXT files from taskgraph target.", + ) + parser.add_argument( + "threshold", + type=int, + help="Minimum number of lines to trigger a warning on taskgraph output.", + ) + args = parser.parse_args() + + out = {"files": {}, "status": "OK", "threshold": args.threshold} + for path in args.path.glob("*.txt"): + + with path.open() as f: + nb = len(list(filter(filter_changes, f.readlines()))) + + out["files"][path.stem] = { + "nb": nb, + "status": "WARNING" if nb >= args.threshold else "OK", + } + + if nb >= args.threshold: + out["status"] = "WARNING" + + (args.path / "summary.json").write_text(json.dumps(out, sort_keys=True, indent=4)) + + +if __name__ == "__main__": + run() diff --git a/taskcluster/scripts/misc/tooltool-download.sh b/taskcluster/scripts/misc/tooltool-download.sh new file mode 100644 index 0000000000..5f971d725a --- /dev/null +++ b/taskcluster/scripts/misc/tooltool-download.sh @@ -0,0 +1,21 @@ +# Fetch a tooltool manifest. + +cd $MOZ_FETCHES_DIR + +TOOLTOOL_DL_FLAGS= + +if [ -n "$UPLOAD_DIR" ]; then + TOOLTOOL_DL_FLAGS="${TOOLTOOL_DL_FLAGS=} --artifact-manifest $UPLOAD_DIR/toolchains.json" +fi + +: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache} +export TOOLTOOL_CACHE + +if [ -z "$TOOLTOOL_MANIFEST" ]; then + echo This script should not be used when there is no tooltool manifest set + exit 1 +fi + +${GECKO_PATH}/mach artifact toolchain -v${TOOLTOOL_DL_FLAGS} --tooltool-manifest "${GECKO_PATH}/${TOOLTOOL_MANIFEST}"${TOOLTOOL_CACHE:+ --cache-dir ${TOOLTOOL_CACHE}} --retry 5 + +cd $OLDPWD diff --git a/taskcluster/scripts/misc/unify.sh b/taskcluster/scripts/misc/unify.sh new file mode 100755 index 0000000000..85c57667d8 --- /dev/null +++ b/taskcluster/scripts/misc/unify.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +set -x -e + +export LIPO=$MOZ_FETCHES_DIR/cctools/bin/x86_64-apple-darwin-lipo + +for i in x64 aarch64; do + $GECKO_PATH/mach python -m mozbuild.action.unpack_dmg $MOZ_FETCHES_DIR/$i/target.dmg $i +done +$GECKO_PATH/mach python $GECKO_PATH/toolkit/mozapps/installer/unify.py x64/*.app aarch64/*.app +$GECKO_PATH/mach python -m mozbuild.action.make_dmg x64 target.dmg + +mkdir -p $UPLOAD_DIR +mv target.dmg $UPLOAD_DIR/ + +python3 -c ' +import json +import os + +for artifact in json.loads(os.environ["MOZ_FETCHES"]): + if artifact.get("extract") and artifact.get("dest", "").startswith("x64"): + print(artifact["dest"], os.path.basename(artifact["artifact"])) +' | while read dir artifact; do + if [ "$artifact" = target.crashreporter-symbols.zip ]; then + $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/unify_symbols.py $MOZ_FETCHES_DIR/$dir $MOZ_FETCHES_DIR/aarch64${dir#x64} + else + $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/unify_tests.py $MOZ_FETCHES_DIR/$dir $MOZ_FETCHES_DIR/aarch64${dir#x64} + fi + + case $artifact in + *.tar.gz) + find $MOZ_FETCHES_DIR/$dir -not -type d -printf '%P\0' | tar -C $MOZ_FETCHES_DIR/$dir --owner=0:0 --group=0:0 -zcf $artifact --no-recursion --null -T - + ;; + *.zip) + $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/zip.py -C $MOZ_FETCHES_DIR/$dir $PWD/$artifact '*' + ;; + esac + mv $artifact $UPLOAD_DIR/ +done diff --git a/taskcluster/scripts/misc/unpack-sdk.py b/taskcluster/scripts/misc/unpack-sdk.py new file mode 100644 index 0000000000..290370db42 --- /dev/null +++ b/taskcluster/scripts/misc/unpack-sdk.py @@ -0,0 +1,87 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import hashlib +import os +import shutil +import stat +import sys +import tempfile +from io import BytesIO +from urllib.request import urlopen + +from mozpack.macpkg import Pbzx, uncpio, unxar + + +def unpack_sdk(url, sha256, extract_prefix, out_dir="."): + with tempfile.TemporaryFile() as pkg: + hash = hashlib.sha256() + with urlopen(url) as fh: + # Equivalent to shutil.copyfileobj, but computes sha256 at the same time. + while True: + buf = fh.read(1024 * 1024) + if not buf: + break + hash.update(buf) + pkg.write(buf) + digest = hash.hexdigest() + if digest != sha256: + raise Exception(f"(actual) {digest} != (expected) {sha256}") + + pkg.seek(0, os.SEEK_SET) + + for name, content in unxar(pkg): + if name in ("Payload", "Content"): + extract_payload(content, extract_prefix, out_dir) + + +def extract_payload(fileobj, extract_prefix, out_dir="."): + hardlinks = {} + for path, st, content in uncpio(Pbzx(fileobj)): + # When there are hardlinks, normally a cpio stream is supposed to + # contain the data for all of them, but, even with compression, that + # can be a waste of space, so in some cpio streams (*cough* *cough*, + # Apple's, e.g. in Xcode), the files after the first one have dummy + # data. + # As we may be filtering the first file out (if it doesn't match + # extract_prefix), we need to keep its data around (we're not going + # to be able to rewind). + # We could do something fancy in the case where the first file is not + # filtered out, but in practice, it's not worth the extra complexity. + if stat.S_ISREG(st.mode) and st.nlink > 1: + key = (st.dev, st.ino) + hardlink = hardlinks.get(key) + if hardlink: + hardlink[0] -= 1 + if hardlink[0] == 0: + del hardlinks[key] + else: + hardlink = hardlinks[key] = [st.nlink - 1, BytesIO(content.read())] + content = hardlink[1] + content.seek(0) + + if not path: + continue + path = path.decode() + if not path.startswith(extract_prefix): + continue + path = os.path.join(out_dir, path[len(extract_prefix) :].lstrip("/")) + if stat.S_ISDIR(st.mode): + os.makedirs(path, exist_ok=True) + else: + parent = os.path.dirname(path) + if parent: + os.makedirs(parent, exist_ok=True) + + if stat.S_ISLNK(st.mode): + os.symlink(content.read(), path) + elif stat.S_ISREG(st.mode): + with open(path, "wb") as out: + shutil.copyfileobj(content, out) + else: + raise Exception(f"File mode {st.mode:o} is not supported") + + +if __name__ == "__main__": + unpack_sdk(*sys.argv[1:]) diff --git a/taskcluster/scripts/misc/verify-devtools-bundle.py b/taskcluster/scripts/misc/verify-devtools-bundle.py new file mode 100644 index 0000000000..901db0eb08 --- /dev/null +++ b/taskcluster/scripts/misc/verify-devtools-bundle.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, # You can obtain one at http://mozilla.org/MPL/2.0/. + +""" +Check that the current sourcemap and worker bundles built for DevTools are up to date. +This job should fail if any file impacting the bundle creation was modified without +regenerating the bundles. + +This check should be run after building the bundles via: +cd devtools/client/debugger +yarn && node bin/bundle.js + +Those steps are done in the devtools-verify-bundle job, prior to calling this script. +The script will only run `hg status devtools/` and check that no change is detected by +mercurial. +""" + +import argparse +import json +import subprocess +import sys + +# Ignore module-manifest.json updates which can randomly happen when +# building bundles. +hg_exclude = "devtools/client/debugger/bin/module-manifest.json" + +print("Run `hg status devtools/`") +status = ( + subprocess.check_output(["hg", "status", "-n", "devtools/", "-X", hg_exclude]) + .decode("utf-8") + .split("\n") +) +print(" status:") +print("-" * 80) + +doc = "https://firefox-source-docs.mozilla.org/devtools/tests/node-tests.html#devtools-bundle" + +failures = {} +for l in status: + if not l: + # Ignore empty lines + continue + + failures[l] = [ + { + "path": l, + "line": None, + "column": None, + "level": "error", + "message": l + + " is outdated and needs to be regenerated, " + + f"instructions at: {doc}", + } + ] + + +diff = subprocess.check_output(["hg", "diff", "devtools/", "-X", hg_exclude]).decode( + "utf-8" +) + +# Revert all the changes created by `node bin/bundle.js` +subprocess.check_output(["hg", "revert", "-C", "devtools/"]) + +parser = argparse.ArgumentParser() +parser.add_argument("--output", required=True) +args = parser.parse_args() + +with open(args.output, "w") as fp: + json.dump(failures, fp, indent=2) + +if len(failures) > 0: + print( + "TEST-UNEXPECTED-FAIL | devtools-bundle | DevTools bundles need to be regenerated, " + + f"instructions at: {doc}" + ) + + print("The following devtools bundles were detected as outdated:") + for failure in failures: + print(failure) + + print(f"diff:{diff}") + + sys.exit(1) diff --git a/taskcluster/scripts/misc/vs-cleanup.sh b/taskcluster/scripts/misc/vs-cleanup.sh new file mode 100644 index 0000000000..8bb93b266f --- /dev/null +++ b/taskcluster/scripts/misc/vs-cleanup.sh @@ -0,0 +1,13 @@ +case "$(uname -s)" in +MINGW*|MSYS*) + # For some reason, by the time the task finishes, and when run-task + # starts its cleanup, there is still a vctip.exe (MSVC telemetry-related + # process) running and using a dll that run-task can't then delete. + # "For some reason", because the same doesn't happen with other tasks. + # In fact, this used to happen with older versions of MSVC for other + # tasks, and stopped when upgrading to 15.8.4... + taskkill -f -im vctip.exe || true + # Same with the mspdbsrv process. + taskkill -f -im mspdbsrv.exe || true + ;; +esac diff --git a/taskcluster/scripts/misc/vs-setup.sh b/taskcluster/scripts/misc/vs-setup.sh new file mode 100644 index 0000000000..3721f93114 --- /dev/null +++ b/taskcluster/scripts/misc/vs-setup.sh @@ -0,0 +1,42 @@ +VSDIR=vs +VSPATH="${MOZ_FETCHES_DIR}/${VSDIR}" +UNIX_VSPATH="$(cd ${MOZ_FETCHES_DIR} && pwd)/${VSDIR}" +VCDIR=VC/Tools/MSVC/14.16.27023 +if [ ! -d "${VSPATH}/${VCDIR}" ]; then + VCDIR=VC/Tools/MSVC/14.29.30133 +fi +if [ ! -d "${VSPATH}/${VCDIR}" ]; then + VCDIR=VC/Tools/MSVC/14.35.32215 +fi +SDKDIR="Windows Kits/10" +SDK_VERSION=10.0.17134.0 +if [ ! -d "${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}" ]; then + SDK_VERSION=10.0.19041.0 +fi +if [ ! -d "${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}" ]; then + SDK_VERSION=10.0.22621.0 +fi + +case "$TARGET" in +aarch64-pc-windows-msvc) + SDK_CPU=arm64 + ;; +i686-pc-windows-msvc) + SDK_CPU=x86 + ;; +*) + SDK_CPU=x64 + ;; +esac + +CRT_DIR="microsoft.vc141.crt" +if [ ! -d "${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR" ]; then + CRT_DIR="microsoft.vc142.crt" +fi +if [ ! -d "${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR" ]; then + CRT_DIR="microsoft.vc143.crt" +fi + +export INCLUDE="${VSPATH}/${VCDIR}/include;${VSPATH}/${VCDIR}/atlmfc/include;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/ucrt;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/shared;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/um;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/winrt;${VSPATH}/dia sdk/include" +export LIB="${VSPATH}/${VCDIR}/lib/${SDK_CPU};${VSPATH}/${VCDIR}/atlmfc/lib/${SDK_CPU};${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}/um/${SDK_CPU};${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}/ucrt/${SDK_CPU};${VSPATH}/dia sdk/lib/amd64" +export PATH="${UNIX_VSPATH}/${VCDIR}/bin/hostx64/${SDK_CPU}:${UNIX_VSPATH}/${VCDIR}/bin/hostx86/x86:${UNIX_VSPATH}/${SDKDIR}/bin/${SDK_VERSION}/${SDK_CPU}:${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR:${UNIX_VSPATH}/${SDKDIR}/redist/ucrt/dlls/${SDK_CPU}:${UNIX_VSPATH}/dia sdk/bin/amd64:$PATH" diff --git a/taskcluster/scripts/misc/wr-cargotest-macos-build.sh b/taskcluster/scripts/misc/wr-cargotest-macos-build.sh new file mode 100755 index 0000000000..23b4ccedec --- /dev/null +++ b/taskcluster/scripts/misc/wr-cargotest-macos-build.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -x -e -v + +source ${GECKO_PATH}/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh + +export UPLOAD_DIR="${HOME}/artifacts" +mkdir -p "${UPLOAD_DIR}" + +# Do a cross-build for cargo test run +pushd "${GECKO_PATH}/gfx/wr" +CARGOFLAGS="-vv --frozen --target=${TARGET_TRIPLE}" \ + CARGOTESTFLAGS="--no-run" \ + ci-scripts/macos-debug-tests.sh +# Package up the test binaries +cd "target/${TARGET_TRIPLE}" +mkdir cargo-test-binaries +mv debug cargo-test-binaries/ +find cargo-test-binaries/debug/deps -type f -maxdepth 1 -executable -print0 > binaries.lst +tar cjf cargo-test-binaries.tar.bz2 --null -T binaries.lst +mv cargo-test-binaries.tar.bz2 "${UPLOAD_DIR}" +# Clean the build +cd "${GECKO_PATH}/gfx/wr" +rm -rf target +popd diff --git a/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh b/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh new file mode 100755 index 0000000000..1c9faa4b9b --- /dev/null +++ b/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh @@ -0,0 +1,60 @@ +#!/bin/bash +set -x -e -v + +export TARGET_TRIPLE="x86_64-apple-darwin" + +MACOS_SYSROOT="${MOZ_FETCHES_DIR}/MacOSX13.3.sdk" +CLANGDIR="${MOZ_FETCHES_DIR}/clang" + +# Deploy the wrench dependencies +mv ${MOZ_FETCHES_DIR}/wrench-deps/{vendor,.cargo} "${GECKO_PATH}/gfx/wr/" + +# Building wrench with the `headless` feature also builds the osmesa-src crate, +# which includes building C++ code. We have to do a bunch of shenanigans +# to make this cross-compile properly. + +pushd "${MOZ_FETCHES_DIR}/clang/bin" + +# Add a pkg-config cross-compile wrapper. Without this, the configure script +# will use pkg-config from the host, which will find host libraries that are +# not what we want. This script stolen from +# https://autotools.io/pkgconfig/cross-compiling.html +cat > ${TARGET_TRIPLE}-pkg-config < ${MOZ_FETCHES_DIR}/clang-mac/clang/bin/llvm-config < .cargo/config +mkdir wrench-deps +mv vendor .cargo wrench-deps/ +mkdir wrench-deps/cargo-apk +# Until there's a version of cargo-apk published on crates.io that has +# https://github.com/rust-windowing/android-ndk-rs/pull/236, we need to use +# an unpublished version. Additionally, until we update the NDK version used +# in gecko we must use our own patched version. See bug 1615148. +(cd $MOZ_FETCHES_DIR/android-ndk-rs/cargo-apk; cargo update -p home --precise 0.5.5) +cargo install --locked --path $MOZ_FETCHES_DIR/android-ndk-rs/cargo-apk --root wrench-deps/cargo-apk cargo-apk + +ci-scripts/install-meson.sh +mv meson wrench-deps/meson + +mkdir -p $UPLOAD_DIR +tar caf $UPLOAD_DIR/wrench-deps.tar.zst wrench-deps diff --git a/taskcluster/scripts/misc/wrench-macos-build.sh b/taskcluster/scripts/misc/wrench-macos-build.sh new file mode 100755 index 0000000000..43842d4510 --- /dev/null +++ b/taskcluster/scripts/misc/wrench-macos-build.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -x -e -v + +source ${GECKO_PATH}/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh + +# The osmesa-src build which we do as part of the headless build below +# doesn't seem to always use CFLAGS/CXXFLAGS where expected. Instead we +# just squash those flags into CC/CXX and everything works out. +# Export HOST_CC and HOST_CXX without the squashed flags, so that host +# builds use them and don't see the target flags. +export HOST_CC="${CC}" +export HOST_CXX="${CXX}" +CFLAGS_VAR="CFLAGS_${TARGET_TRIPLE//-/_}" +CXXFLAGS_VAR="CXXFLAGS_${TARGET_TRIPLE//-/_}" +export CC="${CC} ${!CFLAGS_VAR}" +export ${CFLAGS_VAR}= +export CXX="${CXX} ${!CXXFLAGS_VAR}" +export ${CXXFLAGS_VAR}= + +export MESON_CROSSFILE=${GECKO_PATH}/gfx/wr/ci-scripts/etc/wr-darwin.meson +export UPLOAD_DIR="${HOME}/artifacts" +mkdir -p "${UPLOAD_DIR}" + +# Do a cross-build without the `headless` feature +pushd "${GECKO_PATH}/gfx/wr/wrench" +cargo build --release -vv --frozen --target=${TARGET_TRIPLE} +# Package up the resulting wrench binary +cd "../target/${TARGET_TRIPLE}" +mkdir -p wrench-macos/bin +mv release/wrench wrench-macos/bin/ +tar cjf wrench-macos.tar.bz2 wrench-macos +mv wrench-macos.tar.bz2 "${UPLOAD_DIR}" +# Clean the build +cd "${GECKO_PATH}/gfx/wr" +rm -rf target +popd + +# Do a cross-build with the `headless` feature +pushd "${GECKO_PATH}/gfx/wr/wrench" +cargo build --release -vv --frozen --target=${TARGET_TRIPLE} --features headless +# Package up the wrench binary and some libraries that we will need +cd "../target/${TARGET_TRIPLE}" + +# Copy the native macOS libLLVM as dynamic dependency +cp "${MOZ_FETCHES_DIR}/clang-mac/clang/lib/libLLVM.dylib" release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa/ + +mkdir wrench-macos-headless +mv release wrench-macos-headless/ +tar cjf wrench-macos-headless.tar.bz2 \ + wrench-macos-headless/release/wrench \ + wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa \ + wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/mapi/shared-glapi +mv wrench-macos-headless.tar.bz2 "${UPLOAD_DIR}" + +# Clean the build +cd "${GECKO_PATH}/gfx/wr" +rm -rf target +popd diff --git a/taskcluster/scripts/misc/wrench-windows-tests.sh b/taskcluster/scripts/misc/wrench-windows-tests.sh new file mode 100644 index 0000000000..52b3a32173 --- /dev/null +++ b/taskcluster/scripts/misc/wrench-windows-tests.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -x -e -v + +# This script runs the windows CI scripts for standalone WebRender. The CI +# scripts build WebRender in various "standalone" (without Gecko) +# configurations and also run WebRender's reftest suite using the `wrench` +# tool in the WebRender repository. +# The builds involved require a number of dependencies to be available, +# which is all handled below. + +cd $GECKO_PATH + +export PATH=$PATH:$(cd $MOZ_FETCHES_DIR && pwd)/rustc/bin + +. taskcluster/scripts/misc/vs-setup.sh + +# Move the wrench-deps vendored crates into place +mv ${MOZ_FETCHES_DIR}/wrench-deps/{vendor,.cargo} gfx/wr +cd gfx/wr + +# This is needed for the WebRender standalone reftests +powershell.exe 'iex (Get-Content -Raw ci-scripts\set-screenresolution.ps1); Set-ScreenResolution 1920 1080' + +# Run the CI scripts +export CARGOFLAGS='--verbose --frozen' +cmd.exe /c 'ci-scripts\windows-tests.cmd' + +. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh diff --git a/taskcluster/scripts/misc/zstdpy b/taskcluster/scripts/misc/zstdpy new file mode 100755 index 0000000000..7fc27fded6 --- /dev/null +++ b/taskcluster/scripts/misc/zstdpy @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +"""This script compresses and decompresses data using the zstandard compression +format, as provided by the python-zstandard module. + +Data is provided on stdin and output on stdout.""" + +import sys +import zstandard +from argparse import ArgumentParser + + +def main(argv=None): + parser = ArgumentParser(description=__doc__) + parser.set_defaults(mode="compress") + parser.add_argument( + "-z", + "--compress", + dest="mode", + action="store_const", + const="compress", + help="compress the data (this is the default)", + ) + parser.add_argument( + "-d", + "--decompress", + dest="mode", + action="store_const", + const="decompress", + help="decompress the data", + ) + parser.add_argument( + "-T", + "--threads", + dest="threads", + default=1, + type=int, + help="Compress using # working threads. If 0, use number of CPUs on the system. (default 1)", + ) + parser.add_argument( + "-l", + "--level", + dest="level", + default=3, + type=int, + help="Compression level from 1-22 (default 3)", + ) + parser.add_argument( + "file", + nargs="?", + help="File to compress/decompress. Default is stdin.", + ) + + args = parser.parse_args(argv) + + # The zstd commandline tool uses 0 to specify number of threads equal to + # the number of CPUs whereas the python module uses negative numbers to + # flag this behavior. Emulate the zstd commandline utility's behavior here + if args.threads == 0: + args.threads = -1 + + if args.file: + in_file = open(args.file, "rb") + else: + in_file = sys.stdin.buffer + + if args.mode == "compress": + ctx = zstandard.ZstdCompressor(level=args.level, threads=args.threads) + elif args.mode == "decompress": + ctx = zstandard.ZstdDecompressor() + + ctx.copy_stream(in_file, sys.stdout.buffer) + + +if __name__ == "__main__": + main() diff --git a/taskcluster/scripts/run-task b/taskcluster/scripts/run-task new file mode 100755 index 0000000000..fb0d32f8f5 --- /dev/null +++ b/taskcluster/scripts/run-task @@ -0,0 +1,1005 @@ +#!/usr/bin/python3 -u +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +"""Run a task after performing common actions. + +This script is meant to be the "driver" for TaskCluster based tasks. +It receives some common arguments to control the run-time environment. + +It performs actions as requested from the arguments. Then it executes +the requested process and prints its output, prefixing it with the +current time to improve log usefulness. +""" + +import sys + + +if sys.version_info[0:2] < (3, 5): + print('run-task requires Python 3.5+') + sys.exit(1) + + +import argparse +import datetime +import errno +import io +import json +import os +import random +import re +import shutil +import signal +import socket +import stat +import subprocess + +import urllib.error +import urllib.request + +from threading import Thread + +FINGERPRINT_URL = 'http://taskcluster/secrets/v1/secret/project/taskcluster/gecko/hgfingerprint' +FALLBACK_FINGERPRINT = { + 'fingerprints': + "sha256:4D:EB:21:6E:35:2F:99:C6:8F:C3:47:9B:57:B8:6C:17:15:8F:86:09:D4:6C:17:1D:87:B0:DE:F9:0E:51:70:FC," + "sha256:90:85:39:A8:4F:47:20:58:98:0D:48:4D:8A:AC:71:DB:5C:AF:76:44:F1:B1:3E:56:92:FF:21:8C:C9:A9:F7:11" +} + +HGMOINTERNAL_CONFIG_URL = 'http://taskcluster/secrets/v1/secret/project/taskcluster/gecko/hgmointernal' + +CACHE_UID_GID_MISMATCH = ''' +There is a UID/GID mismatch on the cache. This likely means: + +a) different tasks are running as a different user/group +b) different Docker images have different UID/GID for the same user/group + +Our cache policy is that the UID/GID for ALL tasks must be consistent +for the lifetime of the cache. This eliminates permissions problems due +to file/directory user/group ownership. + +To make this error go away, ensure that all Docker images are use +a consistent UID/GID and that all tasks using this cache are running as +the same user/group. +''' + + +NON_EMPTY_VOLUME = ''' +error: volume %s is not empty + +Our Docker image policy requires volumes to be empty. + +The volume was likely populated as part of building the Docker image. +Change the Dockerfile and anything run from it to not create files in +any VOLUME. + +A lesser possibility is that you stumbled upon a TaskCluster platform bug +where it fails to use new volumes for tasks. +''' + + +FETCH_CONTENT_NOT_FOUND = ''' +error: fetch-content script not found + +The script at `taskcluster/scripts/misc/fetch-content` could not be +detected in the current environment. + +If this task clones gecko, make sure the GECKO_PATH environment variable +is set to proper location. Otherwise, the script may need to be mounted +or added to the task's docker image then added to the PATH. +''' + +# The exit code to use when caches should be purged and the task retried. +# This is EX_OSFILE (from sysexits.h): +# Some system file does not exist, cannot be opened, or has some +# sort of error (e.g., syntax error). +EXIT_PURGE_CACHE = 72 + + +IS_MACOSX = sys.platform == 'darwin' +IS_POSIX = os.name == 'posix' +IS_WINDOWS = os.name == 'nt' + + +def print_line(prefix, m): + now = datetime.datetime.utcnow().isoformat().encode('utf-8') + # slice microseconds to 3 decimals. + now = now[:-3] if now[-7:-6] == b'.' else now + bytes = b'[%s %sZ] %s' % (prefix, now, m) + written = 0 + while written < len(bytes): + written += (sys.stdout.buffer.write(bytes[written:]) or 0) + sys.stdout.buffer.flush() + + +def run_and_prefix_output(prefix, args, *, extra_env=None, cwd=None): + """Runs a process and prefixes its output with the time. + + Returns the process exit code. + """ + print_line( + prefix, + b"executing %r%s\n" % (args, b"in %s" % (cwd.encode("utf-8"),) if cwd else b""), + ) + + env = dict(os.environ) + env.update(extra_env or {}) + + # Note: TaskCluster's stdin is a TTY. This attribute is lost + # when we pass sys.stdin to the invoked process. If we cared + # to preserve stdin as a TTY, we could make this work. But until + # someone needs it, don't bother. + + # We want stdout to be bytes on Python 3. That means we can't use + # universal_newlines=True (because it implies text mode). But + # p.stdout.readline() won't work for bytes text streams. So, on Python 3, + # we manually install a latin1 stream wrapper. This allows us to readline() + # and preserves bytes, without losing any data. + + p = subprocess.Popen(args, + # Disable buffering because we want to receive output + # as it is generated so timestamps in logs are + # accurate. + bufsize=0, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + stdin=sys.stdin.fileno(), + env=env, + cwd=cwd) + + stdout = io.TextIOWrapper(p.stdout, encoding='latin1') + + while True: + data = stdout.readline().encode('latin1') + + if data == b'': + break + + print_line(prefix, data) + + return p.wait() + + +def get_posix_user_group(user, group): + import grp + import pwd + + try: + user_record = pwd.getpwnam(user) + except KeyError: + print('could not find user %s; specify a valid user with --user' % user) + sys.exit(1) + + try: + group_record = grp.getgrnam(group) + except KeyError: + print('could not find group %s; specify a valid group with --group' % + group) + sys.exit(1) + + # Most tasks use worker:worker. We require they have a specific numeric ID + # because otherwise it is too easy for files written to caches to have + # mismatched numeric IDs, which results in permissions errors. + if user_record.pw_name == 'worker' and user_record.pw_uid != 1000: + print('user `worker` must have uid=1000; got %d' % user_record.pw_uid) + sys.exit(1) + + if group_record.gr_name == 'worker' and group_record.gr_gid != 1000: + print('group `worker` must have gid=1000; got %d' % group_record.gr_gid) + sys.exit(1) + + # Find all groups to which this user is a member. + gids = [g.gr_gid for g in grp.getgrall() if group in g.gr_mem] + + return user_record, group_record, gids + + +def write_audit_entry(path, msg): + now = datetime.datetime.utcnow().isoformat().encode('utf-8') + with open(path, 'ab') as fh: + fh.write(b'[%sZ %s] %s\n' % ( + now, os.environb.get(b'TASK_ID', b'UNKNOWN'), msg)) + + +WANTED_DIR_MODE = stat.S_IXUSR | stat.S_IRUSR | stat.S_IWUSR + + +def set_dir_permissions(path, uid, gid): + st = os.lstat(path) + + if st.st_uid != uid or st.st_gid != gid: + os.chown(path, uid, gid) + + # Also make sure dirs are writable in case we need to delete + # them. + if st.st_mode & WANTED_DIR_MODE != WANTED_DIR_MODE: + os.chmod(path, st.st_mode | WANTED_DIR_MODE) + + +def chown_recursive(path, user, group, uid, gid): + print_line(b'chown', + b'recursively changing ownership of %s to %s:%s\n' % + (path.encode('utf-8'), user.encode('utf-8'), group.encode( + 'utf-8'))) + + set_dir_permissions(path, uid, gid) + + for root, dirs, files in os.walk(path): + for d in dirs: + set_dir_permissions(os.path.join(root, d), uid, gid) + + for f in files: + # File may be a symlink that points to nowhere. In which case + # os.chown() would fail because it attempts to follow the + # symlink. We only care about directory entries, not what + # they point to. So setting the owner of the symlink should + # be sufficient. + os.lchown(os.path.join(root, f), uid, gid) + + +def configure_cache_posix(cache, user, group, + untrusted_caches, running_as_root): + """Configure a cache path on POSIX platforms. + + For each cache, we write out a special file denoting attributes and + capabilities of run-task and the task being executed. These attributes + are used by subsequent run-task invocations to validate that use of + the cache is acceptable. + + We /could/ blow away the cache data on requirements mismatch. + While this would be convenient, this could result in "competing" tasks + effectively undoing the other's work. This would slow down task + execution in aggregate. Without monitoring for this, people may not notice + the problem and tasks would be slower than they could be. We follow the + principle of "fail fast" to ensure optimal task execution. + + We also write an audit log of who used the caches. This log is printed + during failures to help aid debugging. + """ + + our_requirements = { + # Include a version string that we can bump whenever to trigger + # fresh caches. The actual value is not relevant and doesn't need + # to follow any explicit order. Since taskgraph bakes this file's + # hash into cache names, any change to this file/version is sufficient + # to force the use of a new cache. + b'version=1', + # Include the UID and GID the task will run as to ensure that tasks + # with different UID and GID don't share the same cache. + b'uid=%d' % user.pw_uid, + b'gid=%d' % group.gr_gid, + } + + requires_path = os.path.join(cache, '.cacherequires') + audit_path = os.path.join(cache, '.cachelog') + + # The cache is empty. Configure it. + if not os.listdir(cache): + print_line(b'cache', b'cache %s is empty; writing requirements: ' + b'%s\n' % ( + cache.encode('utf-8'), b' '.join(sorted(our_requirements)))) + + # We write a requirements file so future invocations know what the + # requirements are. + with open(requires_path, 'wb') as fh: + fh.write(b'\n'.join(sorted(our_requirements))) + + # And make it read-only as a precaution against deletion. + os.chmod(requires_path, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH) + + write_audit_entry(audit_path, + b'created; requirements: %s' % + b', '.join(sorted(our_requirements))) + + set_dir_permissions(cache, user.pw_uid, group.gr_gid) + return + + # The cache has content and we have a requirements file. Validate + # requirements alignment. + if os.path.exists(requires_path): + with open(requires_path, 'rb') as fh: + wanted_requirements = set(fh.read().splitlines()) + + print_line(b'cache', b'cache %s exists; requirements: %s\n' % ( + cache.encode('utf-8'), b' '.join(sorted(wanted_requirements)))) + + missing = wanted_requirements - our_requirements + + # Allow requirements mismatch for uid/gid if and only if caches + # are untrusted. This allows cache behavior on Try to be + # reasonable. Otherwise, random tasks could "poison" cache + # usability by introducing uid/gid mismatches. For untrusted + # environments like Try, this is a perfectly reasonable thing to + # allow. + if missing and untrusted_caches and running_as_root and \ + all(s.startswith((b'uid=', b'gid=')) for s in missing): + print_line(b'cache', + b'cache %s uid/gid mismatch; this is acceptable ' + b'because caches for this task are untrusted; ' + b'changing ownership to facilitate cache use\n' % + cache.encode('utf-8')) + chown_recursive(cache, user.pw_name, group.gr_name, user.pw_uid, + group.gr_gid) + + # And write out the updated reality. + with open(requires_path, 'wb') as fh: + fh.write(b'\n'.join(sorted(our_requirements))) + + write_audit_entry(audit_path, + b'chown; requirements: %s' % + b', '.join(sorted(our_requirements))) + + elif missing: + print('error: requirements for populated cache %s differ from ' + 'this task' % cache) + print('cache requirements: %s' % ' '.join(sorted( + s.decode('utf-8') for s in wanted_requirements))) + print('our requirements: %s' % ' '.join(sorted( + s.decode('utf-8') for s in our_requirements))) + if any(s.startswith((b'uid=', b'gid=')) for s in missing): + print(CACHE_UID_GID_MISMATCH) + + write_audit_entry(audit_path, + b'requirements mismatch; wanted: %s' % + b', '.join(sorted(our_requirements))) + + print('') + print('audit log:') + with open(audit_path, 'r') as fh: + print(fh.read()) + + return True + else: + write_audit_entry(audit_path, b'used') + + # We don't need to adjust permissions here because the cache is + # associated with a uid/gid and the first task should have set + # a proper owner/group. + + return + + # The cache has content and no requirements file. This shouldn't + # happen because run-task should be the first thing that touches a + # cache. + print('error: cache %s is not empty and is missing a ' + '.cacherequires file; the cache names for this task are ' + 'likely mis-configured or TASKCLUSTER_CACHES is not set ' + 'properly' % cache) + + write_audit_entry(audit_path, b'missing .cacherequires') + return True + + +def configure_volume_posix(volume, user, group, running_as_root): + # The only time we should see files in the volume is if the Docker + # image build put files there. + # + # For the sake of simplicity, our policy is that volumes should be + # empty. This also has the advantage that an empty volume looks + # a lot like an empty cache. Tasks can rely on caches being + # swapped in and out on any volume without any noticeable change + # of behavior. + volume_files = os.listdir(volume) + if volume_files: + print(NON_EMPTY_VOLUME % volume) + print('entries in root directory: %s' % + ' '.join(sorted(volume_files))) + sys.exit(1) + + # The volume is almost certainly owned by root:root. Chown it so it + # is writable. + + if running_as_root: + print_line(b'volume', b'changing ownership of volume %s ' + b'to %d:%d\n' % (volume.encode('utf-8'), + user.pw_uid, + group.gr_gid)) + set_dir_permissions(volume, user.pw_uid, group.gr_gid) + + +def vcs_checkout(source_repo, dest, store_path, + base_repo=None, revision=None, branch=None, + fetch_hgfingerprint=False, sparse_profile=None): + # Specify method to checkout a revision. This defaults to revisions as + # SHA-1 strings, but also supports symbolic revisions like `tip` via the + # branch flag. + if revision: + revision_flag = '--revision' + revision_value = revision + elif branch: + revision_flag = '--branch' + revision_value = branch + else: + print('revision is not specified for checkout') + sys.exit(1) + + if IS_MACOSX or IS_POSIX: + hg_bin = 'hg' + elif IS_WINDOWS: + # This is where OCC installs it in the AMIs. + hg_bin = r'C:\Program Files\Mercurial\hg.exe' + if not os.path.exists(hg_bin): + print('could not find Mercurial executable: %s' % hg_bin) + sys.exit(1) + + store_path = os.path.abspath(store_path) + args = [ + hg_bin, + 'robustcheckout', + '--sharebase', store_path, + '--purge', + ] + + # Obtain certificate fingerprints. Without this, the checkout will use the fingerprint + # on the system, which is managed some other way (such as puppet) + if fetch_hgfingerprint: + try: + print_line(b'vcs', b'fetching hg.mozilla.org fingerprint from %s\n' % + FINGERPRINT_URL.encode('utf-8')) + res = urllib.request.urlopen(FINGERPRINT_URL, timeout=10) + secret = res.read() + try: + secret = json.loads(secret.decode('utf-8')) + except ValueError: + print_line(b'vcs', b'invalid JSON in hg fingerprint secret') + sys.exit(1) + except (urllib.error.URLError, socket.timeout): + print_line(b'vcs', b'Unable to retrieve current hg.mozilla.org fingerprint' + b'using the secret service, using fallback instead.') + # XXX This fingerprint will not be accurate if running on an old + # revision after the server fingerprint has changed. + secret = {'secret': FALLBACK_FINGERPRINT} + + hgmo_fingerprint = secret['secret']['fingerprints'] + args.extend([ + '--config', 'hostsecurity.hg.mozilla.org:fingerprints=%s' % hgmo_fingerprint, + ]) + + if base_repo: + args.extend(['--upstream', base_repo]) + if sparse_profile: + args.extend(['--sparseprofile', sparse_profile]) + + dest = os.path.abspath(dest) + args.extend([ + revision_flag, revision_value, + source_repo, dest, + ]) + + res = run_and_prefix_output(b'vcs', args, + extra_env={'PYTHONUNBUFFERED': '1'}) + if res: + sys.exit(res) + + # Update the current revision hash and ensure that it is well formed. + revision = subprocess.check_output( + [hg_bin, 'log', + '--rev', '.', + '--template', '{node}'], + cwd=dest, + # Triggers text mode on Python 3. + universal_newlines=True) + + assert re.match('^[a-f0-9]{40}$', revision) + + msg = ("TinderboxPrint:" + "{revision}\n".format(revision=revision, + source_repo=source_repo, + repo_name=source_repo.split('/')[-1])) + + print_line(b'vcs', msg.encode('utf-8')) + + return revision + + +def fetch_artifacts(): + print_line(b'fetches', b'fetching artifacts\n') + + fetch_content = shutil.which('fetch-content') + if not fetch_content and os.environ.get('GECKO_PATH'): + fetch_content = os.path.join(os.environ['GECKO_PATH'], 'taskcluster', + 'scripts', 'misc', 'fetch-content') + + if not fetch_content or not os.path.isfile(fetch_content): + fetch_content = os.path.join(os.path.dirname(__file__), + 'fetch-content') + + if not os.path.isfile(fetch_content): + print(FETCH_CONTENT_NOT_FOUND) + sys.exit(1) + + cmd = [sys.executable, '-u', fetch_content, 'task-artifacts'] + res = run_and_prefix_output(b'fetches', cmd) + if res: + sys.exit(res) + + print_line(b'fetches', b'finished fetching artifacts\n') + + +def add_vcs_arguments(parser, project, name): + """Adds arguments to ArgumentParser to control VCS options for a project.""" + + parser.add_argument('--%s-checkout' % project, + help='Directory where %s checkout should be created' % + name) + parser.add_argument('--%s-sparse-profile' % project, + help='Path to sparse profile for %s checkout' % name) + + +def resolve_checkout_url(base_repo, head_repo): + """Resolve the Mercurial URL to perform a checkout against, either the + public hg.mozilla.org service or a CI-only regional mirror. + + The config will be of the form: + { + "aws/us-west-2": { # key built from `TASKCLUSTER_WORKER_LOCATION` variable + "rate": 0.5, + "domain": "us-west-2.hgmointernal.net" + }, + "google/us-central1": {...} + } + """ + worker_location = os.getenv('TASKCLUSTER_WORKER_LOCATION') + if not worker_location: + print_line(b'vcs', b'TASKCLUSTER_WORKER_LOCATION environment variable not set; ' + b'using public hg.mozilla.org service\n') + return base_repo, head_repo + + try: + worker_location = json.loads(worker_location) + except json.JSONDecodeError: + print_line(b'vcs', b'Could not decode TASKCLUSTER_WORKER_LOCATION environment variable ' + b'as JSON. Content: %s\n' % worker_location.encode('utf-8')) + print_line(b'vcs', b'using public hg.mozilla.org service\n') + return base_repo, head_repo + + if 'cloud' not in worker_location or 'region' not in worker_location: + print_line(b'vcs', b'TASKCLUSTER_WORKER_LOCATION missing required keys; ' + b'using public hg.mozilla.org service\n') + return base_repo, head_repo + + config_key = '%(cloud)s/%(region)s' % worker_location + + try: + print_line(b'vcs', b'fetching hgmointernal config from %s\n' % + HGMOINTERNAL_CONFIG_URL.encode('utf-8')) + + # Get the hgmointernal config Taskcluster secret + res = urllib.request.urlopen(HGMOINTERNAL_CONFIG_URL, timeout=10) + hgmointernal_config = json.loads(res.read().decode('utf-8'))['secret'] + + # Use public hg service if region not yet supported + if config_key not in hgmointernal_config: + print_line(b'vcs', b'region %s not yet supported; using public ' + b'hg.mozilla.org service\n' % config_key.encode('utf-8')) + + return base_repo, head_repo + + # Only send a percentage of traffic to the internal mirror + rate = float(hgmointernal_config[config_key]['rate']) + + if random.random() > rate: + print_line(b'vcs', b'hgmointernal rate miss; using ' + b'public hg.mozilla.org service\n') + return base_repo, head_repo + + print_line(b'vcs', b'hgmointernal rate hit; cloning from ' + b'private hgweb mirror\n') + + mirror_domain = hgmointernal_config[config_key]['domain'] + + if base_repo and base_repo.startswith('https://hg.mozilla.org'): + base_repo = base_repo.replace('hg.mozilla.org', mirror_domain, 1) + + if head_repo and head_repo.startswith('https://hg.mozilla.org'): + head_repo = head_repo.replace('hg.mozilla.org', mirror_domain, 1) + + return base_repo, head_repo + + except (KeyError, ValueError): + print_line(b'vcs', b'invalid JSON in hgmointernal config; ' + b'falling back to public hg.mozilla.org service\n') + + except (urllib.error.URLError, socket.timeout): + print_line(b'vcs', b'Unable to retrieve hgmointernal config using ' + b'the secret service; falling back to public hg.mozilla.org ' + b'service\n') + + return base_repo, head_repo + + +def collect_vcs_options(args, project): + checkout = getattr(args, '%s_checkout' % project) + sparse_profile = getattr(args, '%s_sparse_profile' % project) + + env_prefix = project.upper() + + base_repo = os.environ.get('%s_BASE_REPOSITORY' % env_prefix) + head_repo = os.environ.get('%s_HEAD_REPOSITORY' % env_prefix) + revision = os.environ.get('%s_HEAD_REV' % env_prefix) + branch = os.environ.get('%s_HEAD_REF' % env_prefix) + + store_path = os.environ.get('HG_STORE_PATH') + + # Expand ~ in some paths. + if checkout: + checkout = os.path.expanduser(checkout) + if store_path: + store_path = os.path.expanduser(store_path) + + # Some callers set the base repository to mozilla-central for historical + # reasons. Switch to mozilla-unified because robustcheckout works best + # with it. + if base_repo == 'https://hg.mozilla.org/mozilla-central': + base_repo = 'https://hg.mozilla.org/mozilla-unified' + + # No need to check the hgmointernal config if we aren't performing + # a checkout. + if checkout: + base_repo, head_repo = resolve_checkout_url(base_repo, head_repo) + + return { + 'store-path': store_path, + 'project': project, + 'env-prefix': env_prefix, + 'checkout': checkout, + 'sparse-profile': sparse_profile, + 'base-repo': base_repo, + 'head-repo': head_repo, + 'revision': revision, + 'branch': branch, + } + + +def vcs_checkout_from_args(args, project): + options = collect_vcs_options(args, project) + + if not options['checkout']: + if options['branch'] and not options['revision']: + print('task should be defined in terms of non-symbolic revision') + sys.exit(1) + return + + os.environ['%s_HEAD_REV' % options['env-prefix']] = vcs_checkout( + options['head-repo'], + options['checkout'], + options['store-path'], + base_repo=options['base-repo'], + revision=options['revision'], + fetch_hgfingerprint=args.fetch_hgfingerprint, + branch=options['branch'], + sparse_profile=options['sparse-profile']) + + +def maybe_run_resource_monitoring(): + """Run the resource monitor if available. + + Discussion in https://github.com/taskcluster/taskcluster-rfcs/pull/160 + and https://bugzil.la/1648051 + """ + if 'MOZ_FETCHES' not in os.environ: + return + if 'RESOURCE_MONITOR_OUTPUT' not in os.environ: + return + + prefix = b'resource_monitor' + + executable = '{}/resource-monitor/resource-monitor{}'.format( + os.environ.get('MOZ_FETCHES_DIR'), '.exe' if IS_WINDOWS else '') + + if not os.path.exists(executable) or not os.access(executable, os.X_OK): + print_line(prefix, b"%s not executable\n" % executable.encode('utf-8')) + return + args = [ + executable, + '-process', + str(os.getpid()), + '-output', + os.environ["RESOURCE_MONITOR_OUTPUT"], + ] + print_line(prefix, b"Resource monitor starting: %s\n" % str(args).encode('utf-8')) + # Avoid environment variables the payload doesn't need. + del os.environ['RESOURCE_MONITOR_OUTPUT'] + + # Without CREATE_NEW_PROCESS_GROUP Windows signals will attempt to kill run-task, too. + process = subprocess.Popen(args, + bufsize=0, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if IS_WINDOWS else 0, + cwd=os.getcwd()) + + def capture_output(): + fh = io.TextIOWrapper(process.stdout, encoding='latin1') + while True: + data = fh.readline().encode('latin1') + if data == b'': + break + print_line(prefix, data) + + monitor_process = Thread(target=capture_output) + monitor_process.start() + return process + + +def main(args): + print_line(b'setup', b'run-task started in %s\n' % os.getcwd().encode('utf-8')) + running_as_root = IS_POSIX and os.getuid() == 0 + + # Set a reasonable limit to the number of open files. + # Running under docker inherits the system defaults, which are not subject + # to the "standard" limits set by pam_limits.so, and while they work well + # for servers that may receive a lot of connections, they cause performance + # problems for things that close file descriptors before forking (for good + # reasons), like python's `subprocess.Popen(..., close_fds=True)` (and while + # the default was close_fds=False in python2, that changed in python3). + # In some cases, Firefox does the same thing when spawning subprocesses. + # Processes spawned by this one will inherit the limit set here. + try: + import resource + # Keep the hard limit the same, though, allowing processes to change their + # soft limit if they need to (Firefox does, for instance). + (soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE) + limit = os.environ.get('MOZ_LIMIT_NOFILE') + if limit: + limit = int(limit) + else: + # If no explicit limit is given, use 1024 if it's less than the current + # soft limit. For instance, the default on macOS is 256, so we'd pick + # that rather than 1024. + limit = min(soft, 1024) + # Now apply the limit, if it's different from the original one. + if limit != soft: + resource.setrlimit(resource.RLIMIT_NOFILE, (limit, hard)) + except ImportError: + # The resource module is UNIX only. + pass + + # Arguments up to '--' are ours. After are for the main task + # to be executed. + try: + i = args.index('--') + our_args = args[0:i] + task_args = args[i + 1:] + except ValueError: + our_args = args + task_args = [] + + parser = argparse.ArgumentParser() + parser.add_argument('--user', default='worker', help='user to run as') + parser.add_argument('--group', default='worker', help='group to run as') + parser.add_argument('--task-cwd', help='directory to run the provided command in') + + add_vcs_arguments(parser, 'gecko', 'Firefox') + add_vcs_arguments(parser, 'comm', 'Comm') + + parser.add_argument('--fetch-hgfingerprint', action='store_true', + help='Fetch the latest hgfingerprint from the secrets store, ' + 'using the taskclsuerProxy') + + args = parser.parse_args(our_args) + + uid = gid = gids = None + if IS_POSIX and running_as_root: + user, group, gids = get_posix_user_group(args.user, args.group) + uid = user.pw_uid + gid = group.gr_gid + + if running_as_root and os.path.exists("/dev/kvm"): + # Ensure kvm permissions for worker, required for Android x86 + st = os.stat("/dev/kvm") + os.chmod("/dev/kvm", st.st_mode | 0o666) + + # Validate caches. + # + # Taskgraph should pass in a list of paths that are caches via an + # environment variable (which we don't want to pass down to child + # processes). + + if 'TASKCLUSTER_CACHES' in os.environ: + caches = os.environ['TASKCLUSTER_CACHES'].split(';') + del os.environ['TASKCLUSTER_CACHES'] + else: + caches = [] + + if 'TASKCLUSTER_UNTRUSTED_CACHES' in os.environ: + untrusted_caches = True + del os.environ['TASKCLUSTER_UNTRUSTED_CACHES'] + else: + untrusted_caches = False + + for cache in caches: + if not os.path.isdir(cache): + print('error: cache %s is not a directory; this should never ' + 'happen' % cache) + return 1 + + if running_as_root: + purge = configure_cache_posix(cache, user, group, untrusted_caches, + running_as_root) + + if purge: + return EXIT_PURGE_CACHE + + if 'TASKCLUSTER_VOLUMES' in os.environ: + volumes = os.environ['TASKCLUSTER_VOLUMES'].split(';') + del os.environ['TASKCLUSTER_VOLUMES'] + else: + volumes = [] + + if volumes and not IS_POSIX: + print('assertion failed: volumes not expected on Windows') + return 1 + + # Sanitize volumes. + for volume in volumes: + # If a volume is a cache, it was dealt with above. + if volume in caches: + print_line(b'volume', b'volume %s is a cache\n' % + volume.encode('utf-8')) + continue + + if running_as_root: + configure_volume_posix(volume, user, group, running_as_root) + + all_caches_and_volumes = set(map(os.path.normpath, caches)) + all_caches_and_volumes |= set(map(os.path.normpath, volumes)) + + def path_in_cache_or_volume(path): + path = os.path.normpath(path) + + while path: + if path in all_caches_and_volumes: + return True + + path, child = os.path.split(path) + if not child: + break + + return False + + def prepare_checkout_dir(checkout): + if not checkout: + return + + # The checkout path becomes the working directory. Since there are + # special cache files in the cache's root directory and working + # directory purging could blow them away, disallow this scenario. + if os.path.exists(os.path.join(checkout, '.cacherequires')): + print('error: cannot perform vcs checkout into cache root: %s' % + checkout) + sys.exit(1) + + # TODO given the performance implications, consider making this a fatal + # error. + if not path_in_cache_or_volume(checkout): + print_line(b'vcs', b'WARNING: vcs checkout path (%s) not in cache ' + b'or volume; performance will likely suffer\n' % + checkout.encode('utf-8')) + + # Ensure the directory for the source checkout exists. + try: + os.makedirs(os.path.dirname(checkout)) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + # And that it is owned by the appropriate user/group. + if running_as_root: + os.chown(os.path.dirname(checkout), uid, gid) + + def prepare_hg_store_path(): + # And ensure the shared store path exists and has proper permissions. + if 'HG_STORE_PATH' not in os.environ: + print('error: HG_STORE_PATH environment variable not set') + sys.exit(1) + + store_path = os.environ['HG_STORE_PATH'] + + if not path_in_cache_or_volume(store_path): + print_line(b'vcs', b'WARNING: HG_STORE_PATH (%s) not in cache or ' + b'volume; performance will likely suffer\n' % + store_path.encode('utf-8')) + + try: + os.makedirs(store_path) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + if running_as_root: + os.chown(store_path, uid, gid) + + prepare_checkout_dir(args.gecko_checkout) + if args.gecko_checkout or args.comm_checkout: + prepare_hg_store_path() + + if IS_POSIX and running_as_root: + # Drop permissions to requested user. + # This code is modeled after what `sudo` was observed to do in a Docker + # container. We do not bother calling setrlimit() because containers have + # their own limits. + print_line(b'setup', b'running as %s:%s\n' % ( + args.user.encode('utf-8'), args.group.encode('utf-8'))) + + os.setgroups(gids) + os.umask(0o22) + os.setresgid(gid, gid, gid) + os.setresuid(uid, uid, uid) + + vcs_checkout_from_args(args, 'gecko') + vcs_checkout_from_args(args, 'comm') + + resource_process = None + + try: + for k in ('GECKO_PATH', 'MOZ_FETCHES_DIR', 'UPLOAD_DIR', 'MOZ_PYTHON_HOME'): + if k in os.environ: + # Normalize paths to use forward slashes. Some shell scripts + # tolerate that better on Windows. + os.environ[k] = os.path.abspath(os.environ[k]).replace(os.sep, '/') + print_line(b'setup', b'%s is %s\n' % ( + k.encode('utf-8'), + os.environ[k].encode('utf-8'))) + + if 'MOZ_FETCHES' in os.environ: + fetch_artifacts() + + # If Python is a fetch dependency, add it to the PATH and setting + # the mozilla-specific MOZ_PYTHON_HOME to relocate binaries. + if 'MOZ_PYTHON_HOME' in os.environ: + + print_line(b'setup', + b'Setting up local python environment\n') + prev = [os.environ['PATH']] if 'PATH' in os.environ else [] + + moz_python_home = os.environ['MOZ_PYTHON_HOME'] + if IS_WINDOWS: + ext = '.exe' + moz_python_bindir = moz_python_home + else: + ext = '' + moz_python_bindir = moz_python_home + '/bin' + + + # just a sanity check + candidate = os.path.join(moz_python_bindir, f'python3{ext}') + if not os.path.exists(candidate): + raise RuntimeError("Inconsistent Python installation: " + "archive found, but no python3 binary " + "detected") + + new = os.environ['PATH'] = os.pathsep.join([moz_python_bindir] + + prev) + + # Relocate the python binary. Standard way uses PYTHONHOME, but + # this conflicts with system python (e.g. used by hg) so we + # maintain a small patch to use MOZPYTHONHOME instead. + os.environ['MOZPYTHONHOME'] = moz_python_home + + print_line(b'setup', + b'updated PATH with python artifact: ' + + new.encode() + b'\n') + + + resource_process = maybe_run_resource_monitoring() + + return run_and_prefix_output(b'task', task_args, cwd=args.task_cwd) + finally: + if resource_process: + print_line(b'resource_monitor', b'terminating\n') + if IS_WINDOWS: + # .terminate() on Windows is not a graceful shutdown, due to + # differences in signals. CTRL_BREAK_EVENT will work provided + # the subprocess is in a different process group, so this script + # isn't also killed. + os.kill(resource_process.pid, signal.CTRL_BREAK_EVENT) + else: + resource_process.terminate() + resource_process.wait() + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/taskcluster/scripts/tester/run-wizard b/taskcluster/scripts/tester/run-wizard new file mode 100755 index 0000000000..4ec5a5d337 --- /dev/null +++ b/taskcluster/scripts/tester/run-wizard @@ -0,0 +1,176 @@ +#!/usr/bin/env python3 +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this, +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import datetime +import os +import subprocess +import sys +import time +from distutils.spawn import find_executable +from textwrap import wrap + +here = os.path.dirname(os.path.abspath(__file__)) +MOZHARNESS_WORKDIR = os.path.expanduser(os.path.join('~', 'workspace', 'build')) + +MACH_SETUP_FINISHED = """ +Mozharness has finished downloading the build and tests to: +{} + +A limited mach environment has also been set up and added to the $PATH, but +it may be missing the command you need. To see a list of commands, run: + $ mach help +""".lstrip().format(MOZHARNESS_WORKDIR) + +MACH_SETUP_FAILED = """ +Could not set up mach environment, no mach binary detected. +""".lstrip() + + +def call(cmd, **kwargs): + print(" ".join(cmd)) + return subprocess.call(cmd, **kwargs) + + +def wait_for_run_mozharness(timeout=60): + starttime = datetime.datetime.now() + while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): + if os.path.isfile(os.path.join(here, 'run-mozharness')): + break + time.sleep(0.2) + else: + print("Timed out after %d seconds waiting for the 'run-mozharness' binary" % timeout) + return 1 + + +def setup_mach_environment(): + mach_src = os.path.join(MOZHARNESS_WORKDIR, 'tests', 'mach') + if not os.path.isfile(mach_src): + return 1 + + mach_dest = os.path.expanduser(os.path.join('~', 'bin', 'mach')) + if os.path.exists(mach_dest): + os.remove(mach_dest) + os.symlink(mach_src, mach_dest) + return 0 + + +def run_mozharness(*args): + wait_for_run_mozharness() + try: + return call(['run-mozharness'] + list(args)) + finally: + setup_mach_environment() + + +def setup(): + """Run the mozharness script without the 'run-tests' action. + + This will do all the necessary setup steps like creating a virtualenv and + downloading the tests and firefox binary. But it stops before running the + tests. + """ + status = run_mozharness('--no-run-tests') + + if find_executable('mach'): + print(MACH_SETUP_FINISHED) + else: + print(MACH_SETUP_FAILED) + + return status + + +def clone(): + """Clone the correct gecko repository and update to the proper revision.""" + base_repo = os.environ['GECKO_HEAD_REPOSITORY'] + dest = os.path.expanduser(os.path.join('~', 'gecko')) + + # Specify method to checkout a revision. This defaults to revisions as + # SHA-1 strings, but also supports symbolic revisions like `tip` via the + # branch flag. + if os.environ.get('GECKO_HEAD_REV'): + revision_flag = b'--revision' + revision = os.environ['GECKO_HEAD_REV'] + elif os.environ.get('GECKO_HEAD_REF'): + revision_flag = b'--branch' + revision = os.environ['GECKO_HEAD_REF'] + else: + print('revision is not specified for checkout') + return 1 + + # TODO Bug 1301382 - pin hg.mozilla.org fingerprint. + call([ + b'/usr/bin/hg', b'robustcheckout', + b'--sharebase', os.environ['HG_STORE_PATH'], + b'--purge', + b'--upstream', b'https://hg.mozilla.org/mozilla-unified', + revision_flag, revision, + base_repo, dest + ]) + print("Finished cloning to {} at revision {}.".format(dest, revision)) + + +def exit(): + pass + + +OPTIONS = [ + ('Resume task', run_mozharness, + "Resume the original task without modification. This can be useful for " + "passively monitoring it from another shell."), + ('Setup task', setup, + "Setup the task (download the application and tests) but don't run the " + "tests just yet. The tests can be run with a custom configuration later. " + "This will provide a mach environment (experimental)."), + ('Clone gecko', clone, + "Perform a clone of gecko using the task's repo and update it to the " + "task's revision."), + ('Exit', exit, "Exit this wizard and return to the shell.") +] + + +def _fmt_options(): + max_line_len = 60 + max_name_len = max(len(o[0]) for o in OPTIONS) + + # TODO Pad will be off if there are more than 9 options. + pad = ' ' * (max_name_len+6) + + msg = [] + for i, (name, _, desc) in enumerate(OPTIONS): + desc = wrap(desc, width=max_line_len) + desc = [desc[0]] + [pad + l for l in desc[1:]] + + optstr = '{}) {} - {}\n'.format( + i+1, name.ljust(max_name_len), '\n'.join(desc)) + msg.append(optstr) + msg.append("Select one of the above options: ") + return '\n'.join(msg) + + +def wizard(): + print("This wizard can help you get started with some common debugging " + "workflows.\nWhat would you like to do?\n") + print(_fmt_options(), end="") + choice = None + while True: + choice = raw_input().decode('utf8') + try: + choice = int(choice)-1 + if 0 <= choice < len(OPTIONS): + break + except ValueError: + pass + + print("Must provide an integer from 1-{}:".format(len(OPTIONS))) + + func = OPTIONS[choice][1] + ret = func() + + print("Use the 'run-wizard' command to start this wizard again.") + return ret + + +if __name__ == '__main__': + sys.exit(wizard()) diff --git a/taskcluster/scripts/tester/test-linux.sh b/taskcluster/scripts/tester/test-linux.sh new file mode 100755 index 0000000000..1d87c1f2b8 --- /dev/null +++ b/taskcluster/scripts/tester/test-linux.sh @@ -0,0 +1,287 @@ +#! /bin/bash -xe + +set -x -e + +echo "running as" $(id) + +# Detect distribution +. /etc/os-release +if [ "${ID}" == "ubuntu" ]; then + DISTRIBUTION="Ubuntu" +elif [ "${ID}" == "debian" ]; then + DISTRIBUTION="Debian" +else + DISTRIBUTION="Unknown" +fi + +# Detect release version if supported +FILE="/etc/lsb-release" +if [ -e $FILE ] ; then + . /etc/lsb-release + RELEASE="${DISTRIB_RELEASE}" +else + RELEASE="unknown" +fi + +#### +# Taskcluster friendly wrapper for performing fx desktop tests via mozharness. +#### + +# Inputs, with defaults + +: GECKO_PATH ${GECKO_PATH} +: MOZHARNESS_PATH ${MOZHARNESS_PATH} +: MOZHARNESS_URL ${MOZHARNESS_URL} +: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT} +: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG} +: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS} +: MOZ_ENABLE_WAYLAND ${MOZ_ENABLE_WAYLAND} +: NEED_XVFB ${NEED_XVFB:=true} +: NEED_WINDOW_MANAGER ${NEED_WINDOW_MANAGER:=false} +: NEED_PULSEAUDIO ${NEED_PULSEAUDIO:=false} +: NEED_COMPIZ ${NEED_COPMPIZ:=false} +: START_VNC ${START_VNC:=false} +: TASKCLUSTER_INTERACTIVE ${TASKCLUSTER_INTERACTIVE:=false} +: mozharness args "${@}" +: WORKING_DIR ${WORKING_DIR:=$(pwd)} +: WORKSPACE ${WORKSPACE:=${WORKING_DIR%/}/workspace} + +set -v +mkdir -p "$WORKSPACE" +cd "$WORKSPACE" + +fail() { + echo # make sure error message is on a new line + echo "[test-linux.sh:error]" "${@}" + exit 1 +} + +# start pulseaudio +maybe_start_pulse() { + if $NEED_PULSEAUDIO; then + # call pulseaudio for Ubuntu only + if [ $DISTRIBUTION == "Ubuntu" ]; then + pulseaudio --daemonize --log-level=4 --log-time=1 --log-target=stderr --start --fail -vvvvv --exit-idle-time=-1 --cleanup-shm --dump-conf + fi + fi +} + +# test required parameters are supplied +if [ -z "${MOZHARNESS_PATH}" -a -z "${MOZHARNESS_URL}" ]; then + fail "MOZHARNESS_PATH or MOZHARNESS_URL must be defined"; +fi + +if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi +if [[ -z ${MOZHARNESS_CONFIG} ]]; then fail "MOZHARNESS_CONFIG is not set"; fi + +if [ $MOZ_ENABLE_WAYLAND ]; then + NEED_XVFB=true + NEED_WINDOW_MANAGER=true +fi + +# make sure artifact directories exist +mkdir -p "$WORKSPACE/logs" +mkdir -p "$WORKING_DIR/artifacts/public" +mkdir -p "$WORKSPACE/build/blobber_upload_dir" + +cleanup_mutter() { + local mutter_pids=`ps aux | grep 'mutter --wayland' | grep -v grep | awk '{print $2}'` + if [ "$mutter_pids" != "" ]; then + echo "Killing the following Mutter processes: $mutter_pids" + sudo kill $mutter_pids + else + echo "No Mutter processes to kill" + fi +} + +cleanup() { + local rv=$? + if [[ -s $HOME/.xsession-errors ]]; then + # To share X issues + cp "$HOME/.xsession-errors" "$WORKING_DIR/artifacts/public/xsession-errors.log" + fi + if [ $MOZ_ENABLE_WAYLAND ]; then + cleanup_mutter + fi + if $NEED_XVFB; then + cleanup_xvfb + fi + exit $rv +} +trap cleanup EXIT INT + +# Download mozharness with exponential backoff +# curl already applies exponential backoff, but not for all +# failed cases, apparently, as we keep getting failed downloads +# with 404 code. +download_mozharness() { + local max_attempts=10 + local timeout=1 + local attempt=0 + + echo "Downloading mozharness" + + while [[ $attempt < $max_attempts ]]; do + if curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then + rm -rf mozharness + if unzip -q mozharness.zip -d mozharness; then + return 0 + fi + echo "error unzipping mozharness.zip" >&2 + else + echo "failed to download mozharness zip" >&2 + fi + echo "Download failed, retrying in $timeout seconds..." >&2 + sleep $timeout + timeout=$((timeout*2)) + attempt=$((attempt+1)) + done + + fail "Failed to download and unzip mozharness" +} + +# Download mozharness if we're told to. +if [ ${MOZHARNESS_URL} ]; then + download_mozharness + rm mozharness.zip + + if ! [ -d mozharness ]; then + fail "mozharness zip did not contain mozharness/" + fi + + MOZHARNESS_PATH=`pwd`/mozharness +fi + +# run XVfb in the background, if necessary +if $NEED_XVFB; then + # note that this file is not available when run under native-worker + . $HOME/scripts/xvfb.sh + start_xvfb '1600x1200x24' 0 +fi + +if $START_VNC; then + x11vnc > "$WORKING_DIR/artifacts/public/x11vnc.log" 2>&1 & +fi + +if $NEED_WINDOW_MANAGER; then + # This is read by xsession to select the window manager + . /etc/lsb-release + if [ $DISTRIBUTION == "Ubuntu" ] && [ $RELEASE == "16.04" ]; then + echo DESKTOP_SESSION=ubuntu > $HOME/.xsessionrc + elif [ $DISTRIBUTION == "Ubuntu" ] && [ $RELEASE == "18.04" ]; then + echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc + echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc + if [ $MOZ_ENABLE_WAYLAND ]; then + echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc + else + echo export XDG_SESSION_TYPE=x11 >> $HOME/.xsessionrc + fi + else + : + fi + + # DISPLAY has already been set above + # XXX: it would be ideal to add a semaphore logic to make sure that the + # window manager is ready + /etc/X11/Xsession 2>&1 & + + # Turn off the screen saver and screen locking + gsettings set org.gnome.desktop.screensaver idle-activation-enabled false + gsettings set org.gnome.desktop.screensaver lock-enabled false + gsettings set org.gnome.desktop.screensaver lock-delay 3600 + + # Disable the screen saver + xset s off s reset + + # This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to + # store secrets. Firefox uses libsecret to store a key that protects sensitive information like + # credit card numbers. + if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then + # if not found, launch a new one + eval `dbus-launch --sh-syntax` + fi + eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets` + + # Run mutter as nested wayland compositor to provide Wayland environment + # on top of XVfb. + if [ $MOZ_ENABLE_WAYLAND ]; then + env | grep "DISPLAY" + export XDG_RUNTIME_DIR=$WORKING_DIR + mutter --display=:0 --wayland --nested & + export WAYLAND_DISPLAY=wayland-0 + retry_count=0 + max_retries=5 + until [ $retry_count -gt $max_retries ]; do + if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + retry_count=$(($max_retries + 1)) + else + retry_count=$(($retry_count + 1)) + echo "Waiting for Mutter, retry: $retry_count" + sleep 2 + fi + done + fi +fi + +if [[ $NEED_COMPIZ == true ]] && [[ $RELEASE == 16.04 ]]; then + compiz 2>&1 & +elif [[ $NEED_COMPIZ == true ]] && [[ $RELEASE == 18.04 ]]; then + compiz --replace 2>&1 & +fi + +# Bug 1607713 - set cursor position to 0,0 to avoid odd libx11 interaction +if [ $NEED_WINDOW_MANAGER ] && [ $DISPLAY == ':0' ]; then + xwit -root -warp 0 0 +fi + +maybe_start_pulse + +# For telemetry purposes, the build process wants information about the +# source it is running +export MOZ_SOURCE_REPO="${GECKO_HEAD_REPOSITORY}" +export MOZ_SOURCE_CHANGESET="${GECKO_HEAD_REV}" + +# support multiple, space delimited, config files +config_cmds="" +for cfg in $MOZHARNESS_CONFIG; do + config_cmds="${config_cmds} --config-file ${MOZHARNESS_PATH}/configs/${cfg}" +done + +if [ -n "$MOZHARNESS_OPTIONS" ]; then + options="" + for option in $MOZHARNESS_OPTIONS; do + options="$options --$option" + done +fi + +# Use |mach python| if a source checkout exists so in-tree packages are +# available. +[[ -x "${GECKO_PATH}/mach" ]] && python="${PYTHON:-python3} ${GECKO_PATH}/mach python" || python="${PYTHON:-python2.7}" + +# Save the computed mozharness command to a binary which is useful for +# interactive mode. +mozharness_bin="$HOME/bin/run-mozharness" +mkdir -p $(dirname $mozharness_bin) + +echo -e "#!/usr/bin/env bash +# Some mozharness scripts assume base_work_dir is in +# the current working directory, see bug 1279237 +cd "$WORKSPACE" +cmd=\"${python} ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} ${config_cmds} ${options} ${@} \${@}\" +echo \"Running: \${cmd}\" +exec \${cmd}" > ${mozharness_bin} +chmod +x ${mozharness_bin} + +# In interactive mode, the user will be prompted with options for what to do. +if ! $TASKCLUSTER_INTERACTIVE; then + # run the given mozharness script and configs, but pass the rest of the + # arguments in from our own invocation + ${mozharness_bin}; +fi + +# Run a custom mach command (this is typically used by action tasks to run +# harnesses in a particular way) +if [ "$CUSTOM_MACH_COMMAND" ]; then + eval "'$WORKSPACE/build/venv/bin/python' '$WORKSPACE/build/tests/mach' ${CUSTOM_MACH_COMMAND} ${@}" + exit $? +fi diff --git a/taskcluster/test/conftest.py b/taskcluster/test/conftest.py new file mode 100644 index 0000000000..9001958c6a --- /dev/null +++ b/taskcluster/test/conftest.py @@ -0,0 +1,125 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import json +import logging +import os + +import pytest +from gecko_taskgraph.util.bugbug import BUGBUG_BASE_URL +from gecko_taskgraph.util.hg import PUSHLOG_PUSHES_TMPL +from responses import RequestsMock +from responses import logger as rsps_logger +from taskgraph.generator import TaskGraphGenerator +from taskgraph.parameters import parameters_loader + +here = os.path.abspath(os.path.dirname(__file__)) + + +@pytest.fixture(scope="session") +def responses(): + rsps_logger.setLevel(logging.WARNING) + with RequestsMock(assert_all_requests_are_fired=False) as rsps: + yield rsps + + +@pytest.fixture(scope="session") +def datadir(): + return os.path.join(here, "data") + + +@pytest.fixture(scope="session") +def create_tgg(responses, datadir): + def inner(parameters=None, overrides=None): + params = parameters_loader(parameters, strict=False, overrides=overrides) + tgg = TaskGraphGenerator(None, params) + + # Mock out certain requests as they may depend on a revision that does + # not exist on hg.mozilla.org. + mock_requests = {} + + # bugbug /push/schedules + url = BUGBUG_BASE_URL + "/push/{project}/{head_rev}/schedules".format( + **tgg.parameters + ) + mock_requests[url] = "bugbug-push-schedules.json" + + # files changed + url = "{head_repository}/json-automationrelevance/{head_rev}".format( + **tgg.parameters + ) + mock_requests[url] = "automationrelevance.json" + + url = PUSHLOG_PUSHES_TMPL.format( + repository=tgg.parameters["head_repository"], + push_id_start=int(tgg.parameters["pushlog_id"]) - 2, + push_id_end=int(tgg.parameters["pushlog_id"]) - 1, + ) + mock_requests[url] = "pushes.json" + + for url, filename in mock_requests.items(): + with open(os.path.join(datadir, filename)) as fh: + responses.add( + responses.GET, + url, + json=json.load(fh), + status=200, + ) + + # Still allow other real requests. + responses.add_passthru("https://hg.mozilla.org") + responses.add_passthru("https://firefox-ci-tc.services.mozilla.com") + return tgg + + return inner + + +@pytest.fixture(scope="module") +def tgg(request, create_tgg): + if not hasattr(request.module, "PARAMS"): + pytest.fail("'tgg' fixture requires a module-level 'PARAMS' variable") + + tgg = create_tgg(overrides=request.module.PARAMS) + return tgg + + +@pytest.fixture(scope="module") +def params(tgg): + return tgg.parameters + + +@pytest.fixture(scope="module") +def full_task_graph(tgg): + return tgg.full_task_graph + + +@pytest.fixture(scope="module") +def optimized_task_graph(full_task_graph, tgg): + return tgg.optimized_task_graph + + +@pytest.fixture(scope="session") +def filter_tasks(): + def inner(graph, func): + return filter(func, graph.tasks.values()) + + return inner + + +@pytest.fixture(scope="session") +def print_dependents(): + def inner(graph, label, indent=""): + if indent == "": + print(f"Dependent graph for {label}:") + + dependents = set() + for task in graph.tasks.values(): + if label in task.dependencies.values(): + dependents.add(task.label) + + print(f"{indent}{label}") + if dependents: + for dep in sorted(dependents): + inner(graph, dep, indent=indent + " ") + + return inner diff --git a/taskcluster/test/data/automationrelevance.json b/taskcluster/test/data/automationrelevance.json new file mode 100644 index 0000000000..36289ded18 --- /dev/null +++ b/taskcluster/test/data/automationrelevance.json @@ -0,0 +1,169 @@ +{ + "changesets": [ + { + "author": "User \u003cuser@example.com\u003e", + "backsoutnodes": [], + "bugs": [ + { + "no": "1646582", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582" + } + ], + "date": [1593028650.0, 0], + "desc": "Bug 1646582 - Remove nsIRemoteWebProgressRequest since it's not being used anywhere. r=barret\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80127", + "extra": { "branch": "default", "moz-landing-system": "lando" }, + "files": [ + "dom/ipc/BrowserChild.cpp", + "dom/ipc/BrowserParent.cpp", + "dom/ipc/PBrowser.ipdl", + "dom/ipc/RemoteWebProgressRequest.cpp", + "dom/ipc/RemoteWebProgressRequest.h", + "dom/ipc/components.conf", + "dom/ipc/moz.build", + "dom/ipc/nsIRemoteWebProgressRequest.idl", + "dom/ipc/tests/browser.ini", + "dom/ipc/tests/browser_ElapsedTime.js", + "dom/ipc/tests/elapsed_time.sjs" + ], + "landingsystem": "lando", + "node": "9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e", + "parents": ["226b1c518cba596226c80e4475a60ac3a0bfd198"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e", + "phase": "public", + "pushdate": [1593029535, 0], + "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182", + "pushid": 119873, + "pushuser": "user@example.com", + "rev": 537254, + "reviewers": [{ "name": "barret", "revset": "reviewer(barret)" }], + "treeherderrepo": "autoland", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland" + }, + { + "author": "User \u003cuser@example.com\u003e", + "backsoutnodes": [], + "bugs": [ + { + "no": "1646582", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582" + } + ], + "date": [1593028695.0, 0], + "desc": "Bug 1646582 - Remove DOM(Inner)WindowID from nsIWebProgress. r=nika\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80128", + "extra": { "branch": "default", "moz-landing-system": "lando" }, + "files": [ + "docshell/base/BrowsingContextWebProgress.cpp", + "dom/ipc/BrowserChild.cpp", + "dom/ipc/BrowserParent.cpp", + "dom/ipc/PBrowser.ipdl", + "dom/ipc/RemoteWebProgress.cpp", + "dom/ipc/RemoteWebProgress.h", + "dom/ipc/WindowGlobalParent.cpp", + "dom/ipc/nsIRemoteWebProgress.idl", + "toolkit/components/sessionstore/SessionStoreListener.cpp", + "toolkit/components/statusfilter/nsBrowserStatusFilter.cpp", + "uriloader/base/nsDocLoader.cpp", + "uriloader/base/nsIWebProgress.idl" + ], + "landingsystem": "lando", + "node": "1a749d5aaa71752a9f1d8296b7c32a2a30bccc84", + "parents": ["9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e", + "phase": "public", + "pushdate": [1593029535, 0], + "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182", + "pushid": 119873, + "pushuser": "user@example.com", + "rev": 537255, + "reviewers": [{ "name": "nika", "revset": "reviewer(nika)" }], + "treeherderrepo": "autoland", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland" + }, + { + "author": "User \u003cuser@example.com\u003e", + "backsoutnodes": [], + "bugs": [ + { + "no": "1646582", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582" + } + ], + "date": [1593028744.0, 0], + "desc": "Bug 1646582 - Remove RemoteWebProgressManager. r=nika,Gijs\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80129", + "extra": { "branch": "default", "moz-landing-system": "lando" }, + "files": [ + "devtools/client/responsive/browser/swap.js", + "dom/interfaces/base/nsIBrowser.idl", + "dom/ipc/BrowserParent.cpp", + "dom/ipc/BrowserParent.h", + "dom/ipc/RemoteWebProgress.cpp", + "dom/ipc/RemoteWebProgress.h", + "dom/ipc/WindowGlobalParent.cpp", + "dom/ipc/components.conf", + "dom/ipc/moz.build", + "dom/ipc/nsIRemoteWebProgress.idl", + "netwerk/ipc/DocumentLoadListener.cpp", + "netwerk/ipc/DocumentLoadListener.h", + "security/manager/ssl/nsSecureBrowserUI.cpp", + "toolkit/content/widgets/browser-custom-element.js", + "toolkit/modules/RemoteWebProgress.jsm", + "toolkit/modules/moz.build", + "tools/lint/eslint/modules.json" + ], + "landingsystem": "lando", + "node": "14b9b4515aabcb9060ece1a988c7993ef65a0bdc", + "parents": ["1a749d5aaa71752a9f1d8296b7c32a2a30bccc84"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e", + "phase": "public", + "pushdate": [1593029535, 0], + "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182", + "pushid": 119873, + "pushuser": "user@example.com", + "rev": 537256, + "reviewers": [ + { "name": "nika", "revset": "reviewer(nika)" }, + { "name": "Gijs", "revset": "reviewer(Gijs)" } + ], + "treeherderrepo": "autoland", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland" + }, + { + "author": "User \u003cuser@example.com\u003e", + "backsoutnodes": [], + "bugs": [ + { + "no": "1646582", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582" + } + ], + "date": [1593028772.0, 0], + "desc": "Bug 1646582 - Pull the inner window id from the WindowGlobalParent, rather than passing it across PBrowser for updateForLocationChange. r=nika,Gijs\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80131", + "extra": { "branch": "default", "moz-landing-system": "lando" }, + "files": [ + "devtools/client/responsive/browser/tunnel.js", + "dom/interfaces/base/nsIBrowser.idl", + "dom/ipc/BrowserChild.cpp", + "dom/ipc/BrowserParent.cpp", + "dom/ipc/PBrowser.ipdl", + "toolkit/content/widgets/browser-custom-element.js" + ], + "landingsystem": "lando", + "node": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182", + "parents": ["14b9b4515aabcb9060ece1a988c7993ef65a0bdc"], + "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e", + "phase": "public", + "pushdate": [1593029535, 0], + "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182", + "pushid": 119873, + "pushuser": "user@example.com", + "rev": 537257, + "reviewers": [ + { "name": "nika", "revset": "reviewer(nika)" }, + { "name": "Gijs", "revset": "reviewer(Gijs)" } + ], + "treeherderrepo": "autoland", + "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland" + } + ], + "visible": true +} diff --git a/taskcluster/test/data/bugbug-push-schedules.json b/taskcluster/test/data/bugbug-push-schedules.json new file mode 100644 index 0000000000..2bb448a8ee --- /dev/null +++ b/taskcluster/test/data/bugbug-push-schedules.json @@ -0,0 +1,4632 @@ +{ + "config_groups": { + "accessible/tests/browser/events/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "accessible/tests/browser/fission/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "accessible/tests/browser/mac/browser.ini": [ + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*" + ], + "accessible/tests/browser/scroll/browser.ini": ["test-linux1804-64/opt-*"], + "accessible/tests/browser/states/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "accessible/tests/browser/telemetry/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "accessible/tests/mochitest/a11y.ini": ["test-linux1804-64-qr/opt-*-1proc"], + "accessible/tests/mochitest/actions/a11y.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "accessible/tests/mochitest/tree/a11y.ini": [ + "test-linux1804-64/opt-*-1proc" + ], + "browser/base/content/test/about/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/alerts/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/captivePortal/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/base/content/test/contextMenu/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*" + ], + "browser/base/content/test/favicons/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/forms/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/fullscreen/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "browser/base/content/test/general/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/keyboard/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/base/content/test/pageActions/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "browser/base/content/test/pageinfo/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "browser/base/content/test/performance/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/performance/hidpi/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "browser/base/content/test/performance/io/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/performance/lowdpi/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/base/content/test/popupNotifications/browser.ini": [ + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "browser/base/content/test/popups/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/protectionsUI/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/referrer/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/sanitize/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "browser/base/content/test/siteIdentity/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/static/browser.ini": [ + "test-windows7-32/opt-*", + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/tabPrompts/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/tabcrashed/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/tabs/browser.ini": [ + "test-windows11-64-2009-asan/opt-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "browser/base/content/test/webextensions/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/base/content/test/zoom/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/aboutlogins/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/aboutlogins/tests/chrome/chrome.ini": [ + "test-linux1804-64/debug-*-1proc", + "test-windows11-64-2009/debug-*-1proc" + ], + "browser/components/aboutlogins/tests/unit/xpcshell.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/contextualidentity/test/browser/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/customizableui/test/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows7-32/opt-*", + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-asan/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*", + "test-windows7-32/debug-*" + ], + "browser/components/doh/test/browser/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/downloads/test/browser/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/downloads/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "browser/components/enterprisepolicies/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/enterprisepolicies/tests/browser/disable_app_update/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64/opt-*" + ], + "browser/components/extensions/test/browser/browser-private.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/opt-*" + ], + "browser/components/extensions/test/browser/browser.ini": [ + "test-windows7-32/opt-*", + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "browser/components/extensions/test/mochitest/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-qr/debug-*" + ], + "browser/components/migration/tests/unit/xpcshell.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/opt-*" + ], + "browser/components/newtab/test/browser/abouthomecache/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "browser/components/newtab/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "browser/components/newtab/test/xpcshell/xpcshell.ini": [ + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "browser/components/originattributes/test/browser/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*", + "test-linux1804-64/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-asan/opt-*" + ], + "browser/components/pioneer/test/browser/browser.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/places/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/places/tests/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/opt-*" + ], + "browser/components/preferences/tests/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/debug-*", + "test-windows11-64-2009-asan/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/preferences/tests/siteData/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/protections/test/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "browser/components/resistfingerprinting/test/browser/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "browser/components/resistfingerprinting/test/mochitest/mochitest.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/safebrowsing/content/test/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/search/test/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "browser/components/search/test/browser/google_codes/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "browser/components/search/test/unit/xpcshell.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/components/sessionstore/test/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/components/sessionstore/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/shell/test/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "browser/components/shell/test/chrome.ini": [ + "test-linux1804-64/opt-*-1proc" + ], + "browser/components/ssb/tests/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/components/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/tests/browser/whats_new_page/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "browser/components/tests/unit/xpcshell.ini": [ + "test-windows11-64-2009/opt-*", + "test-windows7-32/debug-*" + ], + "browser/components/touchbar/tests/browser/browser.ini": [ + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*" + ], + "browser/components/translation/test/browser.ini": [ + "test-windows7-32/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/uitour/test/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "browser/components/urlbar/tests/browser-tips/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/components/urlbar/tests/browser/browser.ini": [ + "test-macosx1014-64/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/components/urlbar/tests/unit/xpcshell.ini": [ + "test-linux1804-64-tsan/opt-*", + "test-linux1804-64/opt-*" + ], + "browser/extensions/formautofill/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "browser/extensions/formautofill/test/browser/creditCard/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*" + ], + "browser/extensions/formautofill/test/mochitest/creditCard/mochitest.ini": [ + "test-macosx1014-64/debug-*", + "test-linux1804-64/opt-*" + ], + "browser/extensions/formautofill/test/mochitest/mochitest.ini": [ + "test-macosx1014-64/opt-*", + "test-windows11-64-2009/opt-*" + ], + "browser/extensions/formautofill/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-windows7-32/debug-*" + ], + "browser/extensions/report-site-issue/test/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/modules/test/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "browser/modules/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/opt-*" + ], + "browser/tools/mozscreenshots/controlCenter/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "browser/tools/mozscreenshots/permissionPrompts/browser.ini": [ + "test-linux1804-64/opt-*", + "test-windows11-64-2009/opt-*" + ], + "caps/tests/mochitest/chrome.ini": ["test-linux1804-64/opt-*-1proc"], + "devtools/client/aboutdebugging/test/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "devtools/client/application/test/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "devtools/client/debugger/test/mochitest/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/client/framework/test/browser-enable-popup-devtools-user.ini": [ + "test-windows11-64-2009/opt-*" + ], + "devtools/client/framework/test/browser-enable-popup-new-user.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/framework/test/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/client/framework/test/metrics/browser_metrics_debugger.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/inspector/computed/test/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "devtools/client/inspector/grids/test/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/inspector/markup/test/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "devtools/client/inspector/rules/test/browser_part1.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/inspector/rules/test/browser_part2.ini": [ + "test-windows11-64-2009/opt-*" + ], + "devtools/client/inspector/shared/test/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/inspector/test/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/client/jsonview/test/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "devtools/client/netmonitor/src/har/test/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "devtools/client/netmonitor/test/browser.ini": [ + "test-macosx1014-64/opt-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "devtools/client/responsive/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/client/responsive/test/xpcshell/xpcshell.ini": [ + "test-linux1804-64/opt-*" + ], + "devtools/client/shared/sourceeditor/test/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "devtools/client/shared/test/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "devtools/client/storage/test/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/client/styleeditor/test/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "devtools/client/webconsole/test/browser/_browser_console.ini": [ + "test-windows11-64-2009-asan/opt-*", + "test-linux1804-64/opt-*" + ], + "devtools/client/webconsole/test/browser/_jsterm.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "devtools/client/webconsole/test/browser/_webconsole.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "devtools/server/tests/chrome/chrome.ini": [ + "test-linux1804-64/debug-*-spi-nw-1proc", + "test-windows7-32/opt-*-1proc" + ], + "devtools/server/tests/xpcshell/xpcshell.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "devtools/shared/resources/tests/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "devtools/shared/test-helpers/browser.ini": [ + "test-macosx1014-64/opt-*", + "test-linux1804-64/opt-*" + ], + "devtools/shared/tests/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*" + ], + "devtools/shared/webconsole/test/chrome/chrome.ini": [ + "test-windows7-32/opt-*-1proc" + ], + "docshell/test/browser/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*" + ], + "docshell/test/mochitest/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "docshell/test/navigation/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "docshell/test/navigation/mochitest.ini": [ + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009/opt-*" + ], + "docshell/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*" + ], + "dom/abort/tests/mochitest.ini": ["test-linux1804-64/opt-*"], + "dom/animation/test/mochitest.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64-qr/opt-*" + ], + "dom/base/test/chrome.ini": ["test-linux1804-64/debug-*-spi-nw-1proc"], + "dom/base/test/chrome/chrome.ini": ["test-windows11-64-2009/opt-*-1proc"], + "dom/base/test/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-linux1804-64-asan/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-windows7-32/debug-*" + ], + "dom/broadcastchannel/tests/browser.ini": ["test-windows11-64-2009/opt-*"], + "dom/canvas/test/webgl-conf/generated-mochitest.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/canvas/test/webgl-mochitest/mochitest.ini": [ + "test-linux1804-64/opt-*" + ], + "dom/console/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/credentialmanagement/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/file/ipc/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/file/tests/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*" + ], + "dom/filesystem/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"], + "dom/html/reftests/autofocus/reftest.list": ["test-linux1804-64/opt-*"], + "dom/html/test/browser.ini": ["test-windows11-64-2009/opt-*"], + "dom/html/test/forms/mochitest.ini": ["test-linux1804-64/opt-*"], + "dom/html/test/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-asan/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-macosx1014-64/debug-*" + ], + "dom/indexedDB/test/mochitest.ini": [ + "test-macosx1014-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "dom/ipc/tests/JSProcessActor/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/ipc/tests/JSWindowActor/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "dom/ipc/tests/browser.ini": ["test-windows7-32/opt-*"], + "dom/ipc/tests/chrome.ini": ["test-linux1804-64/debug-*-spi-nw-1proc"], + "dom/ipc/tests/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/l10n/tests/mochitest/browser.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "dom/l10n/tests/mochitest/chrome.ini": [ + "test-linux1804-64/debug-*-spi-nw-1proc" + ], + "dom/localstorage/test/unit/xpcshell.ini": ["test-linux1804-64-qr/opt-*"], + "dom/media/mediacontrol/tests/browser.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "dom/media/mediasource/test/mochitest.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/debug-*-spi", + "test-windows11-64-2009-qr/opt-*" + ], + "dom/media/test/crashtests/crashtests.list": ["test-linux1804-64/opt-*"], + "dom/media/test/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009/opt-*-spi", + "test-linux1804-64/opt-*-spi" + ], + "dom/media/webaudio/test/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/debug-*-spi", + "test-windows11-64-2009-qr/opt-*-spi" + ], + "dom/media/webrtc/tests/mochitests/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*-spi", + "test-windows11-64-2009-qr/opt-*-spi", + "test-macosx1014-64/opt-*-spi", + "test-windows7-32/debug-*" + ], + "dom/media/webvtt/tests/xpcshell.ini": ["test-linux1804-64-qr/opt-*"], + "dom/network/tests/chrome.ini": ["test-linux1804-64-qr/opt-*-1proc"], + "dom/performance/tests/mochitest.ini": ["test-linux1804-64/opt-*"], + "dom/permission/tests/mochitest.ini": [ + "test-linux1804-64/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "dom/presentation/tests/mochitest/chrome.ini": [ + "test-linux1804-64-qr/opt-*-1proc" + ], + "dom/presentation/tests/mochitest/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-qr/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-android-em-7.0-x86_64/debug-geckoview-*", + "test-android-em-7.0-x86_64-qr/opt-geckoview-*" + ], + "dom/presentation/tests/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/promise/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/push/test/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-qr/debug-*", + "test-linux1804-64/opt-*" + ], + "dom/push/test/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "dom/reporting/tests/browser.ini": ["test-windows11-64-2009/opt-*"], + "dom/security/test/csp/mochitest.ini": [ + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009/opt-*" + ], + "dom/security/test/general/browser.ini": ["test-linux1804-64/debug-*"], + "dom/security/test/general/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/security/test/https-only/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "dom/security/test/mixedcontentblocker/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "dom/security/test/unit/xpcshell.ini": ["test-linux1804-64/debug-*-spi-nw"], + "dom/serviceworkers/test/browser.ini": ["test-windows11-64-2009/opt-*"], + "dom/serviceworkers/test/mochitest.ini": [ + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "dom/system/tests/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/tests/browser/browser.ini": [ + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-windows11-64-2009-asan/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/debug-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "dom/tests/mochitest/ajax/scriptaculous/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "dom/tests/mochitest/beacon/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/tests/mochitest/bugs/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "dom/tests/mochitest/chrome/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "dom/tests/mochitest/dom-level0/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/tests/mochitest/dom-level1-core/mochitest.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/tests/mochitest/fetch/mochitest.ini": [ + "test-windows11-64-2009-qr/debug-*" + ], + "dom/tests/mochitest/gamepad/mochitest.ini": ["test-linux1804-64/opt-*"], + "dom/tests/mochitest/general/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/tests/mochitest/geolocation/chrome.ini": [ + "test-linux1804-64-qr/opt-*-1proc" + ], + "dom/tests/mochitest/pointerlock/mochitest.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/tests/mochitest/sessionstorage/chrome.ini": [ + "test-linux1804-64-qr/opt-*-1proc" + ], + "dom/tests/mochitest/webcomponents/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "dom/tests/mochitest/whatwg/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/url/tests/browser.ini": ["test-windows7-32/opt-*"], + "dom/webauthn/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/webgpu/mochitest/mochitest.ini": [ + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "dom/websocket/tests/chrome.ini": ["test-linux1804-64-qr/opt-*-1proc"], + "dom/websocket/tests/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-qr/debug-*", + "test-linux1804-64-asan/opt-*" + ], + "dom/websocket/tests/websocket_hybi/mochitest.ini": [ + "test-windows11-64-2009/opt-*" + ], + "dom/workers/test/browser.ini": ["test-windows11-64-2009/opt-*"], + "dom/workers/test/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "dom/worklet/tests/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "dom/xhr/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"], + "dom/xslt/tests/mochitest/mochitest.ini": ["test-linux1804-64/opt-*"], + "editor/libeditor/tests/chrome.ini": [ + "test-linux1804-64/debug-*-spi-nw-1proc" + ], + "editor/libeditor/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"], + "editor/reftests/xul/reftest.list": ["test-linux1804-64-qr/opt-*"], + "editor/spellchecker/tests/mochitest.ini": ["test-linux1804-64/opt-*"], + "extensions/permissions/test/unit/xpcshell.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw" + ], + "extensions/spellcheck/tests/chrome/chrome.ini": [ + "test-linux1804-64/debug-*-spi-nw-1proc" + ], + "extensions/spellcheck/tests/mochitest/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "extensions/universalchardet/tests/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "gfx/layers/apz/test/mochitest/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*", + "test-android-em-7.0-x86_64-qr/debug-geckoview-*", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-android-em-7.0-x86_64-qr/opt-geckoview-*" + ], + "gfx/tests/crashtests/crashtests.list": ["test-linux1804-64/opt-*"], + "image/test/mochitest/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-android-em-7.0-x86_64-qr/opt-geckoview-*" + ], + "image/test/unit/xpcshell.ini": ["test-linux1804-64/opt-*"], + "intl/uconv/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "js/xpconnect/tests/chrome/chrome.ini": [ + "test-windows11-64-2009/debug-*-1proc" + ], + "js/xpconnect/tests/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64-tsan/opt-*" + ], + "layout/base/tests/browser.ini": ["test-windows11-64-2009-qr/opt-*"], + "layout/base/tests/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64-qr/opt-*" + ], + "layout/forms/test/mochitest.ini": [ + "test-linux1804-64-qr/debug-*", + "test-android-em-7.0-x86_64-qr/debug-geckoview-*", + "test-linux1804-64/opt-*" + ], + "layout/generic/test/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-linux1804-64/opt-*" + ], + "layout/inspector/tests/chrome/chrome.ini": [ + "test-linux1804-64/debug-*-1proc" + ], + "layout/inspector/tests/mochitest.ini": ["test-linux1804-64/opt-*"], + "layout/mathml/tests/mochitest.ini": ["test-linux1804-64/opt-*"], + "layout/reftests/async-scrolling/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/border-image/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/box-shadow/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/bugs/reftest.list": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/canvas/reftest.list": ["test-windows11-64-2009-qr/opt-*"], + "layout/reftests/counters/reftest.list": [ + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/css-animations/reftest.list": [ + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/css-calc/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/css-default/submit-button/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/css-disabled/output/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-enabled/option/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/css-gradients/reftest.list": [ + "test-windows11-64-2009/opt-*" + ], + "layout/reftests/css-grid/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/css-invalid/fieldset/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/css-invalid/output/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-mediaqueries/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/css-optional/reftest.list": ["test-linux1804-64-qr/opt-*"], + "layout/reftests/css-required/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/css-scroll-snap/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-scrollbars/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/css-selectors/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/css-submit-invalid/button-submit/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-submit-invalid/input-image/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/css-submit-invalid/input-submit/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-ui-valid/output/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/css-variables/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/display-list/reftest.list": [ + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/first-letter/reftest.list": [ + "test-windows11-64-2009/opt-*" + ], + "layout/reftests/flexbox/pagination/reftest.list": [ + "test-windows11-64-2009-qr/debug-*" + ], + "layout/reftests/floats/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr", + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/font-matching/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/forms/input/datetime/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/forms/input/number/reftest.list": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/forms/output/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/forms/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/high-contrast/reftest.list": [ + "test-linux1804-64-qr/debug-*" + ], + "layout/reftests/image-element/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/image-region/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/image/reftest.list": ["test-windows11-64-2009/opt-*"], + "layout/reftests/invalidation/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/marquee/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/mathml/reftest.list": ["test-windows11-64-2009/opt-*"], + "layout/reftests/meta-viewport/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/outline/reftest.list": ["test-linux1804-64-qr/opt-*"], + "layout/reftests/pixel-rounding/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/position-dynamic-changes/vertical/reftest_border_abspos.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/position-dynamic-changes/vertical/reftest_margin_parent.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/position-sticky/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/printing/reftest.list": [ + "test-windows11-64-2009-qr/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/reftest-sanity/reftest.list": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/reftest-sanity/urlprefixtests.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/svg/as-image/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/svg/reftest.list": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/debug-*" + ], + "layout/reftests/svg/text/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/table-anonymous-boxes/reftest.list": [ + "test-windows11-64-2009-qr/opt-*" + ], + "layout/reftests/table-background/reftest.list": [ + "test-linux1804-64/opt-*" + ], + "layout/reftests/table-html/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/transform-3d/reftest.list": [ + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/transform/reftest.list": [ + "test-windows7-32/opt-*", + "test-linux1804-64-qr/debug-*-swr" + ], + "layout/reftests/usercss/reftest.list": ["test-linux1804-64/opt-*"], + "layout/reftests/web-animations/reftest.list": [ + "test-linux1804-64-qr/opt-*" + ], + "layout/reftests/writing-mode/reftest.list": ["test-linux1804-64-qr/opt-*"], + "layout/style/crashtests/crashtests.list": ["test-linux1804-64-qr/opt-*"], + "layout/style/test/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-android-em-7.0-x86_64/debug-geckoview-*" + ], + "layout/svg/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"], + "layout/xul/test/browser.ini": ["test-windows11-64-2009-qr/opt-*"], + "layout/xul/test/chrome.ini": ["test-windows11-64-2009/opt-*-1proc"], + "mobile/android/components/extensions/test/mochitest/mochitest.ini": [ + "test-android-em-7.0-x86_64/opt-geckoview-*" + ], + "modules/libpref/test/unit/xpcshell.ini": ["test-windows11-64-2009/opt-*"], + "netwerk/test/browser/browser.ini": ["test-windows11-64-2009-qr/opt-*"], + "netwerk/test/httpserver/test/xpcshell.ini": [ + "test-windows11-64-2009/opt-*" + ], + "netwerk/test/mochitests/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64-qr/debug-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "netwerk/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64/debug-*-spi-nw", + "test-android-em-7.0-x86_64/debug-geckoview-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*", + "test-android-em-7.0-x86_64/opt-geckoview-*" + ], + "netwerk/test/unit_ipc/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-windows7-32/debug-*" + ], + "parser/htmlparser/tests/mochitest/browser.ini": [ + "test-linux1804-64/opt-*" + ], + "parser/htmlparser/tests/mochitest/mochitest.ini": [ + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "remote/test/browser/page/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*" + ], + "remote/test/browser/runtime/browser.ini": [ + "test-windows11-64-2009-asan/opt-*" + ], + "security/manager/ssl/tests/mochitest/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "security/manager/ssl/tests/unit/xpcshell-smartcards.ini": [ + "test-windows11-64-2009/opt-*" + ], + "security/manager/ssl/tests/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64-tsan/opt-*", + "test-windows7-32/debug-*" + ], + "services/common/tests/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "services/fxaccounts/tests/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw" + ], + "services/settings/test/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-android-em-7.0-x86_64/debug-geckoview-*", + "test-windows7-32/debug-*" + ], + "startupcache/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "testing/crashtest/sanity/crashtests.list": ["test-linux1804-64/opt-*"], + "testing/mochitest/chrome/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "testing/mochitest/tests/Harness_sanity/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "testing/mochitest/tests/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/mozilla/tests/dom": [ + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/mozilla/tests/webdriver": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "testing/web-platform/mozilla/tests/webdriver/take_full_screenshot": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/IndexedDB/key-generators": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/WebIDL/ecmascript-binding": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/acid/acid2": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/apng": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/clipboard-apis/permissions": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/compat": ["test-windows11-64-2009-qr/opt-*"], + "testing/web-platform/tests/content-security-policy/default-src": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/content-security-policy/frame-ancestors": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/content-security-policy/securitypolicyviolation": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/cookies/samesite": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/CSS2/backgrounds": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/CSS2/borders": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/CSS2/positioning": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/compositing": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/css-flexbox": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/css-font-loading": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/css-pseudo": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/css/css-transforms": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/css-transitions": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/css-ui": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/css-will-change": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/css-writing-modes": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/cssom-view": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/filter-effects": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/css/mediaqueries": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/css/selectors": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/dom/nodes": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/encoding/streams": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/event-timing": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/fetch/api/basic": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/fetch/api/response": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/fetch/metadata": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/fetch/range": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/focus": ["test-windows11-64-2009-qr/opt-*"], + "testing/web-platform/tests/fullscreen/api": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/fullscreen/rendering": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/html-media-capture": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/html/browsers/browsing-the-web": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/html/browsers/the-window-object": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/html/cross-origin-embedder-policy": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/html/dom": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/html/rendering/non-replaced-elements": [ + "test-windows11-64-2009/opt-*-print-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/html/semantics/embedded-content": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*", + "test-macosx1014-64/debug-*" + ], + "testing/web-platform/tests/html/semantics/scripting-1": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/inert": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/infrastructure/expected-fail": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/infrastructure/webdriver/tests": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/loading": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/media-source": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/mediacapture-record": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/mediacapture-streams": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/mimesniff/mime-types": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/mixed-content": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/mixed-content/gen/top.http-rp": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/mixed-content/gen/top.meta": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/origin-policy/bad-server": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/origin-policy/content-security": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/origin-policy/ids": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/page-lifecycle": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/page-visibility": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/picture-in-picture": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/pointerevents/pointerlock": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/quirks": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/resize-observer": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/resource-timing": [ + "test-linux1804-64/opt-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/screen-capture": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/service-workers/cache-storage": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/service-workers/cache-storage/window": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/service-workers/service-worker": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/shadow-dom/declarative": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/speech-api": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/streams": ["test-windows11-64-2009-qr/opt-*"], + "testing/web-platform/tests/streams/readable-streams": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/svg": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/svg/animations": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/svg/painting/reftests": [ + "test-linux1804-64-qr/opt-*-print-*" + ], + "testing/web-platform/tests/svg/render": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/uievents/mouse": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/upgrade-insecure-requests/gen/top.http-rp": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/upgrade-insecure-requests/gen/top.meta": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/video-rvfc": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/wasm/webapi": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/web-animations": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/web-locks": ["test-windows11-64-2009-qr/opt-*"], + "testing/web-platform/tests/web-share": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/webdriver/tests/classic/accept_alert": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/add_cookie": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/back": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/delete_all_cookies": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/delete_cookie": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/delete_session": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/dismiss_alert": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/element_clear": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/element_click": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/element_send_keys": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/execute_async_script": [ + "test-windows11-64-2009/opt-*-headless" + ], + "testing/web-platform/tests/webdriver/tests/classic/execute_script": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/find_element": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/find_element_from_element": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/find_elements": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/find_elements_from_element": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/forward": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/fullscreen_window": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_active_element": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_alert_text": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_current_url": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_attribute": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_css_value": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_property": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_rect": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_tag_name": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_element_text": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_named_cookie": [ + "test-windows11-64-2009/debug-*", + "test-windows7-32/opt-*-headless", + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_page_source": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_timeouts": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_title": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/get_window_handles": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/interface": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/is_element_enabled": [ + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/is_element_selected": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/maximize_window": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/new_session": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/new_window": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/perform_actions": [ + "test-windows11-64-2009/opt-*-headless" + ], + "testing/web-platform/tests/webdriver/tests/classic/permissions": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/print": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/refresh": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/release_actions": [ + "test-windows11-64-2009/opt-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/send_alert_text": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/set_timeouts": [ + "test-windows11-64-2009/opt-*-headless", + "test-windows11-64-2009/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/set_window_rect": [ + "test-windows11-64-2009/opt-*-headless" + ], + "testing/web-platform/tests/webdriver/tests/classic/status": [ + "test-windows11-64-2009-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/switch_to_frame": [ + "test-windows11-64-2009/opt-*-headless" + ], + "testing/web-platform/tests/webdriver/tests/classic/switch_to_parent_frame": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/switch_to_window": [ + "test-linux1804-64-qr/opt-*" + ], + "testing/web-platform/tests/webdriver/tests/classic/take_screenshot": [ + "test-windows11-64-2009/opt-*" + ], + "testing/web-platform/tests/webmessaging/with-options": [ + "test-linux1804-64/opt-*" + ], + "testing/web-platform/tests/webrtc": ["test-linux1804-64-qr/opt-*"], + "testing/web-platform/tests/websockets": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/worklets": ["test-linux1804-64/opt-*"], + "testing/web-platform/tests/xhr": ["test-linux1804-64-qr/opt-*"], + "toolkit/components/aboutprocesses/tests/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/antitracking/test/browser/browser.ini": [ + "test-macosx1014-64/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*" + ], + "toolkit/components/antitracking/test/xpcshell/xpcshell.ini": [ + "test-linux1804-64/debug-*", + "test-android-em-7.0-x86_64/debug-geckoview-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/components/crashmonitor/test/unit/xpcshell.ini": [ + "test-linux1804-64/opt-*" + ], + "toolkit/components/downloads/test/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": [ + "test-linux1804-64-qr/opt-*" + ], + "toolkit/components/extensions/test/browser/browser-serviceworker.ini": [ + "test-linux1804-64/opt-*" + ], + "toolkit/components/extensions/test/browser/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-windows7-32/opt-*", + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/extensions/test/mochitest/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc", + "test-windows11-64-2009/debug-*-1proc", + "test-linux1804-64/debug-*-spi-nw-1proc" + ], + "toolkit/components/extensions/test/mochitest/mochitest-remote.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/debug-*", + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64-qr/debug-*", + "test-linux1804-64-tsan/opt-*", + "test-linux1804-64/opt-*", + "test-linux1804-64-asan/opt-*" + ], + "toolkit/components/extensions/test/mochitest/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64-qr/debug-*", + "test-android-em-7.0-x86_64-qr/debug-geckoview-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-android-em-7.0-x86_64/opt-geckoview-*", + "test-linux1804-64-qr/debug-*", + "test-macosx1014-64/debug-*", + "test-android-em-7.0-x86_64-qr/opt-geckoview-*" + ], + "toolkit/components/extensions/test/xpcshell/native_messaging.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/components/extensions/test/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/components/extensions/test/xpcshell/xpcshell-legacy-ep.ini": [ + "test-linux1804-64-qr/opt-*" + ], + "toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini": [ + "test-windows7-32/opt-*", + "test-windows11-64-2009/debug-*", + "test-macosx1014-64/debug-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-tsan/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/components/httpsonlyerror/tests/browser/browser.ini": [ + "test-windows11-64-2009/debug-*" + ], + "toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/opt-*" + ], + "toolkit/components/messaging-system/schemas/TriggerActionSchemas/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "toolkit/components/messaging-system/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*" + ], + "toolkit/components/normandy/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/normandy/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw" + ], + "toolkit/components/osfile/tests/xpcshell/xpcshell.ini": [ + "test-linux1804-64-qr/opt-*" + ], + "toolkit/components/passwordmgr/test/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/passwordmgr/test/mochitest/mochitest.ini": [ + "test-windows11-64-2009/debug-*", + "test-macosx1014-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64-qr/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-qr/debug-*", + "test-linux1804-64/opt-*" + ], + "toolkit/components/passwordmgr/test/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/pictureinpicture/tests/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/places/tests/browser/browser.ini": [ + "test-linux1804-64/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/places/tests/unifiedcomplete/xpcshell.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/printing/tests/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009-qr/opt-*" + ], + "toolkit/components/prompts/test/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "toolkit/components/prompts/test/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "toolkit/components/remotebrowserutils/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/satchel/test/mochitest.ini": [ + "test-macosx1014-64/opt-*", + "test-linux1804-64/opt-*" + ], + "toolkit/components/search/tests/xpcshell/xpcshell.ini": [ + "test-windows7-32/opt-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/components/telemetry/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/telemetry/tests/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/opt-*" + ], + "toolkit/components/thumbnails/test/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/url-classifier/tests/mochitest/mochitest.ini": [ + "test-linux1804-64/debug-*", + "test-linux1804-64-qr/debug-*", + "test-android-em-7.0-x86_64-qr/debug-geckoview-*", + "test-linux1804-64/opt-*" + ], + "toolkit/components/url-classifier/tests/unit/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "toolkit/components/viewsource/test/browser/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*" + ], + "toolkit/components/windowwatcher/test/browser.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009-qr/opt-*" + ], + "toolkit/content/tests/browser/browser.ini": [ + "test-windows11-64-2009-qr/debug-*", + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "toolkit/content/tests/chrome/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc", + "test-linux1804-64/debug-*-spi-nw-1proc" + ], + "toolkit/content/tests/mochitest/mochitest.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*" + ], + "toolkit/content/tests/reftests/reftest.list": ["test-linux1804-64/opt-*"], + "toolkit/content/tests/widgets/chrome.ini": [ + "test-windows11-64-2009/opt-*-1proc" + ], + "toolkit/content/tests/widgets/mochitest.ini": [ + "test-linux1804-64-qr/opt-*" + ], + "toolkit/crashreporter/test/unit/xpcshell.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/modules/tests/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/debug-*", + "test-macosx1014-64/debug-*", + "test-macosx1014-64/opt-*", + "test-linux1804-64-qr/opt-*", + "test-linux1804-64/debug-*-spi-nw", + "test-linux1804-64/debug-*", + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/mozapps/extensions/test/browser/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*", + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/opt-*" + ], + "toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "toolkit/mozapps/extensions/test/xpcshell/xpcshell-unpack.ini": [ + "test-linux1804-64/opt-*" + ], + "toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini": [ + "test-windows11-64-2009/opt-*", + "test-linux1804-64/opt-*", + "test-windows7-32/debug-*" + ], + "toolkit/mozapps/extensions/test/xpinstall/browser.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64/debug-*" + ], + "toolkit/mozapps/update/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "toolkit/mozapps/update/tests/browser/browser.legacy.ini": [ + "test-windows11-64-2009-qr/opt-*" + ], + "toolkit/xre/test/xpcshell.ini": [ + "test-linux1804-64-qr/opt-*", + "test-windows11-64-2009/opt-*" + ], + "tools/profiler/tests/browser/browser.ini": [ + "test-windows11-64-2009/opt-*" + ], + "tools/profiler/tests/xpcshell/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw", + "test-windows11-64-2009/opt-*" + ], + "uriloader/exthandler/tests/mochitest/browser.ini": [ + "test-windows11-64-2009/debug-*", + "test-linux1804-64/debug-*-spi-nw" + ], + "uriloader/exthandler/tests/mochitest/mochitest.ini": [ + "test-linux1804-64/opt-*" + ], + "uriloader/exthandler/tests/unit/xpcshell.ini": [ + "test-linux1804-64/debug-*-spi-nw" + ], + "widget/reftests/reftest.list": ["test-linux1804-64-qr/opt-*"], + "widget/tests/chrome.ini": [ + "test-windows7-32/opt-*-1proc", + "test-linux1804-64-qr/opt-*-1proc" + ], + "widget/tests/mochitest.ini": [ + "test-windows11-64-2009-qr/opt-*", + "test-linux1804-64-tsan/opt-*" + ], + "xpcom/tests/unit/xpcshell.ini": ["test-windows11-64-2009/opt-*"] + }, + "groups": { + "/IndexedDB/key-generators": 0.61, + "/WebIDL/ecmascript-binding": 0.6, + "/_mozilla/dom": 0.63, + "/_mozilla/webdriver": 0.77, + "/_mozilla/webdriver/take_full_screenshot": 0.55, + "/acid/acid2": 0.84, + "/apng": 0.69, + "/clipboard-apis/permissions": 0.57, + "/compat": 0.69, + "/content-security-policy/default-src": 0.55, + "/content-security-policy/frame-ancestors": 0.6, + "/content-security-policy/securitypolicyviolation": 0.58, + "/cookies/samesite": 0.5, + "/css/CSS2/backgrounds": 0.53, + "/css/CSS2/borders": 0.53, + "/css/CSS2/positioning": 0.54, + "/css/compositing": 0.64, + "/css/css-flexbox": 0.64, + "/css/css-font-loading": 0.52, + "/css/css-pseudo": 0.85, + "/css/css-transforms": 0.63, + "/css/css-transitions": 0.51, + "/css/css-ui": 0.69, + "/css/css-will-change": 0.59, + "/css/css-writing-modes": 0.69, + "/css/cssom-view": 0.79, + "/css/filter-effects": 0.67, + "/css/mediaqueries": 0.62, + "/css/selectors": 0.6, + "/dom/nodes": 0.76, + "/encoding/streams": 0.51, + "/event-timing": 0.61, + "/fetch/api/basic": 0.68, + "/fetch/api/response": 0.53, + "/fetch/metadata": 0.8, + "/fetch/range": 0.76, + "/focus": 0.68, + "/fullscreen/api": 0.64, + "/fullscreen/rendering": 0.58, + "/html-media-capture": 0.57, + "/html/browsers/browsing-the-web": 0.54, + "/html/browsers/the-window-object": 0.74, + "/html/cross-origin-embedder-policy": 0.75, + "/html/dom": 0.65, + "/html/rendering/non-replaced-elements": 0.73, + "/html/semantics/embedded-content": 0.55, + "/html/semantics/scripting-1": 0.57, + "/inert": 0.55, + "/infrastructure/expected-fail": 0.55, + "/infrastructure/webdriver/tests": 0.57, + "/loading": 0.57, + "/media-source": 0.68, + "/mediacapture-record": 0.76, + "/mediacapture-streams": 0.53, + "/mimesniff/mime-types": 0.7, + "/mixed-content": 0.57, + "/mixed-content/gen/top.http-rp": 0.51, + "/mixed-content/gen/top.meta": 0.65, + "/origin-policy/bad-server": 0.51, + "/origin-policy/content-security": 0.71, + "/origin-policy/ids": 0.81, + "/page-lifecycle": 0.57, + "/page-visibility": 0.63, + "/picture-in-picture": 0.57, + "/pointerevents/pointerlock": 0.82, + "/quirks": 0.56, + "/resize-observer": 0.55, + "/resource-timing": 0.69, + "/screen-capture": 0.58, + "/service-workers/cache-storage": 0.55, + "/service-workers/cache-storage/window": 0.51, + "/service-workers/service-worker": 0.87, + "/shadow-dom/declarative": 0.55, + "/speech-api": 0.57, + "/streams": 0.55, + "/streams/readable-streams": 0.5, + "/svg": 0.57, + "/svg/animations": 0.54, + "/svg/painting/reftests": 0.52, + "/svg/render": 0.55, + "/uievents/mouse": 0.55, + "/upgrade-insecure-requests/gen/top.http-rp": 0.71, + "/upgrade-insecure-requests/gen/top.meta": 0.7, + "/video-rvfc": 0.51, + "/wasm/webapi": 0.58, + "/web-animations": 0.57, + "/web-locks": 0.75, + "/web-share": 0.57, + "/webdriver/tests/classic/accept_alert": 0.86, + "/webdriver/tests/classic/add_cookie": 0.73, + "/webdriver/tests/classic/back": 0.73, + "/webdriver/tests/classic/delete_all_cookies": 0.73, + "/webdriver/tests/classic/delete_cookie": 0.76, + "/webdriver/tests/classic/delete_session": 0.7, + "/webdriver/tests/classic/dismiss_alert": 0.7, + "/webdriver/tests/classic/element_clear": 0.71, + "/webdriver/tests/classic/element_click": 0.79, + "/webdriver/tests/classic/element_send_keys": 0.67, + "/webdriver/tests/classic/execute_async_script": 0.82, + "/webdriver/tests/classic/execute_script": 0.76, + "/webdriver/tests/classic/find_element": 0.62, + "/webdriver/tests/classic/find_element_from_element": 0.73, + "/webdriver/tests/classic/find_elements": 0.66, + "/webdriver/tests/classic/find_elements_from_element": 0.73, + "/webdriver/tests/classic/forward": 0.82, + "/webdriver/tests/classic/fullscreen_window": 0.76, + "/webdriver/tests/classic/get_active_element": 0.67, + "/webdriver/tests/classic/get_alert_text": 0.73, + "/webdriver/tests/classic/get_current_url": 0.76, + "/webdriver/tests/classic/get_element_attribute": 0.56, + "/webdriver/tests/classic/get_element_css_value": 0.73, + "/webdriver/tests/classic/get_element_property": 0.73, + "/webdriver/tests/classic/get_element_rect": 0.79, + "/webdriver/tests/classic/get_element_tag_name": 0.79, + "/webdriver/tests/classic/get_element_text": 0.52, + "/webdriver/tests/classic/get_named_cookie": 0.67, + "/webdriver/tests/classic/get_page_source": 0.7, + "/webdriver/tests/classic/get_timeouts": 0.79, + "/webdriver/tests/classic/get_title": 0.67, + "/webdriver/tests/classic/get_window_handles": 0.73, + "/webdriver/tests/classic/interface": 0.66, + "/webdriver/tests/classic/is_element_enabled": 0.54, + "/webdriver/tests/classic/is_element_selected": 0.6, + "/webdriver/tests/classic/maximize_window": 0.79, + "/webdriver/tests/classic/new_session": 0.54, + "/webdriver/tests/classic/new_window": 0.51, + "/webdriver/tests/classic/perform_actions": 0.66, + "/webdriver/tests/classic/permissions": 0.73, + "/webdriver/tests/classic/print": 0.86, + "/webdriver/tests/classic/refresh": 0.54, + "/webdriver/tests/classic/release_actions": 0.68, + "/webdriver/tests/classic/send_alert_text": 0.74, + "/webdriver/tests/classic/set_timeouts": 0.53, + "/webdriver/tests/classic/set_window_rect": 0.68, + "/webdriver/tests/classic/status": 0.74, + "/webdriver/tests/classic/switch_to_frame": 0.56, + "/webdriver/tests/classic/switch_to_parent_frame": 0.79, + "/webdriver/tests/classic/switch_to_window": 0.74, + "/webdriver/tests/classic/take_screenshot": 0.67, + "/webmessaging/with-options": 0.55, + "/webrtc": 0.9, + "/websockets": 0.68, + "/worklets": 0.65, + "/xhr": 0.78, + "accessible/tests/browser/events/browser.ini": 0.77, + "accessible/tests/browser/fission/browser.ini": 0.76, + "accessible/tests/browser/mac/browser.ini": 0.74, + "accessible/tests/browser/scroll/browser.ini": 0.52, + "accessible/tests/browser/states/browser.ini": 0.78, + "accessible/tests/browser/telemetry/browser.ini": 0.77, + "accessible/tests/mochitest/a11y.ini": 0.59, + "accessible/tests/mochitest/actions/a11y.ini": 0.51, + "accessible/tests/mochitest/tree/a11y.ini": 0.86, + "browser/base/content/test/about/browser.ini": 0.85, + "browser/base/content/test/alerts/browser.ini": 0.63, + "browser/base/content/test/captivePortal/browser.ini": 0.53, + "browser/base/content/test/contextMenu/browser.ini": 0.52, + "browser/base/content/test/favicons/browser.ini": 0.66, + "browser/base/content/test/forms/browser.ini": 0.64, + "browser/base/content/test/fullscreen/browser.ini": 0.82, + "browser/base/content/test/general/browser.ini": 0.99, + "browser/base/content/test/keyboard/browser.ini": 0.74, + "browser/base/content/test/pageActions/browser.ini": 0.79, + "browser/base/content/test/pageinfo/browser.ini": 0.72, + "browser/base/content/test/performance/browser.ini": 0.98, + "browser/base/content/test/performance/hidpi/browser.ini": 0.68, + "browser/base/content/test/performance/io/browser.ini": 0.67, + "browser/base/content/test/performance/lowdpi/browser.ini": 0.68, + "browser/base/content/test/popupNotifications/browser.ini": 0.85, + "browser/base/content/test/popups/browser.ini": 0.66, + "browser/base/content/test/protectionsUI/browser.ini": 0.76, + "browser/base/content/test/referrer/browser.ini": 0.77, + "browser/base/content/test/sanitize/browser.ini": 0.7, + "browser/base/content/test/siteIdentity/browser.ini": 0.95, + "browser/base/content/test/static/browser.ini": 0.8, + "browser/base/content/test/tabPrompts/browser.ini": 0.73, + "browser/base/content/test/tabcrashed/browser.ini": 0.6, + "browser/base/content/test/tabs/browser.ini": 0.81, + "browser/base/content/test/webextensions/browser.ini": 0.88, + "browser/base/content/test/zoom/browser.ini": 0.7, + "browser/components/aboutlogins/tests/browser/browser.ini": 0.75, + "browser/components/aboutlogins/tests/chrome/chrome.ini": 0.78, + "browser/components/aboutlogins/tests/unit/xpcshell.ini": 0.86, + "browser/components/contextualidentity/test/browser/browser.ini": 0.52, + "browser/components/customizableui/test/browser.ini": 0.97, + "browser/components/doh/test/browser/browser.ini": 0.65, + "browser/components/downloads/test/browser/browser.ini": 0.68, + "browser/components/downloads/test/unit/xpcshell.ini": 0.7, + "browser/components/enterprisepolicies/tests/browser/browser.ini": 0.85, + "browser/components/enterprisepolicies/tests/browser/disable_app_update/browser.ini": 0.65, + "browser/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": 0.51, + "browser/components/extensions/test/browser/browser-private.ini": 0.88, + "browser/components/extensions/test/browser/browser.ini": 0.99, + "browser/components/extensions/test/mochitest/mochitest.ini": 0.72, + "browser/components/migration/tests/unit/xpcshell.ini": 0.93, + "browser/components/newtab/test/browser/abouthomecache/browser.ini": 0.96, + "browser/components/newtab/test/browser/browser.ini": 0.77, + "browser/components/newtab/test/xpcshell/xpcshell.ini": 0.69, + "browser/components/originattributes/test/browser/browser.ini": 0.76, + "browser/components/pioneer/test/browser/browser.ini": 0.63, + "browser/components/places/tests/browser/browser.ini": 0.93, + "browser/components/places/tests/unit/xpcshell.ini": 0.67, + "browser/components/preferences/tests/browser.ini": 0.97, + "browser/components/preferences/tests/siteData/browser.ini": 0.96, + "browser/components/protections/test/browser/browser.ini": 0.94, + "browser/components/resistfingerprinting/test/browser/browser.ini": 0.92, + "browser/components/resistfingerprinting/test/mochitest/mochitest.ini": 0.64, + "browser/components/safebrowsing/content/test/browser.ini": 0.65, + "browser/components/search/test/browser/browser.ini": 0.96, + "browser/components/search/test/browser/google_codes/browser.ini": 0.67, + "browser/components/search/test/unit/xpcshell.ini": 0.59, + "browser/components/sessionstore/test/browser.ini": 0.92, + "browser/components/sessionstore/test/unit/xpcshell.ini": 0.86, + "browser/components/shell/test/browser.ini": 0.95, + "browser/components/shell/test/chrome.ini": 0.79, + "browser/components/ssb/tests/browser/browser.ini": 0.81, + "browser/components/tests/browser/browser.ini": 0.67, + "browser/components/tests/browser/whats_new_page/browser.ini": 0.56, + "browser/components/tests/unit/xpcshell.ini": 0.82, + "browser/components/touchbar/tests/browser/browser.ini": 0.66, + "browser/components/translation/test/browser.ini": 0.89, + "browser/components/uitour/test/browser.ini": 0.91, + "browser/components/urlbar/tests/browser-tips/browser.ini": 0.82, + "browser/components/urlbar/tests/browser/browser.ini": 0.99, + "browser/components/urlbar/tests/unit/xpcshell.ini": 0.51, + "browser/extensions/formautofill/test/browser/browser.ini": 0.59, + "browser/extensions/formautofill/test/browser/creditCard/browser.ini": 0.97, + "browser/extensions/formautofill/test/mochitest/creditCard/mochitest.ini": 0.62, + "browser/extensions/formautofill/test/mochitest/mochitest.ini": 0.77, + "browser/extensions/formautofill/test/unit/xpcshell.ini": 0.78, + "browser/extensions/report-site-issue/test/browser/browser.ini": 0.53, + "browser/modules/test/browser/browser.ini": 0.99, + "browser/modules/test/unit/xpcshell.ini": 0.75, + "browser/tools/mozscreenshots/controlCenter/browser.ini": 0.69, + "browser/tools/mozscreenshots/permissionPrompts/browser.ini": 0.98, + "caps/tests/mochitest/chrome.ini": 0.57, + "devtools/client/aboutdebugging/test/browser/browser.ini": 0.69, + "devtools/client/application/test/browser/browser.ini": 0.94, + "devtools/client/debugger/test/mochitest/browser.ini": 0.65, + "devtools/client/framework/test/browser-enable-popup-devtools-user.ini": 0.56, + "devtools/client/framework/test/browser-enable-popup-new-user.ini": 0.56, + "devtools/client/framework/test/browser.ini": 0.91, + "devtools/client/framework/test/metrics/browser_metrics_debugger.ini": 0.63, + "devtools/client/inspector/computed/test/browser.ini": 0.8, + "devtools/client/inspector/grids/test/browser.ini": 0.57, + "devtools/client/inspector/markup/test/browser.ini": 0.91, + "devtools/client/inspector/rules/test/browser_part1.ini": 0.86, + "devtools/client/inspector/rules/test/browser_part2.ini": 0.59, + "devtools/client/inspector/shared/test/browser.ini": 0.63, + "devtools/client/inspector/test/browser.ini": 0.68, + "devtools/client/jsonview/test/browser.ini": 0.62, + "devtools/client/netmonitor/src/har/test/browser.ini": 0.76, + "devtools/client/netmonitor/test/browser.ini": 0.91, + "devtools/client/responsive/test/browser/browser.ini": 0.71, + "devtools/client/responsive/test/xpcshell/xpcshell.ini": 0.55, + "devtools/client/shared/sourceeditor/test/browser.ini": 0.71, + "devtools/client/shared/test/browser.ini": 0.94, + "devtools/client/storage/test/browser.ini": 0.66, + "devtools/client/styleeditor/test/browser.ini": 0.91, + "devtools/client/webconsole/test/browser/_browser_console.ini": 0.88, + "devtools/client/webconsole/test/browser/_jsterm.ini": 0.71, + "devtools/client/webconsole/test/browser/_webconsole.ini": 0.89, + "devtools/server/tests/chrome/chrome.ini": 0.77, + "devtools/server/tests/xpcshell/xpcshell.ini": 0.85, + "devtools/shared/resources/tests/browser.ini": 0.9, + "devtools/shared/test-helpers/browser.ini": 0.55, + "devtools/shared/tests/xpcshell/xpcshell.ini": 0.7, + "devtools/shared/webconsole/test/chrome/chrome.ini": 0.65, + "docshell/test/browser/browser.ini": 0.96, + "docshell/test/mochitest/mochitest.ini": 0.85, + "docshell/test/navigation/browser.ini": 0.68, + "docshell/test/navigation/mochitest.ini": 0.8, + "docshell/test/unit/xpcshell.ini": 0.52, + "dom/abort/tests/mochitest.ini": 0.69, + "dom/animation/test/mochitest.ini": 0.69, + "dom/base/test/chrome.ini": 0.57, + "dom/base/test/chrome/chrome.ini": 0.88, + "dom/base/test/mochitest.ini": 0.91, + "dom/broadcastchannel/tests/browser.ini": 0.69, + "dom/canvas/test/webgl-conf/generated-mochitest.ini": 0.6, + "dom/canvas/test/webgl-mochitest/mochitest.ini": 0.67, + "dom/console/tests/mochitest.ini": 0.62, + "dom/credentialmanagement/tests/browser/browser.ini": 0.6, + "dom/file/ipc/tests/mochitest.ini": 0.67, + "dom/file/tests/xpcshell.ini": 0.67, + "dom/filesystem/tests/mochitest.ini": 0.8, + "dom/html/reftests/autofocus/reftest.list": 0.68, + "dom/html/test/browser.ini": 0.77, + "dom/html/test/forms/mochitest.ini": 0.75, + "dom/html/test/mochitest.ini": 0.56, + "dom/indexedDB/test/mochitest.ini": 0.53, + "dom/ipc/tests/JSProcessActor/browser.ini": 0.71, + "dom/ipc/tests/JSWindowActor/browser.ini": 0.75, + "dom/ipc/tests/browser.ini": 0.58, + "dom/ipc/tests/chrome.ini": 0.63, + "dom/ipc/tests/xpcshell.ini": 0.89, + "dom/l10n/tests/mochitest/browser.ini": 0.64, + "dom/l10n/tests/mochitest/chrome.ini": 0.55, + "dom/localstorage/test/unit/xpcshell.ini": 0.54, + "dom/media/mediacontrol/tests/browser.ini": 0.79, + "dom/media/mediasource/test/mochitest.ini": 0.82, + "dom/media/test/crashtests/crashtests.list": 0.57, + "dom/media/test/mochitest.ini": 0.95, + "dom/media/webaudio/test/mochitest.ini": 0.61, + "dom/media/webrtc/tests/mochitests/mochitest.ini": 0.98, + "dom/media/webvtt/tests/xpcshell.ini": 0.8, + "dom/network/tests/chrome.ini": 0.57, + "dom/performance/tests/mochitest.ini": 0.67, + "dom/permission/tests/mochitest.ini": 0.75, + "dom/presentation/tests/mochitest/chrome.ini": 0.55, + "dom/presentation/tests/mochitest/mochitest.ini": 0.69, + "dom/presentation/tests/xpcshell/xpcshell.ini": 0.8, + "dom/promise/tests/mochitest.ini": 0.55, + "dom/push/test/mochitest.ini": 0.63, + "dom/push/test/xpcshell/xpcshell.ini": 0.53, + "dom/reporting/tests/browser.ini": 0.68, + "dom/security/test/csp/mochitest.ini": 0.67, + "dom/security/test/general/browser.ini": 0.59, + "dom/security/test/general/mochitest.ini": 0.6, + "dom/security/test/https-only/browser.ini": 0.94, + "dom/security/test/mixedcontentblocker/browser.ini": 0.52, + "dom/security/test/unit/xpcshell.ini": 0.69, + "dom/serviceworkers/test/browser.ini": 0.86, + "dom/serviceworkers/test/mochitest.ini": 0.51, + "dom/system/tests/mochitest.ini": 0.56, + "dom/tests/browser/browser.ini": 0.89, + "dom/tests/mochitest/ajax/scriptaculous/mochitest.ini": 0.55, + "dom/tests/mochitest/beacon/mochitest.ini": 0.67, + "dom/tests/mochitest/bugs/mochitest.ini": 0.96, + "dom/tests/mochitest/chrome/chrome.ini": 0.58, + "dom/tests/mochitest/dom-level0/mochitest.ini": 0.66, + "dom/tests/mochitest/dom-level1-core/mochitest.ini": 0.56, + "dom/tests/mochitest/fetch/mochitest.ini": 0.81, + "dom/tests/mochitest/gamepad/mochitest.ini": 0.56, + "dom/tests/mochitest/general/mochitest.ini": 0.9, + "dom/tests/mochitest/geolocation/chrome.ini": 0.57, + "dom/tests/mochitest/pointerlock/mochitest.ini": 0.72, + "dom/tests/mochitest/sessionstorage/chrome.ini": 0.69, + "dom/tests/mochitest/webcomponents/mochitest.ini": 0.63, + "dom/tests/mochitest/whatwg/mochitest.ini": 0.7, + "dom/url/tests/browser.ini": 0.75, + "dom/webauthn/tests/mochitest.ini": 0.6, + "dom/webgpu/mochitest/mochitest.ini": 0.5, + "dom/websocket/tests/chrome.ini": 0.55, + "dom/websocket/tests/mochitest.ini": 0.65, + "dom/websocket/tests/websocket_hybi/mochitest.ini": 0.57, + "dom/workers/test/browser.ini": 0.51, + "dom/workers/test/mochitest.ini": 0.72, + "dom/worklet/tests/mochitest.ini": 0.53, + "dom/xhr/tests/mochitest.ini": 0.63, + "dom/xslt/tests/mochitest/mochitest.ini": 0.57, + "editor/libeditor/tests/chrome.ini": 0.57, + "editor/libeditor/tests/mochitest.ini": 0.76, + "editor/reftests/xul/reftest.list": 0.55, + "editor/spellchecker/tests/mochitest.ini": 0.62, + "extensions/permissions/test/unit/xpcshell.ini": 0.71, + "extensions/spellcheck/tests/chrome/chrome.ini": 0.57, + "extensions/spellcheck/tests/mochitest/mochitest.ini": 0.57, + "extensions/universalchardet/tests/chrome.ini": 0.57, + "gfx/layers/apz/test/mochitest/mochitest.ini": 0.65, + "gfx/tests/crashtests/crashtests.list": 0.65, + "image/test/mochitest/mochitest.ini": 0.89, + "image/test/unit/xpcshell.ini": 0.68, + "intl/uconv/tests/mochitest.ini": 0.51, + "js/xpconnect/tests/chrome/chrome.ini": 0.62, + "js/xpconnect/tests/unit/xpcshell.ini": 0.95, + "layout/base/tests/browser.ini": 0.54, + "layout/base/tests/mochitest.ini": 0.91, + "layout/forms/test/mochitest.ini": 0.81, + "layout/generic/test/mochitest.ini": 0.83, + "layout/inspector/tests/chrome/chrome.ini": 0.52, + "layout/inspector/tests/mochitest.ini": 0.63, + "layout/mathml/tests/mochitest.ini": 0.51, + "layout/reftests/async-scrolling/reftest.list": 0.62, + "layout/reftests/border-image/reftest.list": 0.71, + "layout/reftests/box-shadow/reftest.list": 0.59, + "layout/reftests/bugs/reftest.list": 0.97, + "layout/reftests/canvas/reftest.list": 0.69, + "layout/reftests/counters/reftest.list": 0.62, + "layout/reftests/css-animations/reftest.list": 0.59, + "layout/reftests/css-calc/reftest.list": 0.57, + "layout/reftests/css-default/submit-button/reftest.list": 0.67, + "layout/reftests/css-disabled/output/reftest.list": 0.55, + "layout/reftests/css-enabled/option/reftest.list": 0.55, + "layout/reftests/css-gradients/reftest.list": 0.54, + "layout/reftests/css-grid/reftest.list": 0.68, + "layout/reftests/css-invalid/fieldset/reftest.list": 0.67, + "layout/reftests/css-invalid/output/reftest.list": 0.55, + "layout/reftests/css-mediaqueries/reftest.list": 0.54, + "layout/reftests/css-optional/reftest.list": 0.63, + "layout/reftests/css-required/reftest.list": 0.63, + "layout/reftests/css-scroll-snap/reftest.list": 0.57, + "layout/reftests/css-scrollbars/reftest.list": 0.57, + "layout/reftests/css-selectors/reftest.list": 0.57, + "layout/reftests/css-submit-invalid/button-submit/reftest.list": 0.67, + "layout/reftests/css-submit-invalid/input-image/reftest.list": 0.67, + "layout/reftests/css-submit-invalid/input-submit/reftest.list": 0.67, + "layout/reftests/css-ui-valid/output/reftest.list": 0.55, + "layout/reftests/css-variables/reftest.list": 0.57, + "layout/reftests/display-list/reftest.list": 0.62, + "layout/reftests/first-letter/reftest.list": 0.58, + "layout/reftests/flexbox/pagination/reftest.list": 0.57, + "layout/reftests/floats/reftest.list": 0.67, + "layout/reftests/font-matching/reftest.list": 0.52, + "layout/reftests/forms/input/datetime/reftest.list": 0.78, + "layout/reftests/forms/input/number/reftest.list": 0.5, + "layout/reftests/forms/output/reftest.list": 0.66, + "layout/reftests/forms/reftest.list": 0.86, + "layout/reftests/high-contrast/reftest.list": 0.76, + "layout/reftests/image-element/reftest.list": 0.59, + "layout/reftests/image-region/reftest.list": 0.57, + "layout/reftests/image/reftest.list": 0.65, + "layout/reftests/invalidation/reftest.list": 0.58, + "layout/reftests/marquee/reftest.list": 0.56, + "layout/reftests/mathml/reftest.list": 0.61, + "layout/reftests/meta-viewport/reftest.list": 0.62, + "layout/reftests/outline/reftest.list": 0.63, + "layout/reftests/pixel-rounding/reftest.list": 0.62, + "layout/reftests/position-dynamic-changes/vertical/reftest_border_abspos.list": 0.6, + "layout/reftests/position-dynamic-changes/vertical/reftest_margin_parent.list": 0.81, + "layout/reftests/position-sticky/reftest.list": 0.56, + "layout/reftests/printing/reftest.list": 0.63, + "layout/reftests/reftest-sanity/reftest.list": 0.76, + "layout/reftests/reftest-sanity/urlprefixtests.list": 0.65, + "layout/reftests/svg/as-image/reftest.list": 0.5, + "layout/reftests/svg/reftest.list": 0.83, + "layout/reftests/svg/text/reftest.list": 0.63, + "layout/reftests/table-anonymous-boxes/reftest.list": 0.67, + "layout/reftests/table-background/reftest.list": 0.68, + "layout/reftests/table-html/reftest.list": 0.57, + "layout/reftests/transform-3d/reftest.list": 0.54, + "layout/reftests/transform/reftest.list": 0.55, + "layout/reftests/usercss/reftest.list": 0.57, + "layout/reftests/web-animations/reftest.list": 0.63, + "layout/reftests/writing-mode/reftest.list": 0.55, + "layout/style/crashtests/crashtests.list": 0.62, + "layout/style/test/mochitest.ini": 0.87, + "layout/svg/tests/mochitest.ini": 0.62, + "layout/xul/test/browser.ini": 0.51, + "layout/xul/test/chrome.ini": 0.5, + "mobile/android/components/extensions/test/mochitest/mochitest.ini": 0.57, + "modules/libpref/test/unit/xpcshell.ini": 0.52, + "netwerk/test/browser/browser.ini": 0.71, + "netwerk/test/httpserver/test/xpcshell.ini": 0.72, + "netwerk/test/mochitests/mochitest.ini": 0.52, + "netwerk/test/unit/xpcshell.ini": 0.92, + "netwerk/test/unit_ipc/xpcshell.ini": 0.65, + "parser/htmlparser/tests/mochitest/browser.ini": 0.57, + "parser/htmlparser/tests/mochitest/mochitest.ini": 0.71, + "remote/test/browser/page/browser.ini": 0.59, + "remote/test/browser/runtime/browser.ini": 0.53, + "security/manager/ssl/tests/mochitest/browser/browser.ini": 0.72, + "security/manager/ssl/tests/unit/xpcshell-smartcards.ini": 0.51, + "security/manager/ssl/tests/unit/xpcshell.ini": 0.64, + "services/common/tests/unit/xpcshell.ini": 0.9, + "services/fxaccounts/tests/xpcshell/xpcshell.ini": 0.6, + "services/settings/test/unit/xpcshell.ini": 0.86, + "startupcache/test/browser/browser.ini": 0.58, + "testing/crashtest/sanity/crashtests.list": 0.69, + "testing/mochitest/chrome/chrome.ini": 0.57, + "testing/mochitest/tests/Harness_sanity/mochitest.ini": 0.77, + "testing/mochitest/tests/browser/browser.ini": 0.67, + "toolkit/components/aboutprocesses/tests/browser/browser.ini": 0.93, + "toolkit/components/antitracking/test/browser/browser.ini": 0.99, + "toolkit/components/antitracking/test/xpcshell/xpcshell.ini": 0.51, + "toolkit/components/crashmonitor/test/unit/xpcshell.ini": 0.72, + "toolkit/components/downloads/test/unit/xpcshell.ini": 0.92, + "toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": 0.56, + "toolkit/components/extensions/test/browser/browser-serviceworker.ini": 0.73, + "toolkit/components/extensions/test/browser/browser.ini": 0.98, + "toolkit/components/extensions/test/mochitest/chrome.ini": 0.59, + "toolkit/components/extensions/test/mochitest/mochitest-remote.ini": 0.79, + "toolkit/components/extensions/test/mochitest/mochitest.ini": 0.52, + "toolkit/components/extensions/test/xpcshell/native_messaging.ini": 0.74, + "toolkit/components/extensions/test/xpcshell/xpcshell.ini": 0.79, + "toolkit/components/extensions/test/xpcshell/xpcshell-legacy-ep.ini": 0.77, + "toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini": 0.68, + "toolkit/components/httpsonlyerror/tests/browser/browser.ini": 0.78, + "toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser.ini": 0.92, + "toolkit/components/messaging-system/schemas/TriggerActionSchemas/test/browser/browser.ini": 0.77, + "toolkit/components/messaging-system/test/unit/xpcshell.ini": 0.51, + "toolkit/components/normandy/test/browser/browser.ini": 0.75, + "toolkit/components/normandy/test/unit/xpcshell.ini": 0.5, + "toolkit/components/osfile/tests/xpcshell/xpcshell.ini": 0.66, + "toolkit/components/passwordmgr/test/browser/browser.ini": 0.99, + "toolkit/components/passwordmgr/test/mochitest/mochitest.ini": 0.99, + "toolkit/components/passwordmgr/test/unit/xpcshell.ini": 0.99, + "toolkit/components/pictureinpicture/tests/browser.ini": 0.92, + "toolkit/components/places/tests/browser/browser.ini": 0.92, + "toolkit/components/places/tests/unifiedcomplete/xpcshell.ini": 0.85, + "toolkit/components/printing/tests/browser.ini": 0.9, + "toolkit/components/prompts/test/chrome.ini": 0.97, + "toolkit/components/prompts/test/mochitest.ini": 0.5, + "toolkit/components/remotebrowserutils/tests/browser/browser.ini": 0.83, + "toolkit/components/satchel/test/mochitest.ini": 0.78, + "toolkit/components/search/tests/xpcshell/xpcshell.ini": 0.52, + "toolkit/components/telemetry/tests/browser/browser.ini": 0.65, + "toolkit/components/telemetry/tests/unit/xpcshell.ini": 0.6, + "toolkit/components/thumbnails/test/browser.ini": 0.78, + "toolkit/components/url-classifier/tests/mochitest/mochitest.ini": 0.74, + "toolkit/components/url-classifier/tests/unit/xpcshell.ini": 0.76, + "toolkit/components/viewsource/test/browser/browser.ini": 0.55, + "toolkit/components/windowwatcher/test/browser.ini": 0.6, + "toolkit/content/tests/browser/browser.ini": 0.93, + "toolkit/content/tests/chrome/chrome.ini": 0.96, + "toolkit/content/tests/mochitest/mochitest.ini": 0.51, + "toolkit/content/tests/reftests/reftest.list": 0.5, + "toolkit/content/tests/widgets/chrome.ini": 0.96, + "toolkit/content/tests/widgets/mochitest.ini": 0.98, + "toolkit/crashreporter/test/unit/xpcshell.ini": 0.5, + "toolkit/modules/tests/xpcshell/xpcshell.ini": 0.66, + "toolkit/mozapps/extensions/test/browser/browser.ini": 0.95, + "toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/xpcshell.ini": 0.52, + "toolkit/mozapps/extensions/test/xpcshell/xpcshell-unpack.ini": 0.73, + "toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini": 0.89, + "toolkit/mozapps/extensions/test/xpinstall/browser.ini": 0.71, + "toolkit/mozapps/update/tests/browser/browser.ini": 0.59, + "toolkit/mozapps/update/tests/browser/browser.legacy.ini": 0.64, + "toolkit/xre/test/xpcshell.ini": 0.55, + "tools/profiler/tests/browser/browser.ini": 0.74, + "tools/profiler/tests/xpcshell/xpcshell.ini": 0.94, + "uriloader/exthandler/tests/mochitest/browser.ini": 0.8, + "uriloader/exthandler/tests/mochitest/mochitest.ini": 0.65, + "uriloader/exthandler/tests/unit/xpcshell.ini": 0.91, + "widget/reftests/reftest.list": 0.56, + "widget/tests/chrome.ini": 0.93, + "widget/tests/mochitest.ini": 0.82, + "xpcom/tests/unit/xpcshell.ini": 0.63 + }, + "known_tasks": [ + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-11", + "test-windows7-32/opt-gtest-1proc", + "toolchain-win64-dump-syms", + "test-linux1804-64/opt-web-platform-tests-2", + "test-linux1804-64-asan-qr/opt-reftest-3", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-11", + "test-macosx1014-64/debug-firefox-ui-functional-local", + "test-linux1804-64-qr/debug-web-platform-tests-4", + "test-macosx1014-64-ccov/opt-mochitest-webgl2-core-gli", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-1", + "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-5", + "test-linux1804-64-asan/opt-mochitest-remote", + "test-linux1804-64-asan/opt-jsreftest-2", + "toolchain-linux64-nasm", + "test-macosx1014-64/debug-mochitest-webgl1-core-gli", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen", + "source-test-mozlint-mingw-cap", + "source-test-mozlint-codespell", + "test-linux1804-64-tsan/opt-xpcshell-3", + "test-windows11-64-2009/debug-reftest-3", + "valgrind-linux64-valgrind/opt", + "test-linux1804-64/debug-web-platform-tests-9", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-4", + "test-linux1804-64-qr/debug-xpcshell-3", + "test-windows7-32/opt-reftest-2", + "test-linux64-shippable-qr/opt-talos-g1-swr", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-3", + "test-linux1804-64/debug-mochitest-browser-chrome-3", + "test-macosx1014-64/opt-mochitest-browser-chrome-3", + "test-linux1804-64-asan/opt-reftest-7", + "test-linux1804-64/opt-mochitest-devtools-chrome-3", + "test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-office", + "test-windows11-64-2009/opt-web-platform-tests-reftest-2", + "source-test-python-mozterm-windows11-64-2009/opt-py3", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-facebook-redesign", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-twitch", + "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-twitter", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-7", + "test-windows11-64-2009-qr/opt-web-platform-tests-5", + "source-test-python-mozbuild-macosx1014-64/opt-py3", + "test-linux1804-64-asan/opt-mochitest-webgl2-ext-1", + "test-macosx1014-64-qr/debug-web-platform-tests-reftest-1", + "l10n-linux64-shippable/opt", + "test-windows11-64-2009/opt-mochitest-webgl1-ext", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-1", + "toolchain-win64-clang-tidy", + "test-windows11-64-2009/debug-web-platform-tests-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-search-restaurants", + "test-macosx1014-64-shippable/opt-raptor-webaudio-firefox", + "test-linux1804-64/debug-mochitest-webgpu-spi-nw", + "test-linux1804-64/debug-mochitest-webgl2-ext-2", + "test-linux64-shippable/opt-talos-other", + "build-android-aarch64/opt", + "test-linux1804-64-qr/opt-jsreftest-2", + "test-windows7-32/debug-reftest-3", + "test-windows7-32-shippable/opt-awsy-base", + "test-windows11-64-2009/opt-mochitest-plain-5", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1", + "test-linux1804-64-qr/debug-reftest-swr-6", + "test-windows11-64-2009/opt-mochitest-browser-chrome-4", + "test-linux1804-64/debug-mochitest-plain-1", + "test-linux64-shippable/opt-talos-perf-reftest-singletons", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-16", + "test-windows11-64-2009/debug-telemetry-tests-client", + "test-windows7-32/debug-mochitest-browser-chrome-4", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-youtube", + "test-windows11-64-2009-shippable-qr/opt-talos-tabswitch", + "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-3", + "test-linux1804-64-asan/opt-mochitest-chrome-gpu", + "test-linux1804-64-tsan/opt-mochitest-plain-11", + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-3", + "test-windows11-64-2009-qr/opt-reftest-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-8", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-mail", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-instagram", + "test-windows7-32/debug-web-platform-tests-6", + "test-linux1804-64/opt-jsreftest-3", + "test-macosx1014-64/opt-web-platform-tests-wdspec-3", + "test-macosx1014-64/debug-web-platform-tests-6", + "test-linux64-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "test-linux1804-64/opt-xpcshell-1", + "build-android-arm-gcp/debug", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-12", + "test-macosx1014-64/opt-browser-screenshots", + "test-windows11-64-2009/debug-xpcshell-2", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-3", + "test-windows11-64-2009/debug-mochitest-plain-5", + "test-windows11-64-2009-qr/debug-mochitest-webgpu", + "test-linux1804-64/debug-reftest-7", + "test-windows11-64-2009-shippable-qr/opt-talos-dromaeojs", + "test-macosx1014-64/opt-reftest-8", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-6", + "test-macosx1014-64-qr/debug-reftest-4", + "test-linux1804-64-qr/debug-reftest-8", + "test-windows11-64-2009/opt-mochitest-plain-2", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-twitter", + "test-linux1804-64-qr/debug-mochitest-webgl2-ext-2", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-reddit", + "test-macosx1014-64/debug-test-verify", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-15", + "test-macosx1014-64/debug-mochitest-webgl2-ext-1", + "test-linux1804-64-qr/opt-mochitest-webgl2-ext-1", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yandex", + "test-linux64-shippable/opt-raptor-motionmark-animometer-firefox", + "test-macosx1014-64/debug-mochitest-browser-chrome-1", + "test-windows7-32/opt-mochitest-plain-3", + "test-linux1804-64-asan/opt-web-platform-tests-13", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-outlook", + "test-linux1804-64-qr/opt-crashtest", + "test-windows11-64-2009/debug-mochitest-webgpu", + "test-windows11-64-2009-qr/opt-web-platform-tests-4", + "test-macosx1014-64/opt-mochitest-media-gli-2", + "test-macosx1014-64/debug-jittest-1proc-1", + "test-linux1804-64-tsan/opt-mochitest-plain-1", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-paypal", + "test-macosx1014-64/debug-web-platform-tests-18", + "test-macosx1014-64/debug-mochitest-webgl1-core", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-5", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-espn", + "test-linux1804-64-qr/debug-mochitest-webgpu", + "test-windows7-32/opt-web-platform-tests-reftest-3", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yandex", + "test-windows7-32/debug-jsreftest-1", + "test-windows11-64-2009/opt-firefox-ui-functional-local", + "test-windows11-64-2009/opt-mochitest-webgl2-core", + "test-windows11-64-2009/debug-mochitest-chrome-1proc-1", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-3", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-reddit", + "test-linux1804-64-qr/opt-reftest-1", + "toolchain-macosx64-geckodriver", + "test-linux1804-64-asan/opt-mochitest-media-spi-3", + "test-macosx1014-64/opt-jsreftest-2", + "test-windows7-32/opt-mochitest-webgpu", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-4", + "build-android-aarch64-gcp/opt", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-amazon", + "test-linux1804-64/debug-mochitest-browser-chrome-4", + "test-linux1804-64-qr/opt-mochitest-media-2", + "test-macosx1014-64/opt-marionette", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-8", + "test-macosx1014-64/debug-web-platform-tests-17", + "test-linux1804-64-qr/opt-reftest-5", + "test-windows7-32/debug-web-platform-tests-3", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-docs", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-10", + "test-linux1804-64/debug-mochitest-browser-chrome-15", + "test-windows7-32-shippable/opt-talos-g4", + "test-windows11-64-2009/opt-mochitest-webgpu", + "test-windows11-64-2009/opt-web-platform-tests-8", + "test-macosx1014-64/opt-mochitest-plain-2", + "test-macosx1014-64/debug-mochitest-media-spi-2", + "test-linux1804-64-qr/debug-web-platform-tests-7", + "test-linux1804-64-tsan/opt-mochitest-plain-8", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-14", + "test-windows7-32-shippable/opt-talos-perf-reftest-singletons", + "build-signing-win64/opt", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-6", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-4", + "toolchain-win32-minidump-stackwalk", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-6", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-paypal", + "source-test-python-raptor-windows11-64-2009/opt-py2", + "test-macosx1014-64-shippable/opt-raptor-speedometer-firefox", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-google-mail", + "test-linux1804-64/opt-mochitest-media-spi-2", + "test-linux1804-64-asan/opt-web-platform-tests-22", + "build-macosx64-fuzzing/debug", + "test-linux1804-64/debug-web-platform-tests-wdspec-1", + "test-macosx1014-64/debug-web-platform-tests-wdspec-2", + "test-windows11-64-2009-shippable/opt-awsy-base", + "test-windows7-32/opt-mochitest-chrome-1proc-2", + "source-test-node-newtab-unit-tests", + "test-linux1804-64/debug-mochitest-webgl2-ext-4", + "source-test-cram-tryselect", + "test-macosx1014-64-qr/opt-reftest-6", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-2", + "test-windows11-64-2009-shippable/opt-talos-perf-reftest-singletons", + "test-macosx1014-64/opt-mochitest-browser-chrome-7", + "test-windows11-64-2009/debug-mochitest-media", + "test-linux1804-64/debug-mochitest-webgl1-ext", + "test-linux1804-64-qr/opt-mochitest-plain-1", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-maps", + "test-windows11-64-2009/debug-web-platform-tests-11", + "toolchain-wasi-sysroot-9", + "test-linux1804-64-qr/debug-mochitest-plain-13", + "toolchain-linux64-sccache", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-16", + "test-windows11-64-2009-asan/opt-reftest-1", + "source-test-mozlint-py-pylint", + "test-windows7-32/opt-mochitest-browser-chrome-5", + "test-windows11-64-2009/debug-mochitest-chrome-1proc-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-facebook", + "test-macosx1014-64/debug-reftest-3", + "test-windows7-32/debug-telemetry-tests-client", + "test-linux1804-64-qr/opt-web-platform-tests-3", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-1", + "test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-jianshu", + "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-2", + "toolchain-wasi-sysroot-11", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign", + "test-windows11-64-2009-qr/opt-mochitest-plain-gpu", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-1", + "test-windows11-64-2009/opt-mochitest-plain-gpu", + "test-linux1804-64/debug-web-platform-tests-3", + "test-windows11-64-2009-shippable/opt-talos-chrome", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-bing", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-apple", + "test-linux1804-64/opt-telemetry-tests-client", + "test-windows11-64-2009/debug-web-platform-tests-7", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-facebook", + "test-windows11-64-2009-asan/opt-mochitest-webgl1-ext", + "test-linux1804-64-qr/debug-reftest-6", + "test-linux1804-64-asan/opt-web-platform-tests-21", + "test-linux1804-64-asan-qr/opt-reftest-8", + "test-linux1804-64-shippable/opt-awsy", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-twitter", + "test-linux1804-64-asan-qr/opt-reftest-5", + "test-linux1804-64/debug-xpcshell-spi-nw-1", + "build-win64-asan/debug", + "test-windows7-32/debug-mochitest-media-2", + "test-windows7-32/opt-reftest-1", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-wikipedia", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-instagram", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-5", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-3", + "test-linux1804-64/opt-web-platform-tests-10", + "test-linux1804-64-qr/opt-web-platform-tests-2", + "test-linux1804-64/opt-test-verify", + "test-macosx1014-64/opt-firefox-ui-functional-local", + "test-windows7-32-shippable/opt-talos-bcv", + "test-macosx1014-64/debug-mochitest-devtools-chrome-1", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-google-mail", + "test-macosx1014-64-shippable/opt-awsy-base", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-2", + "build-win64-aarch64/debug", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-imdb", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-10", + "test-windows7-32/debug-mochitest-chrome-gpu", + "toolchain-linux64-dump-syms", + "test-linux64-shippable-qr/opt-talos-tp5o", + "test-windows11-64-2009-shippable-qr/opt-raptor-stylebench-firefox", + "source-test-shadow-scheduler-relevant_tests", + "test-windows7-32/debug-mochitest-plain-5", + "test-linux1804-64-asan/opt-reftest-3", + "test-linux64-shippable/opt-talos-tp5o", + "test-macosx1014-64/debug-mochitest-plain-3", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-4", + "test-windows11-64-2009/debug-mochitest-plain-4", + "test-linux1804-64/debug-mochitest-browser-chrome-6", + "test-macosx1014-64/debug-mochitest-media-spi-1", + "test-windows11-64-2009/debug-web-platform-tests-14", + "source-test-shadow-scheduler-bugbug_tasks_medium", + "build-linux64-asan/opt", + "test-linux1804-64/debug-web-platform-tests-16", + "test-macosx1014-64/debug-mochitest-browser-chrome-12", + "test-windows11-64-2009-shippable/opt-talos-webgl", + "test-macosx1014-64/debug-web-platform-tests-14", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-6", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-7", + "spidermonkey-sm-arm64-sim-linux64/debug", + "test-windows7-32/debug-mochitest-plain-gpu", + "test-linux1804-64/debug-mochitest-devtools-chrome-4", + "test-android-em-7.0-x86_64/opt-geckoview-junit-multi", + "test-windows11-64-2009-asan/opt-mochitest-webgl2-core", + "test-macosx1014-64/opt-mochitest-media-spi-2", + "test-windows11-64-2009/debug-mochitest-devtools-chrome-5", + "source-test-python-mozbase-macosx1014-64/opt-py2", + "source-test-python-mozbuild-windows11-64-2009/opt-py3", + "test-windows11-64-2009/debug-jsreftest-3", + "test-macosx1014-64/opt-web-platform-tests-1", + "test-linux1804-64-qr/debug-mochitest-plain-1", + "test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest", + "build-linux64-asan-fuzzing/opt", + "test-linux1804-64/debug-web-platform-tests-7", + "test-macosx1014-64/opt-web-platform-tests-wdspec-2", + "source-test-jsshell-bench-octane-sm", + "test-macosx1014-64/opt-web-platform-tests-reftest-3", + "test-linux1804-64-qr/opt-xpcshell-2", + "test-linux1804-64-qr/debug-xpcshell-2", + "test-linux1804-64/debug-reftest-6", + "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-4", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-docs", + "test-linux1804-64-qr/debug-web-platform-tests-wdspec-2", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-5", + "test-windows11-64-2009/opt-mochitest-a11y-1proc", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-reddit", + "test-macosx1014-64/debug-mochitest-media-1", + "test-windows7-32/debug-web-platform-tests-wdspec-1", + "test-linux1804-64/debug-reftest-no-accel-3", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-docs", + "test-macosx1014-64/debug-mochitest-media-gli-2", + "test-linux64-shippable/opt-raptor-assorted-dom-firefox", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-1", + "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-3", + "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-3", + "test-linux1804-64/opt-web-platform-tests-reftest-1", + "test-linux1804-64/debug-mochitest-chrome-1proc-1", + "test-linux1804-64-qr/opt-reftest-4", + "test-linux64-shippable-qr/opt-talos-damp", + "test-macosx1014-64/opt-mochitest-webgl1-core", + "test-windows11-64-2009/debug-web-platform-tests-reftest-4", + "test-linux1804-64/debug-reftest-4", + "test-macosx1014-64-shippable/opt-talos-damp", + "test-windows7-32/opt-crashtest", + "test-linux64-shippable/opt-raptor-ares6-firefox", + "test-macosx1014-64/opt-xpcshell-1", + "build-win64-plain/debug", + "test-macosx1014-64/debug-web-platform-tests-5", + "test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons", + "test-linux1804-64-qr/debug-web-platform-tests-8", + "build-win64-aarch64-eme/opt", + "build-macosx64/opt", + "test-linux1804-64/debug-web-platform-tests-4", + "test-windows11-64-2009-shippable/opt-raptor-stylebench-firefox", + "test-linux1804-64-qr/debug-mochitest-plain-2", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-google-mail", + "test-macosx1014-64/debug-mochitest-browser-chrome-5", + "test-windows11-64-2009-shippable-qr/opt-talos-realworld-webextensions", + "test-windows7-32/debug-reftest-no-accel-2", + "source-test-python-taskgraph-tests-py3", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-3", + "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-ebay", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-2", + "test-windows11-64-2009/opt-mochitest-plain-1", + "test-windows11-64-2009/debug-cppunit-1proc", + "l10n-win64-shippable/opt", + "test-windows11-64-2009/opt-mochitest-media", + "source-test-python-telemetry-python-windows11-64-2009/opt-py2", + "test-macosx1014-64/debug-mochitest-browser-chrome-2", + "source-test-wpt-manifest-upload", + "test-windows7-32/opt-mochitest-browser-chrome-6", + "test-linux1804-64-asan/opt-mochitest-webgl2-ext-2", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-netflix", + "test-windows11-64-2009-qr/debug-crashtest", + "source-test-python-raptor-windows11-64-2009/opt-py3", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-imgur", + "test-windows11-64-2009/debug-web-platform-tests-reftest-5", + "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-2", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-1", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yandex", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-linkedin", + "test-linux64-shippable/opt-talos-g1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-mail", + "test-linux1804-64/opt-web-platform-tests-print-reftest", + "source-test-python-mozrelease-py3", + "test-macosx1014-64/debug-mochitest-chrome-gpu", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-microsoft", + "test-linux1804-64/debug-mochitest-chrome-1proc-3", + "test-linux1804-64/debug-gtest-1proc", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-3", + "test-macosx1014-64/debug-xpcshell-1", + "test-macosx1014-64/opt-reftest-5", + "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-4", + "test-linux1804-64-tsan/opt-mochitest-plain-9", + "test-linux1804-64/debug-reftest-no-accel-5", + "source-test-shadow-scheduler-bugbug_debug_disperse", + "build-android-x86-fuzzing/debug", + "test-linux1804-64/debug-crashtest", + "build-linux64-tsan-fuzzing/opt", + "toolchain-macosx64-cbindgen", + "test-linux1804-64-qr/opt-mochitest-plain-5", + "test-linux1804-64/opt-mochitest-media-1", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-slides", + "test-linux1804-64-qr/debug-mochitest-plain-10", + "test-macosx1014-64-shippable/opt-talos-webgl-profiling-gli", + "test-windows7-32/opt-web-platform-tests-5", + "build-win64-rusttests/debug", + "test-windows11-64-2009/debug-mochitest-chrome-1proc-3", + "test-macosx1014-64/opt-mochitest-browser-chrome-1", + "test-windows11-64-2009/debug-mochitest-devtools-chrome-4", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-4", + "test-linux1804-64-asan/opt-mochitest-plain-9", + "test-linux1804-64/debug-web-platform-tests-wdspec-2", + "test-macosx1014-64/opt-web-platform-tests-10", + "test-macosx1014-64/debug-mochitest-browser-chrome-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-6", + "test-macosx1014-64/opt-mochitest-devtools-chrome-3", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-7", + "test-macosx1014-64/opt-jittest-1proc", + "test-linux1804-64/opt-web-platform-tests-1", + "test-linux1804-64/debug-web-platform-tests-reftest-3", + "test-linux1804-64/opt-mochitest-a11y-1proc", + "test-windows11-64-2009-asan/opt-cppunit-1proc", + "test-windows7-32/opt-mochitest-chrome-1proc-1", + "test-linux1804-64-qr/opt-xpcshell-1", + "test-macosx1014-64-qr/opt-web-platform-tests-reftest-4", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-2", + "test-linux1804-64/debug-reftest-no-accel-8", + "test-linux1804-64-qr/opt-web-platform-tests-10", + "test-windows7-32/opt-reftest-no-accel-1", + "source-test-python-condprof-macosx1014-64/opt-py2", + "test-linux1804-64-tsan/opt-mochitest-plain-16", + "test-macosx1014-64/opt-mochitest-browser-chrome-4", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-5", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-8", + "source-test-python-marionette-harness-linux1804-64/opt-py2", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-paypal", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-sheets", + "toolchain-linux64-geckodriver", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-fandom", + "test-linux1804-64-qr/debug-mochitest-plain-3", + "test-linux1804-64-asan/opt-mochitest-media-2", + "test-linux1804-64/opt-mochitest-browser-chrome-5", + "test-macosx1014-64/opt-web-platform-tests-wdspec-headless-1", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-5", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-jianshu", + "build-android-x86_64-gcp/debug", + "test-windows7-32/opt-xpcshell-1", + "source-test-python-talos-py2", + "test-windows11-64-2009/debug-mochitest-browser-chrome-7", + "test-linux1804-64/opt-web-platform-tests-9", + "test-windows11-64-2009-asan/opt-marionette", + "build-linux64/debug", + "test-android-em-7.0-x86_64/debug-geckoview-junit", + "test-android-em-7.0-x86_64/opt-geckoview-reftest-1", + "test-linux64-shippable-qr/opt-talos-other-swr", + "test-macosx1014-64/opt-web-platform-tests-3", + "test-macosx1014-64/opt-mochitest-browser-chrome-5", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-1", + "test-linux1804-64/opt-mochitest-browser-chrome-7", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-live-geckoview-cold-cnn-ampstories", + "test-windows11-64-2009/debug-marionette", + "test-windows7-32-shippable/opt-awsy-tp6", + "build-win64-aarch64/opt", + "test-linux1804-64/debug-mochitest-media-2", + "test-macosx1014-64/debug-jsreftest-2", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-netflix", + "test-windows11-64-2009/debug-web-platform-tests-8", + "test-linux1804-64-asan/opt-xpcshell-2", + "test-linux1804-64/debug-mochitest-plain-12", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-youtube", + "build-signing-win64-aarch64-shippable/opt", + "test-linux1804-64-qr/debug-reftest-swr-1", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yahoo-news", + "source-test-python-taskgraph-tests-py2", + "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-2", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-11", + "source-test-python-mozbuild-linux1804-64/opt-py3", + "test-windows11-64-2009/debug-web-platform-tests-reftest-3", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-3", + "build-linux64-tsan/opt", + "test-linux1804-64-qr/debug-web-platform-tests-6", + "test-linux1804-64-asan/opt-crashtest", + "test-linux1804-64-tsan/opt-mochitest-plain-14", + "test-linux1804-64-shippable-qr/opt-awsy-tp6", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-11", + "test-linux1804-64-tsan/opt-mochitest-plain-5", + "test-macosx1014-64-shippable/opt-raptor-ares6-firefox", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-sheets", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest", + "test-linux1804-64/debug-mochitest-devtools-chrome-2", + "test-windows11-64-2009-shippable-qr/opt-talos-g4", + "source-test-mozlint-android-lints", + "test-macosx1014-64-shippable/opt-talos-webgl-gli", + "test-macosx1014-64/debug-firefox-ui-functional-remote", + "test-windows11-64-2009-asan/opt-mochitest-plain-4", + "test-windows7-32/opt-mochitest-chrome-gpu", + "test-windows7-32/opt-web-platform-tests-7", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-2", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-ebay", + "test-macosx1014-64/opt-mochitest-media-spi-1", + "test-linux1804-64-asan/opt-web-platform-tests-14", + "test-windows11-64-2009-shippable/opt-talos-dromaeojs", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-wikipedia", + "build-linux64-gcp/debug", + "test-windows11-64-2009-shippable/opt-talos-tabswitch", + "test-macosx1014-64/debug-mochitest-a11y-1proc", + "test-windows7-32/opt-web-platform-tests-9", + "test-macosx1014-64/opt-xpcshell-2", + "test-linux1804-64-qr/debug-jsreftest-1", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-google", + "test-windows7-32/opt-reftest-no-accel-4", + "test-macosx1014-64/debug-mochitest-media-2", + "test-linux1804-64/opt-mochitest-media-spi-3", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-imgur", + "test-linux1804-64-asan/opt-web-platform-tests-19", + "test-windows7-32/debug-xpcshell-2", + "test-linux1804-64/debug-test-verify", + "test-windows11-64-2009-shippable-qr/opt-raptor-sunspider-firefox", + "build-signing-linux64/opt", + "test-linux1804-64-asan/opt-mochitest-plain-7", + "test-linux1804-64/opt-reftest-3", + "test-linux1804-64-shippable/opt-awsy-base", + "test-linux1804-64-shippable-qr/opt-awsy", + "build-win64-asan/opt", + "test-windows7-32/opt-web-platform-tests-2", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-gpu", + "test-linux1804-64-qr/debug-xpcshell-4", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-media-spi", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-wikipedia", + "test-linux1804-64-qr/debug-mochitest-chrome-1proc-2", + "test-linux1804-64-asan/opt-reftest-no-accel-6", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-web-de", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-5", + "webrender-android-emulator-debug", + "test-linux1804-64/opt-mochitest-remote", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-imdb", + "test-linux1804-64/debug-mochitest-browser-chrome-9", + "test-linux1804-64/opt-mochitest-media-2", + "test-linux1804-64/debug-reftest-no-accel-2", + "test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-stackoverflow", + "test-macosx1014-64-shippable/opt-mochitest-webgl1-core-gli", + "test-macosx1014-64/debug-mochitest-webgl2-ext-2", + "test-linux1804-64/opt-web-platform-tests-reftest-2", + "repackage-macosx64/opt", + "test-linux1804-64-qr/debug-mochitest-media-spi-3", + "test-windows11-64-2009/debug-mochitest-media-spi", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-ebay", + "test-windows7-32/debug-test-verify", + "test-windows11-64-2009-qr/debug-mochitest-webgl2-core", + "test-windows11-64-2009/debug-web-platform-tests-9", + "test-macosx1014-64/opt-web-platform-tests-crashtest", + "test-windows11-64-2009-asan/opt-reftest-3", + "test-windows7-32-shippable/opt-talos-perf-reftest", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-3", + "test-linux64-shippable/opt-talos-webgl", + "test-linux1804-64-asan/opt-mochitest-media-1", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign", + "test-linux1804-64-qr/debug-mochitest-plain-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-stackoverflow", + "test-windows11-64-2009-qr/opt-web-platform-tests-crashtest", + "test-linux1804-64-asan/opt-reftest-no-accel-5", + "test-linux64-shippable-qr/opt-raptor-ares6-firefox", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-5", + "test-linux1804-64/opt-xpcshell-3", + "spidermonkey-sm-arm-sim-linux32/debug", + "source-test-node-eslint-plugin-mozilla", + "test-windows11-64-2009/opt-firefox-ui-functional-remote", + "build-win64-aarch64-shippable/opt", + "source-test-shadow-scheduler-bugbug_tasks_high", + "test-linux1804-64-qr/debug-mochitest-webgl1-ext", + "test-windows11-64-2009/debug-mochitest-plain-gpu", + "test-linux1804-64/opt-web-platform-tests-7", + "test-linux1804-64-qr/debug-mochitest-plain-12", + "test-windows7-32/opt-jsreftest-2", + "source-test-python-mozbase-linux1804-64/opt-py3", + "test-linux1804-64-qr/debug-gtest-1proc", + "spidermonkey-sm-fuzzing-linux64/opt", + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-allrecipes", + "test-linux1804-64/debug-mochitest-webgl2-ext-1", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-12", + "test-linux1804-64-qr/debug-web-platform-tests-crashtest", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-linkedin", + "hazard-linux64-haz/debug", + "test-linux1804-64-qr/opt-mochitest-webgl1-ext", + "test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox", + "test-windows7-32/opt-mochitest-media-spi-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-allrecipes", + "source-test-python-xpcom-linux1804-64/opt-py3", + "test-macosx1014-64-shippable/opt-talos-tp5o", + "test-linux1804-64-tsan/opt-xpcshell-2", + "test-windows11-64-2009/debug-web-platform-tests-print-reftest", + "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-3", + "test-linux1804-64/debug-jsreftest-4", + "build-macosx64/debug", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-facebook", + "test-windows11-64-2009/debug-jsreftest-2", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-twitch", + "l10n-macosx64-shippable/opt", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-5", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi", + "test-linux1804-64-qr/opt-mochitest-webgl2-ext-3", + "test-linux1804-64-shippable/opt-awsy-tp6", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-microsoft-support", + "test-windows11-64-2009-qr/debug-mochitest-webgl1-core", + "test-windows11-64-2009-shippable-qr/opt-awsy-base", + "upload-generated-sources-win64-aarch64-shippable/opt", + "test-windows7-32/debug-mochitest-remote", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-netflix", + "test-linux1804-64-qr/opt-mochitest-plain-2", + "test-windows7-32/debug-reftest-4", + "source-test-python-raptor-linux1804-64/opt-py3", + "test-windows11-64-2009-asan/opt-mochitest-chrome-gpu", + "test-linux1804-64/opt-mochitest-browser-chrome-2", + "test-windows11-64-2009-asan/opt-jsreftest-3", + "test-linux1804-64-asan/opt-mochitest-media-3", + "test-linux1804-64/debug-mochitest-plain-16", + "test-windows11-64-2009-qr/opt-web-platform-tests-7", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-reddit", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3", + "test-linux1804-64/debug-xpcshell-spi-nw-5", + "test-linux1804-64-asan/opt-mochitest-plain-gpu", + "test-linux1804-64-qr/debug-mochitest-plain-14", + "test-macosx1014-64-shippable/opt-talos-chrome", + "toolchain-clang-dist-toolchain", + "test-linux1804-64-qr/debug-reftest-swr-2", + "test-windows7-32/opt-mochitest-browser-chrome-2", + "source-test-node-devtools-tests", + "test-linux1804-64-asan/opt-reftest-4", + "test-linux64-shippable/opt-talos-g4", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-amazon", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yandex", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yahoo-news", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-12", + "test-windows7-32/debug-mochitest-plain-4", + "test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox", + "test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox", + "test-linux1804-64-qr/debug-web-platform-tests-16", + "toolchain-linux64-minidump-stackwalk", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-3", + "test-linux1804-64-asan/opt-web-platform-tests-crashtest", + "toolchain-win64-node-10", + "toolchain-win64-node-12", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-docs", + "test-linux64-shippable/opt-raptor-webaudio-firefox", + "source-test-python-mozperftest-macosx1014-64/opt", + "test-windows7-32/debug-mochitest-media-1", + "test-windows11-64-2009/opt-web-platform-tests-3", + "test-linux1804-64-qr/debug-mochitest-webgl2-ext-3", + "test-android-em-7.0-x86_64/opt-geckoview-crashtest", + "test-macosx1014-64/debug-mochitest-webgl2-ext-4", + "test-windows11-64-2009/opt-test-verify", + "test-linux1804-64-qr/debug-jsreftest-5", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-maps", + "test-linux1804-64/opt-mochitest-webgl2-core", + "test-linux1804-64/debug-xpcshell-1", + "test-linux1804-64-qr/debug-mochitest-plain-14", + "test-macosx1014-64-qr/debug-reftest-2", + "test-linux1804-64/debug-web-platform-tests-reftest-4", + "test-linux1804-64/debug-xpcshell-spi-nw-2", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-4", + "source-test-mozlint-eslint", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-media", + "source-test-shadow-scheduler-bugbug_disperse_reduced_medium", + "toolchain-linux64-gn", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing-search-restaurants", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-linkedin", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-6", + "test-linux64-shippable-qr/opt-talos-svgr-swr", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-office", + "test-macosx1014-64/debug-web-platform-tests-9", + "test-linux1804-64/debug-firefox-ui-functional-local", + "test-windows11-64-2009/debug-web-platform-tests-10", + "test-windows7-32/debug-mochitest-media-3", + "test-linux1804-64/debug-reftest-1", + "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-2", + "test-windows7-32/debug-mochitest-plain-1", + "build-signing-win64-aarch64/opt", + "test-linux64-shippable-qr/opt-talos-g5", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-tumblr", + "test-linux1804-64/opt-gtest-1proc", + "test-linux1804-64-qr/debug-mochitest-plain-8", + "test-macosx1014-64/opt-mochitest-webgl2-core", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-espn", + "test-linux1804-64/debug-xpcshell-spi-nw-3", + "test-linux1804-64-qr/opt-mochitest-webgl2-ext-2", + "test-windows11-64-2009-shippable-qr/opt-awsy-tp6", + "source-test-python-mozversioncontrol-py3", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-imdb", + "test-linux1804-64/opt-reftest-2", + "test-macosx1014-64/opt-web-platform-tests-2", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-facebook", + "test-windows11-64-2009/debug-firefox-ui-functional-local", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-3", + "test-linux64-shippable-qr/opt-talos-g3", + "test-linux1804-64-asan/opt-reftest-6", + "test-linux1804-64/debug-jsreftest-2", + "test-macosx1014-64/opt-web-platform-tests-wdspec-headless-2", + "test-windows11-64-2009/opt-browser-screenshots", + "test-linux1804-64-qr/debug-reftest-4", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-news", + "test-macosx1014-64-qr/opt-reftest-1", + "test-windows11-64-2009/opt-web-platform-tests-wdspec-1", + "test-macosx1014-64/opt-mochitest-webgl2-ext-3", + "test-linux1804-64-qr/opt-mochitest-webgl2-ext-4", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-fandom", + "test-macosx1014-64/opt-web-platform-tests-reftest-2", + "test-linux1804-64-qr/debug-mochitest-chrome-gpu", + "test-windows7-32/debug-web-platform-tests-8", + "test-windows11-64-2009-qr/debug-mochitest-plain-gpu", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-media", + "test-linux1804-64-asan/opt-xpcshell-4", + "test-windows11-64-2009-qr/opt-web-platform-tests-1", + "test-windows7-32-shippable/opt-raptor-wasm-godot-firefox", + "test-macosx1014-64/opt-crashtest", + "test-windows11-64-2009-shippable-qr/opt-talos-chrome", + "source-test-shadow-scheduler-bugbug_reduced", + "test-windows11-64-2009/opt-marionette", + "test-linux1804-64/opt-mochitest-browser-chrome-3", + "webrender-wrench-android-release", + "test-macosx1014-64/debug-web-platform-tests-wdspec-1", + "source-test-python-featuregates-windows11-64-2009/opt-py2", + "source-test-python-mozrelease-py2", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-2", + "test-windows11-64-2009/opt-reftest-2", + "source-test-shadow-scheduler-bugbug_disperse_medium_no_unseen", + "source-test-mozlint-file-whitespace", + "test-windows7-32/debug-reftest-gpu-1", + "test-linux1804-64/debug-mochitest-webgl2-core", + "test-windows7-32/opt-web-platform-tests-wdspec-headless-1", + "build-signing-android-geckoview-fat-aar-shippable/opt", + "test-linux1804-64-tsan/opt-mochitest-plain-12", + "test-windows11-64-2009-shippable/opt-talos-xperf", + "test-windows11-64-2009/debug-mochitest-webgl1-core", + "test-windows7-32/debug-reftest-no-accel-1", + "test-windows11-64-2009/debug-reftest-2", + "test-windows11-64-2009-shippable/opt-talos-svgr", + "test-linux1804-64-asan/opt-mochitest-chrome-1proc-1", + "test-windows11-64-2009/debug-web-platform-tests-5", + "toolchain-win64-cbindgen", + "test-windows11-64-2009/opt-web-platform-tests-wdspec-2", + "test-windows7-32-shippable/opt-raptor-ares6-firefox", + "test-linux1804-64/opt-mochitest-plain-5", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-amazon", + "toolchain-macosx64-minidump-stackwalk", + "webrender-linux-debug", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-fandom", + "test-windows7-32-shippable/opt-awsy", + "test-macosx1014-64/debug-web-platform-tests-2", + "test-windows7-32/debug-mochitest-browser-chrome-6", + "test-linux1804-64-asan/opt-mochitest-chrome-1proc-2", + "test-linux1804-64/opt-xpcshell-2", + "test-linux1804-64-asan/opt-marionette", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook-cristiano", + "test-windows7-32/opt-web-platform-tests-4", + "test-macosx1014-64/opt-mochitest-webgpu", + "test-linux1804-64/opt-mochitest-devtools-chrome-2", + "test-macosx1014-64-shippable/opt-talos-other", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-16", + "test-linux1804-64/opt-marionette", + "test-linux1804-64/opt-reftest-no-accel-3", + "test-macosx1014-64/opt-mochitest-devtools-chrome-4", + "test-windows7-32/debug-marionette", + "test-linux1804-64-qr/debug-mochitest-chrome-1proc-3", + "test-linux1804-64/opt-web-platform-tests-wdspec-3", + "test-windows11-64-2009/debug-mochitest-devtools-chrome-3", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-media-spi", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-amazon", + "test-linux1804-64/opt-reftest-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bbc", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-2", + "test-linux1804-64/debug-mochitest-browser-chrome-1", + "test-windows11-64-2009/opt-mochitest-webgl2-ext-1", + "test-macosx1014-64/debug-web-platform-tests-16", + "build-linux64-plain/debug", + "test-macosx1014-64/opt-mochitest-a11y-1proc", + "test-macosx1014-64/debug-web-platform-tests-1", + "test-linux1804-64-qr/debug-mochitest-plain-15", + "test-windows11-64-2009/debug-mochitest-plain-3", + "test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox", + "test-linux1804-64/debug-mochitest-browser-chrome-3", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail", + "test-linux1804-64-asan/opt-reftest-5", + "test-windows11-64-2009-qr/debug-mochitest-media", + "build-signing-win32/opt", + "test-linux1804-64-qr/debug-mochitest-media-2", + "source-test-python-mochitest-harness-linux1804-64/debug", + "test-linux1804-64-qr/debug-web-platform-tests-print-reftest", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-13", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-2", + "test-macosx1014-64/debug-mochitest-plain-5", + "test-linux1804-64-asan/opt-mochitest-plain-10", + "build-signing-macosx64/opt", + "test-linux1804-64-qr/opt-web-platform-tests-9", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-1", + "build-linux64-asan/debug", + "test-linux1804-64-asan/opt-reftest-no-accel-8", + "test-linux1804-64-asan/opt-jsreftest-3", + "test-linux1804-64/debug-web-platform-tests-wdspec-3", + "test-windows11-64-2009-shippable-qr/opt-talos-other", + "test-macosx1014-64-shippable/opt-awsy-tp6", + "test-linux1804-64/debug-mochitest-browser-chrome-13", + "test-macosx1014-64/debug-mochitest-browser-chrome-14", + "test-windows11-64-2009-shippable-qr/opt-talos-tp5o", + "test-linux1804-64/opt-mochitest-plain-gpu", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-web-de", + "test-windows7-32/debug-jsreftest-3", + "test-windows11-64-2009/opt-xpcshell-2", + "test-macosx1014-64/debug-mochitest-browser-chrome-7", + "test-linux1804-64-qr/debug-xpcshell-5", + "test-windows7-32/opt-web-platform-tests-wdspec-headless-2", + "test-macosx1014-64/opt-mochitest-plain-4", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-live-geckoview-cold-cnn-ampstories", + "test-macosx1014-64-qr/debug-reftest-5", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-5", + "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-2", + "test-linux1804-64/debug-mochitest-plain-10", + "test-linux1804-64-qr/debug-mochitest-remote", + "test-linux1804-64-qr/debug-web-platform-tests-11", + "test-macosx1014-64/debug-jittest-1proc-3", + "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-3", + "test-linux1804-64/debug-web-platform-tests-10", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-slides", + "source-test-python-featuregates-linux1804-64/opt-py3", + "source-test-python-marionette-harness-windows11-64-2009/opt-py2", + "source-test-python-telemetry-python-macosx1014-64/opt-py2", + "test-linux1804-64-qr/debug-mochitest-plain-6", + "test-linux1804-64/debug-mochitest-devtools-chrome-3", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-twitter", + "test-windows11-64-2009-shippable/opt-talos-g5", + "test-windows7-32/opt-web-platform-tests-crashtest", + "test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox", + "test-linux1804-64/opt-web-platform-tests-4", + "test-linux1804-64/debug-jsreftest-5", + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-3", + "test-android-hw-g5-7-0-arm7-shippable/opt-raptor-speedometer-geckoview", + "source-test-python-mozperftest-windows11-64-2009/opt", + "test-windows11-64-2009/opt-web-platform-tests-crashtest", + "test-android-em-7.0-x86_64-shippable/opt-geckoview-junit-multi", + "webrender-wrench-android-debug", + "test-linux1804-64/debug-mochitest-browser-chrome-16", + "test-windows11-64-2009/opt-mochitest-browser-chrome-5", + "spidermonkey-sm-plain-win64/opt", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn", + "test-windows7-32-shippable/opt-talos-realworld-webextensions", + "test-windows7-32/debug-mochitest-media-spi-2", + "test-linux1804-64-qr/debug-xpcshell-6", + "test-macosx1014-64/opt-web-platform-tests-9", + "test-linux1804-64-qr/debug-mochitest-chrome-1proc-1", + "test-windows7-32/opt-mochitest-remote", + "spidermonkey-sm-nojit-linux64/opt", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn-ampstories", + "test-linux1804-64-qr/opt-xpcshell-4", + "test-macosx1014-64/debug-web-platform-tests-print-reftest", + "test-windows11-64-2009/debug-web-platform-tests-reftest-2", + "test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-pinterest", + "test-macosx1014-64/opt-mochitest-webgl2-ext-1", + "test-linux64-shippable-qr/opt-talos-perf-reftest-singletons", + "build-win32/debug", + "test-linux64-shippable-qr/opt-raptor-sunspider-firefox", + "test-linux1804-64-asan/opt-web-platform-tests-18", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-1", + "source-test-mozlint-py-compat", + "build-win32/opt", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-office", + "test-linux1804-64/debug-mochitest-browser-chrome-11", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-1", + "test-windows11-64-2009/opt-gtest-1proc", + "test-windows11-64-2009/opt-mochitest-chrome-1proc-2", + "test-linux1804-64-asan-qr/opt-reftest-7", + "spidermonkey-sm-asan-linux64/opt", + "test-windows11-64-2009-qr/opt-mochitest-chrome-gpu", + "test-linux1804-64/opt-web-platform-tests-wdspec-2", + "test-linux1804-64-qr/debug-mochitest-plain-13", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-outlook", + "test-windows7-32/debug-mochitest-chrome-1proc-3", + "test-macosx1014-64/debug-web-platform-tests-reftest-1", + "test-windows7-32/debug-reftest-gpu-2", + "test-macosx1014-64-qr/debug-web-platform-tests-reftest-4", + "test-windows11-64-2009-asan/opt-mochitest-remote", + "build-android-arm/opt", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube-watch", + "test-linux1804-64-asan/opt-mochitest-plain-3", + "test-macosx1014-64/debug-mochitest-browser-chrome-9", + "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-2", + "test-windows7-32-shippable/opt-talos-g1", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-9", + "test-linux1804-64-asan/opt-firefox-ui-functional-remote", + "test-linux1804-64/debug-mochitest-webgl2-ext-3", + "test-linux1804-64-asan/opt-web-platform-tests-wdspec-2", + "spidermonkey-sm-rootanalysis-linux64/debug", + "toolchain-macosx64-clang-9", + "test-windows7-32/debug-mochitest-chrome-1proc-1", + "test-windows7-32/debug-mochitest-plain-2", + "source-test-mozlint-shellcheck", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign", + "test-macosx1014-64-qr/debug-reftest-3", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-5", + "test-android-em-7.0-x86_64/debug-geckoview-test-verify", + "test-windows7-32/debug-web-platform-tests-print-reftest", + "test-linux1804-64/debug-mochitest-browser-chrome-2", + "test-windows11-64-2009-shippable-qr/opt-talos-g1", + "test-linux1804-64/debug-mochitest-plain-6", + "test-macosx1014-64/opt-mochitest-remote", + "test-linux1804-64/opt-mochitest-chrome-1proc-2", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-linkedin", + "test-windows11-64-2009/opt-web-platform-tests-reftest-3", + "test-macosx1014-64/opt-mochitest-browser-chrome-6", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-2", + "test-windows7-32/debug-mochitest-browser-chrome-3", + "test-windows7-32/opt-web-platform-tests-print-reftest", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-1", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-15", + "test-windows11-64-2009/opt-mochitest-webgl2-ext-3", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-sheets", + "test-linux1804-64-asan/opt-xpcshell-5", + "source-test-python-mozharness", + "test-windows7-32/opt-web-platform-tests-8", + "test-macosx1014-64/opt-reftest-1", + "test-linux1804-64/debug-mochitest-browser-chrome-16", + "test-linux1804-64/debug-web-platform-tests-8", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-8", + "test-linux1804-64-asan/opt-mochitest-plain-4", + "test-linux1804-64/debug-web-platform-tests-11", + "test-linux1804-64/debug-reftest-no-accel-4", + "build-macosx64-asan-fuzzing/opt", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook-cristiano", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-apple", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-4", + "test-linux1804-64-qr/debug-mochitest-a11y-1proc", + "spidermonkey-sm-package-linux64/opt", + "test-windows11-64-2009-qr/opt-web-platform-tests-10", + "test-linux1804-64/debug-mochitest-remote", + "test-windows11-64-2009/debug-web-platform-tests-4", + "test-windows11-64-2009-shippable-qr/opt-raptor-wasm-godot-firefox", + "repackage-linux64/opt", + "test-windows11-64-2009/opt-mochitest-devtools-chrome-3", + "test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox", + "test-linux1804-64/debug-xpcshell-2", + "source-test-shadow-scheduler-bugbug_disperse_medium", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-instagram", + "source-test-doc-generate", + "test-linux1804-64/debug-jsreftest-1", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-sheets", + "test-windows7-32/opt-marionette", + "test-macosx1014-64/opt-mochitest-webgl1-ext", + "test-linux1804-64/debug-web-platform-tests-2", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-1", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-14", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn-ampstories", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-instagram", + "test-linux1804-64-asan-qr/opt-reftest-2", + "test-linux1804-64-qr/debug-jsreftest-4", + "test-linux1804-64-qr/opt-mochitest-media-spi-1", + "test-macosx1014-64/debug-jsreftest-1", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-google-mail", + "test-android-em-7.0-x86_64/debug-geckoview-crashtest", + "test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-2", + "source-test-python-mozbase-windows11-64-2009/opt-py2", + "test-linux1804-64-qr/debug-mochitest-media-spi-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-9", + "test-linux1804-64/debug-web-platform-tests-12", + "spidermonkey-sm-gdb-linux64/debug", + "source-test-mozlint-perfdocs-verify", + "test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc", + "build-linux64-aarch64/opt", + "test-linux64-shippable-qr/opt-talos-svgr", + "test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox", + "test-macosx1014-64/opt-cppunit-1proc", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtest", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-9", + "test-macosx1014-64/opt-firefox-ui-functional-remote", + "test-linux1804-64-qr/debug-reftest-swr-5", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-4", + "test-linux1804-64-qr/opt-mochitest-remote", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-2", + "test-linux1804-64-qr/opt-web-platform-tests-wdspec-2", + "test-linux1804-64/opt-mochitest-media-spi-1", + "test-linux1804-64-asan/opt-firefox-ui-functional-local", + "test-macosx1014-64-qr/opt-reftest-3", + "test-linux1804-64-qr/debug-web-platform-tests-wdspec-1", + "toolchain-macosx64-gn", + "test-linux1804-64/opt-mochitest-browser-chrome-1", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-8", + "test-linux1804-64/debug-telemetry-tests-client", + "test-linux1804-64/opt-web-platform-tests-wdspec-1", + "test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox", + "test-linux1804-64/debug-mochitest-browser-chrome-15", + "test-windows11-64-2009/opt-mochitest-plain-4", + "test-android-em-7.0-x86_64/opt-geckoview-test-verify", + "test-windows11-64-2009-asan/opt-jsreftest-2", + "test-linux1804-64-qr/debug-mochitest-webgl1-core", + "source-test-mozlint-wptlint-gecko", + "test-macosx1014-64-qr/opt-reftest-7", + "test-linux1804-64/opt-mochitest-devtools-chrome-1", + "test-android-em-7.0-x86_64/opt-geckoview-reftest-2", + "test-linux1804-64-qr/debug-mochitest-plain-5", + "test-windows11-64-2009-shippable/opt-raptor-wasm-godot-firefox", + "test-linux1804-64-qr/debug-mochitest-webgl2-core", + "test-windows11-64-2009-qr/opt-mochitest-plain-4", + "test-windows11-64-2009-qr/debug-mochitest-media-spi", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-google-mail", + "test-macosx1014-64-shippable/opt-talos-g5", + "test-windows11-64-2009-qr/opt-crashtest", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-microsoft-support", + "source-test-python-mozlint-linux1804-64/opt-py3", + "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-2", + "test-windows11-64-2009-qr/opt-mochitest-webgl2-core", + "test-windows7-32/debug-crashtest", + "toolchain-win32-gn", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-7", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-apple", + "test-windows11-64-2009-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "test-linux1804-64/debug-mochitest-browser-chrome-1", + "test-windows7-32-shippable/opt-talos-webgl", + "toolchain-win64-clang-cl-11", + "source-test-python-raptor-linux1804-64/opt-py2", + "test-linux1804-64/opt-reftest-5", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-9", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-6", + "test-macosx1014-64/debug-mochitest-devtools-chrome-6", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-1", + "test-linux1804-64-asan/opt-reftest-8", + "test-windows7-32/debug-mochitest-browser-chrome-2", + "build-signing-win32/debug", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-facebook-redesign", + "toolchain-linux64-node-10", + "toolchain-linux64-node-12", + "test-windows11-64-2009/debug-mochitest-webgl2-core", + "test-linux1804-64/debug-xpcshell-4", + "test-windows11-64-2009/opt-web-platform-tests-1", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest", + "source-test-python-mozbuild-windows11-64-2009/opt-py2", + "toolchain-linux64-fix-stacks", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-10", + "toolchain-win64-clang-cl-9", + "test-linux1804-64/debug-reftest-8", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-google", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-6", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-8", + "test-linux1804-64-qr/debug-web-platform-tests-13", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-netflix", + "test-linux1804-64-qr/debug-mochitest-plain-9", + "test-macosx1014-64/debug-mochitest-plain-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-sheets", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-4", + "test-linux1804-64-qr/opt-mochitest-webgl1-core", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-outlook", + "test-linux1804-64/debug-mochitest-browser-chrome-10", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-microsoft", + "test-macosx1014-64/debug-mochitest-chrome-1proc-2", + "test-linux1804-64-asan/opt-mochitest-a11y-1proc", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-10", + "test-linux1804-64-tsan/opt-mochitest-plain-2", + "test-linux1804-64/debug-mochitest-plain-14", + "test-windows7-32/opt-reftest-gpu-1", + "test-linux1804-64-qr/debug-web-platform-tests-9", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-microsoft", + "source-test-mozlint-rejected-words", + "test-linux1804-64/debug-reftest-no-accel-1", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-2", + "test-macosx1014-64/debug-mochitest-browser-chrome-11", + "test-linux1804-64/debug-mochitest-plain-15", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-2", + "test-linux1804-64/opt-mochitest-plain-4", + "test-macosx1014-64-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "test-windows7-32/debug-web-platform-tests-reftest-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-2", + "test-windows11-64-2009-shippable/opt-raptor-motionmark-animometer-firefox", + "test-linux1804-64/opt-web-platform-tests-3", + "test-windows11-64-2009-asan/opt-crashtest", + "source-test-python-firefox-ci-py3", + "test-linux1804-64/opt-firefox-ui-functional-local", + "test-linux1804-64-qr/opt-reftest-3", + "test-windows11-64-2009/debug-mochitest-devtools-chrome-1", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-ares6-firefox", + "test-macosx1014-64/opt-web-platform-tests-8", + "test-windows7-32/opt-web-platform-tests-11", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-netflix", + "test-linux1804-64-tsan/opt-xpcshell-4", + "test-macosx1014-64/debug-web-platform-tests-reftest-4", + "test-windows11-64-2009/debug-mochitest-a11y-1proc", + "test-windows7-32/opt-web-platform-tests-wdspec-3", + "source-test-python-telemetry-integration-tests-linux1804-64/opt", + "test-windows7-32/debug-reftest-no-accel-4", + "test-linux1804-64/debug-mochitest-browser-chrome-10", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-ebay", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-media", + "test-linux1804-64-tsan/opt-xpcshell-6", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-11", + "test-windows11-64-2009-shippable/opt-raptor-webaudio-firefox", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-reddit", + "test-windows11-64-2009/debug-web-platform-tests-wdspec-3", + "test-macosx1014-64/debug-web-platform-tests-reftest-3", + "test-windows11-64-2009/opt-mochitest-devtools-chrome-2", + "test-windows11-64-2009/debug-gtest-1proc", + "test-windows7-32-shippable/opt-talos-other", + "test-macosx1014-64/debug-mochitest-devtools-chrome-4", + "webrender-macos-release", + "test-linux1804-64-asan/opt-web-platform-tests-12", + "test-windows11-64-2009-shippable/opt-talos-damp", + "test-macosx1014-64/opt-mochitest-devtools-chrome-2", + "test-linux1804-64/opt-web-platform-tests-crashtest", + "test-linux1804-64-tsan/opt-mochitest-plain-10", + "test-linux1804-64-qr/debug-reftest-swr-7", + "test-linux1804-64/debug-xpcshell-spi-nw-4", + "test-linux1804-64-qr/debug-reftest-3", + "test-windows11-64-2009/debug-mochitest-webgl1-ext", + "test-macosx1014-64/debug-mochitest-browser-chrome-8", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-reddit", + "test-windows11-64-2009-shippable/opt-talos-bcv", + "test-windows7-32/opt-firefox-ui-functional-remote", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtest", + "toolchain-linux64-cbindgen", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-3", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-7", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-docs", + "spidermonkey-sm-nonunified-linux64/debug", + "source-test-python-mozbuild-linux1804-64/opt-py2", + "source-test-mozlint-license", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-fandom", + "test-windows7-32/debug-web-platform-tests-reftest-3", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-twitch", + "test-macosx1014-64/opt-mochitest-devtools-chrome-1", + "test-linux1804-64/debug-web-platform-tests-print-reftest", + "test-macosx1014-64/opt-jsreftest-1", + "test-linux1804-64/debug-mochitest-browser-chrome-2", + "test-windows7-32/opt-mochitest-a11y-1proc", + "toolchain-linux32-geckodriver", + "source-test-mozlint-clang-format", + "test-linux1804-64/debug-mochitest-plain-11", + "test-windows11-64-2009-asan/opt-gtest-1proc", + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-2", + "test-linux1804-64-asan/opt-web-platform-tests-5", + "test-linux1804-64-qr/debug-web-platform-tests-10", + "test-linux1804-64/debug-firefox-ui-functional-remote", + "test-windows7-32/opt-reftest-gpu-2", + "test-linux64-shippable/opt-talos-tabswitch", + "test-macosx1014-64/debug-jsreftest-3", + "test-macosx1014-64/debug-telemetry-tests-client", + "test-windows11-64-2009/opt-mochitest-browser-chrome-3", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-instagram", + "test-macosx1014-64/opt-mochitest-media-2", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1", + "test-windows11-64-2009/opt-mochitest-devtools-chrome-1", + "test-linux1804-64-qr/debug-reftest-7", + "test-linux1804-64/debug-reftest-2", + "build-win64/debug", + "test-linux1804-64-qr/debug-mochitest-media-3", + "test-macosx1014-64-qr/opt-web-platform-tests-reftest-1", + "test-linux1804-64-tsan/opt-mochitest-plain-6", + "webrender-wrench-macos-build", + "test-windows11-64-2009-qr/opt-web-platform-tests-6", + "test-macosx1014-64/debug-jittest-1proc-2", + "test-windows11-64-2009/debug-web-platform-tests-2", + "test-windows7-32/opt-mochitest-plain-gpu", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-linkedin", + "spidermonkey-sm-mozjs-sys-linux64/debug", + "test-windows11-64-2009/debug-web-platform-tests-3", + "test-linux1804-64-qr/debug-mochitest-plain-12", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9", + "test-linux1804-64-qr/debug-mochitest-webgl2-ext-4", + "test-linux1804-64-asan/opt-reftest-no-accel-3", + "test-linux1804-64-qr/debug-xpcshell-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-outlook", + "test-linux1804-64/debug-reftest-no-accel-7", + "test-windows11-64-2009-qr/opt-mochitest-plain-5", + "test-macosx1014-64/opt-mochitest-webgl1-ext-gli", + "test-linux64-shippable-qr/opt-raptor-stylebench-firefox", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-4", + "test-linux1804-64/debug-web-platform-tests-crashtest", + "test-windows11-64-2009/opt-web-platform-tests-2", + "webrender-linux-release", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-5", + "test-linux1804-64/debug-web-platform-tests-1", + "test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox", + "test-windows11-64-2009/debug-web-platform-tests-6", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-bing", + "source-test-mozlint-py-flake8", + "test-windows11-64-2009/debug-mochitest-remote", + "test-macosx1014-64/opt-mochitest-browser-chrome-2", + "test-macosx1014-64-qr/debug-web-platform-tests-reftest-2", + "test-windows11-64-2009/opt-mochitest-remote", + "test-linux1804-64-qr/debug-mochitest-plain-4", + "test-linux1804-64-qr/opt-web-platform-tests-7", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi", + "test-linux1804-64-asan/opt-mochitest-webgl1-core", + "test-macosx1014-64/debug-marionette", + "test-linux1804-64-asan/opt-reftest-no-accel-2", + "webrender-cargotest-macos-build", + "test-windows11-64-2009/debug-mochitest-browser-chrome-1", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-twitter", + "build-linux64-base-toolchains/debug", + "test-windows7-32/opt-mochitest-media-2", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-4", + "test-macosx1014-64-shippable-qr/opt-talos-webgl-gli", + "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-1", + "test-windows7-32/debug-web-platform-tests-7", + "test-linux1804-64-asan/opt-mochitest-plain-1", + "test-macosx1014-64/debug-mochitest-browser-chrome-13", + "test-linux1804-64/debug-mochitest-devtools-chrome-12", + "build-macosx64-gcp/debug", + "test-macosx1014-64/opt-reftest-2", + "test-linux1804-64-asan/opt-mochitest-webgl2-ext-4", + "test-linux1804-64/debug-web-platform-tests-5", + "test-windows7-32/opt-mochitest-plain-5", + "test-windows7-32/opt-web-platform-tests-12", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-13", + "test-linux1804-64/opt-reftest-4", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-8", + "test-macosx1014-64-qr/debug-reftest-6", + "build-win64/opt", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-13", + "test-linux1804-64/opt-web-platform-tests-wdspec-headless-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon", + "source-test-mozlint-py-black", + "test-linux1804-64-qr/debug-mochitest-media-3", + "test-linux1804-64/debug-reftest-no-accel-6", + "test-macosx1014-64/debug-mochitest-plain-gpu", + "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-4", + "test-windows7-32-shippable/opt-talos-tabswitch", + "test-linux1804-64-asan/opt-mochitest-chrome-1proc-3", + "test-linux1804-64/debug-mochitest-devtools-chrome-10", + "test-linux1804-64-qr/debug-jsreftest-2", + "test-linux1804-64-qr/debug-web-platform-tests-2", + "test-linux64-shippable-qr/opt-talos-webgl", + "test-linux1804-64/debug-mochitest-browser-chrome-8", + "test-android-em-7.0-x86_64/debug-geckoview-reftest-2", + "test-macosx1014-64/opt-mochitest-media-1", + "source-test-wpt-metadata-summary", + "test-windows11-64-2009-asan/opt-mochitest-plain-5", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-pinterest", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-1", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-netflix", + "test-windows11-64-2009-qr/opt-web-platform-tests-9", + "test-linux64-shippable-qr/opt-talos-realworld-webextensions", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail", + "toolchain-linux64-clang-tidy", + "test-windows11-64-2009-asan/opt-mochitest-plain-1", + "test-linux1804-64-qr/opt-mochitest-media-spi-2", + "source-test-python-mozharness-py3", + "source-test-mozlint-file-perm", + "test-macosx1014-64/debug-reftest-1", + "source-test-jsshell-bench-ares6-sm", + "test-linux1804-64-asan/opt-mochitest-webgl1-ext", + "test-windows7-32/debug-web-platform-tests-crashtest", + "test-windows7-32-shippable/opt-raptor-stylebench-firefox", + "test-windows11-64-2009-qr/debug-reftest-3", + "test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox", + "test-linux64-shippable-qr/opt-talos-perf-reftest", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-imgur", + "source-test-python-featuregates-linux1804-64/opt-py2", + "test-linux1804-64-asan-qr/opt-reftest-4", + "test-macosx1014-64/debug-web-platform-tests-8", + "test-linux64-shippable/opt-talos-svgr", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-fandom", + "test-linux1804-64/opt-firefox-ui-functional-remote", + "test-linux1804-64/debug-mochitest-plain-13", + "test-macosx1014-64/opt-telemetry-tests-client", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-apple", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-14", + "test-windows7-32/opt-web-platform-tests-6", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-fandom", + "build-android-x86_64-asan-fuzzing/opt", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-imdb", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing", + "test-windows11-64-2009/opt-mochitest-chrome-1proc-1", + "webrender-windows", + "test-linux1804-64-asan/opt-reftest-no-accel-4", + "test-windows7-32/opt-web-platform-tests-reftest-4", + "test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox", + "test-linux1804-64/debug-mochitest-plain-4", + "test-macosx1014-64/debug-mochitest-webgl2-ext-3", + "source-test-jsshell-bench-web-tooling-sm", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-google-mail", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen-search", + "test-macosx1014-64-qr/opt-web-platform-tests-reftest-3", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-4", + "test-linux1804-64-qr/debug-reftest-2", + "test-android-em-7.0-x86_64/opt-geckoview-junit", + "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-2", + "test-macosx1014-64-shippable/opt-talos-webgl", + "test-macosx1014-64/debug-web-platform-tests-reftest-2", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-office", + "test-windows7-32-shippable/opt-raptor-webaudio-firefox", + "test-windows11-64-2009-shippable-qr/opt-talos-xperf", + "source-test-python-mochitest-harness-linux1804-64/opt", + "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-2", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-6", + "test-linux64-shippable/opt-raptor-speedometer-firefox", + "test-macosx1014-64/debug-web-platform-tests-10", + "test-macosx1014-64/debug-mochitest-browser-chrome-15", + "test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-paypal", + "test-linux1804-64-asan/opt-xpcshell-3", + "test-windows11-64-2009-shippable/opt-talos-perf-reftest", + "test-macosx1014-64/opt-mochitest-chrome-1proc-2", + "test-linux64-shippable/opt-talos-g5", + "test-macosx1014-64-shippable/opt-mochitest-webgl2-core-gli", + "test-macosx1014-64-shippable/opt-awsy", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-6", + "test-windows11-64-2009/debug-reftest-1", + "test-windows11-64-2009/opt-web-platform-tests-4", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-youtube", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-twitch", + "test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest", + "test-macosx1014-64/debug-gtest-1proc", + "test-windows11-64-2009-shippable/opt-talos-g1", + "test-macosx1014-64-shippable/opt-mochitest-media-gli-1", + "toolchain-macosx64-node-10", + "toolchain-macosx64-node-12", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-8", + "test-windows11-64-2009/debug-xpcshell-1", + "test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc", + "toolchain-macosx64-grcov", + "test-windows7-32-shippable/opt-talos-g5", + "test-windows7-32/opt-web-platform-tests-10", + "test-windows11-64-2009-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox", + "test-windows11-64-2009-qr/debug-mochitest-plain-1", + "test-macosx1014-64/opt-web-platform-tests-print-reftest", + "test-macosx1014-64/opt-web-platform-tests-5", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-14", + "test-linux1804-64-qr/debug-mochitest-webgl2-ext-1", + "test-linux1804-64-qr/opt-web-platform-tests-print-reftest", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yandex", + "test-linux1804-64/opt-web-platform-tests-6", + "test-windows11-64-2009/opt-reftest-1", + "test-linux1804-64/opt-mochitest-devtools-chrome-4", + "source-test-python-mozlint-windows11-64-2009/opt-py3", + "test-linux1804-64-qr/debug-reftest-swr-8", + "test-linux1804-64/debug-mochitest-devtools-chrome-11", + "source-test-python-raptor-macosx1014-64/opt-py3", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-4", + "test-windows7-32-shippable/opt-talos-svgr", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-microsoft", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-4", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-2", + "test-linux1804-64-qr/debug-mochitest-plain-10", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-imgur", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "test-windows11-64-2009/opt-mochitest-media-spi", + "test-linux1804-64-asan/opt-web-platform-tests-4", + "build-android-x86_64/debug", + "test-linux1804-64-qr/debug-mochitest-plain-7", + "test-linux1804-64/debug-mochitest-browser-chrome-7", + "test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox", + "test-windows11-64-2009-qr/opt-mochitest-plain-1", + "test-macosx1014-64/debug-mochitest-webgl2-core", + "build-linux64/opt", + "test-linux1804-64-qr/opt-gtest-1proc", + "test-linux1804-64/debug-mochitest-chrome-gpu", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-office", + "test-macosx1014-64/debug-mochitest-browser-chrome-16", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-gpu", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-instagram", + "test-linux1804-64/debug-mochitest-a11y-spi-nw-1proc", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-3", + "test-windows11-64-2009/opt-web-platform-tests-7", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-docs", + "test-macosx1014-64/debug-reftest-4", + "test-windows11-64-2009/debug-web-platform-tests-13", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-6", + "test-linux1804-64/opt-mochitest-webgl2-ext-4", + "source-test-python-condprof-windows11-64-2009/opt-py2", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-12", + "test-windows7-32/opt-mochitest-media-1", + "test-windows7-32/opt-mochitest-media-3", + "test-linux1804-64/opt-reftest-no-accel-4", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yandex", + "test-linux1804-64/opt-mochitest-webgl2-ext-3", + "test-linux1804-64-qr/debug-mochitest-plain-6", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-bing", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-google", + "test-linux1804-64-asan/opt-cppunit-1proc", + "test-macosx1014-64/debug-web-platform-tests-4", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-13", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-amazon", + "toolchain-macosx64-dump-syms", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-2", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-4", + "test-linux1804-64-tsan/opt-xpcshell-5", + "test-linux1804-64/opt-mochitest-webgl1-core", + "test-macosx1014-64/debug-mochitest-devtools-chrome-2", + "test-linux64-shippable-qr/opt-talos-tabswitch", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon-search", + "test-windows7-32/opt-mochitest-media-spi-3", + "test-windows11-64-2009-asan/opt-mochitest-plain-gpu", + "test-linux1804-64/debug-mochitest-browser-chrome-8", + "test-linux1804-64-qr/debug-mochitest-plain-4", + "test-linux1804-64/opt-mochitest-webgl1-ext", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-pinterest", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-5", + "test-windows11-64-2009-qr/debug-mochitest-plain-4", + "test-macosx1014-64-shippable/opt-talos-realworld-webextensions", + "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-1", + "test-linux1804-64-qr/debug-reftest-2", + "test-linux1804-64-asan/opt-web-platform-tests-16", + "test-windows11-64-2009-shippable/opt-raptor-speedometer-firefox", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-7", + "test-windows11-64-2009-asan/opt-firefox-ui-functional-remote", + "test-linux1804-64/debug-web-platform-tests-reftest-2", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-twitter", + "test-linux64-shippable/opt-talos-dromaeojs", + "test-linux1804-64/debug-mochitest-media-spi-1", + "test-windows11-64-2009/debug-firefox-ui-functional-remote", + "test-linux1804-64/debug-mochitest-browser-chrome-9", + "source-test-mozlint-test-manifest", + "test-linux1804-64-qr/debug-reftest-1", + "build-win64-asan-fuzzing/opt", + "test-windows11-64-2009/debug-mochitest-webgl2-ext-3", + "test-windows11-64-2009/debug-mochitest-plain-2", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-wikipedia", + "spidermonkey-sm-compacting-win64/debug", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-office", + "test-linux1804-64/debug-web-platform-tests-15", + "test-linux1804-64/opt-web-platform-tests-reftest-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-7", + "test-linux1804-64-qr/opt-mochitest-chrome-gpu", + "test-linux64-shippable/opt-talos-bcv", + "test-linux1804-64/opt-marionette-headless", + "test-windows11-64-2009/opt-mochitest-devtools-chrome-5", + "test-linux1804-64-tsan/opt-mochitest-plain-18", + "source-test-python-mozbase-macosx1014-64/opt-py3", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-youtube", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-pinterest", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-slides", + "test-windows11-64-2009-shippable-qr/opt-talos-perf-reftest", + "test-windows11-64-2009-qr/opt-mochitest-media", + "test-windows11-64-2009/opt-mochitest-chrome-gpu", + "test-windows7-32/debug-cppunit-1proc", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-12", + "test-linux1804-64-qr/debug-mochitest-plain-7", + "test-windows11-64-2009-shippable/opt-talos-g4", + "test-macosx1014-64/opt-mochitest-webgl1-core-gli", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-microsoft", + "test-linux1804-64/opt-mochitest-media-3", + "test-linux1804-64/opt-mochitest-devtools-chrome-5", + "test-linux1804-64-tsan/opt-mochitest-plain-20", + "test-windows11-64-2009-qr/opt-web-platform-tests-3", + "test-windows11-64-2009/debug-mochitest-chrome-gpu", + "source-test-mozlint-rst", + "source-test-python-mach-macosx1014-64/opt-py2", + "test-windows11-64-2009/debug-test-verify", + "source-test-shadow-scheduler-bugbug_reduced_high", + "source-test-python-mozterm-linux1804-64/opt-py2", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-imdb", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-gpu", + "source-test-python-mozbase-linux1804-64/opt-py2", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-7", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-5", + "test-linux1804-64-asan/opt-web-platform-tests-20", + "test-windows11-64-2009/debug-marionette", + "test-linux1804-64-asan/opt-web-platform-tests-9", + "test-linux64-shippable-qr/opt-talos-chrome", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-print-reftest", + "test-linux1804-64/debug-mochitest-browser-chrome-4", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-3", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-outlook", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-3", + "test-linux1804-64-qr/debug-jsreftest-3", + "test-windows7-32/opt-web-platform-tests-reftest-2", + "test-macosx1014-64/opt-mochitest-plain-5", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-bing", + "test-macosx1014-64/debug-mochitest-devtools-chrome-3", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-7", + "test-linux1804-64/debug-xpcshell-5", + "toolchain-linux64-clang-9", + "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-4", + "test-windows7-32/debug-mochitest-browser-chrome-5", + "test-linux64-shippable-qr/opt-talos-dromaeojs", + "test-linux1804-64-asan/opt-web-platform-tests-8", + "test-windows11-64-2009/opt-web-platform-tests-reftest-1", + "test-macosx1014-64/debug-mochitest-chrome-1proc-1", + "test-linux1804-64-qr/debug-mochitest-webgpu", + "test-linux1804-64-qr/debug-mochitest-plain-16", + "test-linux64-shippable/opt-talos-perf-reftest", + "test-macosx1014-64-shippable/opt-mochitest-media-gli-2", + "test-macosx1014-64/debug-mochitest-webgpu", + "test-linux1804-64-qr/opt-jsreftest-4", + "test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-gli", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-3", + "test-macosx1014-64/debug-crashtest", + "test-linux1804-64/opt-web-platform-tests-wdspec-headless-2", + "test-windows11-64-2009-qr/debug-mochitest-plain-2", + "test-macosx1014-64/debug-mochitest-devtools-chrome-8", + "test-macosx1014-64/debug-web-platform-tests-reftest-6", + "test-linux1804-64/debug-mochitest-plain-2", + "test-macosx1014-64-qr/opt-reftest-2", + "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-2", + "test-windows11-64-2009-shippable/opt-awsy-tp6", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-google", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yahoo-news", + "spidermonkey-sm-plain-linux64/opt", + "test-macosx1014-64/opt-web-platform-tests-wdspec-1", + "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-1", + "build-android-x86/opt", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-amazon", + "test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest", + "test-macosx1014-64/debug-mochitest-webgl1-ext", + "toolchain-macosx64-fix-stacks", + "test-linux1804-64/opt-reftest-no-accel-2", + "test-linux1804-64-tsan/opt-mochitest-plain-7", + "test-windows7-32/debug-web-platform-tests-13", + "test-windows7-32/debug-web-platform-tests-11", + "test-macosx1014-64-shippable/opt-talos-svgr", + "test-windows11-64-2009/opt-web-platform-tests-wdspec-3", + "test-windows7-32-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "build-android-x86-gcp/opt", + "test-macosx1014-64/opt-test-verify", + "test-linux1804-64/debug-mochitest-browser-chrome-5", + "test-windows11-64-2009-shippable-qr/opt-talos-svgr", + "test-windows11-64-2009-qr/opt-mochitest-webgl1-core", + "test-windows11-64-2009-qr/opt-mochitest-plain-2", + "test-windows11-64-2009-shippable/opt-raptor-sunspider-firefox", + "test-windows11-64-2009/opt-web-platform-tests-10", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-google", + "test-windows11-64-2009-shippable-qr/opt-awsy", + "spidermonkey-sm-plain-win64/debug", + "test-linux64-shippable-qr/opt-raptor-tp6-live-firefox-cold-cnn-ampstories", + "test-linux1804-64-qr/debug-mochitest-media-spi-2", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-10", + "test-linux1804-64/opt-browser-screenshots", + "test-windows11-64-2009/debug-web-platform-tests-wdspec-2", + "test-linux1804-64-qr/debug-mochitest-plain-15", + "test-linux1804-64/opt-mochitest-webgl2-ext-2", + "test-linux1804-64/opt-mochitest-browser-chrome-4", + "test-linux1804-64-asan/opt-mochitest-plain-2", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-twitch", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4", + "test-macosx1014-64-shippable/opt-talos-perf-reftest", + "test-linux1804-64/debug-mochitest-plain-9", + "test-windows7-32/debug-jsreftest-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-webaudio-firefox", + "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-1", + "test-linux1804-64/debug-mochitest-plain-5", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-2", + "test-linux1804-64/debug-xpcshell-spi-nw-6", + "test-windows7-32/debug-web-platform-tests-5", + "test-windows11-64-2009/opt-web-platform-tests-reftest-4", + "test-linux1804-64/opt-mochitest-plain-2", + "test-macosx1014-64/debug-mochitest-browser-chrome-6", + "source-test-python-reftest-harness-linux1804-64/opt", + "test-windows11-64-2009/debug-mochitest-browser-chrome-3", + "source-test-shadow-scheduler-bugbug_disperse_medium_only_one", + "test-macosx1014-64/debug-mochitest-webgl1-ext-gli", + "test-macosx1014-64/debug-web-platform-tests-12", + "source-test-python-mozlint-macosx1014-64/opt-py3", + "test-windows7-32/opt-mochitest-browser-chrome-7", + "test-linux1804-64/debug-mochitest-plain-3", + "test-linux1804-64/debug-mochitest-browser-chrome-13", + "test-windows11-64-2009/opt-web-platform-tests-5", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-3", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-booking", + "test-macosx1014-64/debug-mochitest-devtools-chrome-5", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-tumblr", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-youtube", + "test-linux1804-64-qr/debug-mochitest-plain-8", + "test-linux1804-64-qr/debug-web-platform-tests-3", + "source-test-python-mozbase-windows11-64-2009/opt-py3", + "test-windows7-32/opt-mochitest-plain-4", + "test-linux1804-64/debug-mochitest-plain-gpu-spi-nw", + "test-macosx1014-64/opt-web-platform-tests-reftest-1", + "test-macosx1014-64/opt-mochitest-webgl2-core-gli", + "test-windows11-64-2009/debug-mochitest-browser-chrome-2", + "test-macosx1014-64/opt-web-platform-tests-7", + "test-linux1804-64/debug-marionette", + "test-linux1804-64/debug-web-platform-tests-reftest-1", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-6", + "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-3", + "source-test-python-mozperftest-linux1804-64/opt", + "test-windows11-64-2009-asan/opt-mochitest-media", + "test-windows11-64-2009-shippable-qr/opt-talos-webgl", + "test-linux1804-64/debug-mochitest-media-spi-3", + "test-windows7-32/opt-cppunit-1proc", + "test-windows11-64-2009-shippable/opt-raptor-ares6-firefox", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-10", + "test-windows11-64-2009/opt-web-platform-tests-print-reftest", + "spidermonkey-sm-tsan-linux64/opt", + "test-linux1804-64/opt-reftest-no-accel-1", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-imdb", + "test-android-em-7.0-x86_64/debug-geckoview-reftest-1", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-6", + "test-linux1804-64-qr/debug-crashtest", + "test-linux64-shippable/opt-talos-damp", + "test-windows11-64-2009/debug-mochitest-browser-chrome-5", + "test-linux1804-64-qr/debug-mochitest-plain-16", + "test-linux1804-64-qr/debug-web-platform-tests-12", + "toolchain-win32-fix-stacks", + "test-macosx1014-64/opt-mochitest-chrome-gpu", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2", + "test-linux1804-64/debug-mochitest-media-1", + "source-test-python-mach-windows11-64-2009/opt-py3", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-4", + "test-macosx1014-64/opt-web-platform-tests-4", + "test-windows11-64-2009/opt-crashtest", + "test-windows11-64-2009/opt-telemetry-tests-client", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-15", + "test-linux1804-64-qr/debug-reftest-swr-4", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-outlook", + "test-windows7-32/debug-mochitest-media-spi-1", + "test-macosx1014-64/debug-web-platform-tests-wdspec-3", + "test-linux1804-64-qr/opt-web-platform-tests-wdspec-3", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-4", + "test-linux1804-64-qr/debug-mochitest-plain-11", + "test-windows7-32/debug-mochitest-browser-chrome-7", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube", + "test-macosx1014-64/debug-web-platform-tests-11", + "test-windows7-32/debug-web-platform-tests-12", + "test-linux1804-64/debug-mochitest-a11y-1proc", + "test-linux1804-64-tsan/opt-xpcshell-1", + "test-windows11-64-2009/opt-mochitest-devtools-chrome-4", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-facebook", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-6", + "test-linux1804-64-qr/debug-mochitest-plain-5", + "source-test-mozlint-clippy", + "test-windows7-32/debug-mochitest-plain-3", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-apple", + "test-windows11-64-2009-asan/opt-mochitest-a11y-1proc", + "test-linux1804-64-qr/opt-web-platform-tests-4", + "test-windows11-64-2009/debug-mochitest-plain-1", + "toolchain-rustc-dist-toolchain", + "test-linux64-qr/opt-talos-bcv-swr", + "test-windows7-32/opt-jsreftest-1", + "test-windows11-64-2009/debug-mochitest-webgl2-ext-1", + "test-windows7-32/opt-web-platform-tests-reftest-1", + "test-linux64-shippable-qr/opt-talos-other", + "test-macosx1014-64-qr/opt-reftest-4", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-instagram", + "test-windows11-64-2009/debug-jsreftest-1", + "test-linux64-shippable/opt-talos-realworld-webextensions", + "test-linux1804-64/debug-mochitest-browser-chrome-12", + "test-linux1804-64-asan/opt-web-platform-tests-wdspec-3", + "test-windows7-32-shippable/opt-raptor-speedometer-firefox", + "test-linux1804-64/debug-web-platform-tests-13", + "test-windows11-64-2009-qr/opt-reftest-2", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-7", + "test-linux1804-64/opt-jsreftest-1", + "source-test-python-featuregates-windows11-64-2009/opt-py3", + "test-macosx1014-64/debug-web-platform-tests-13", + "test-linux1804-64-asan/opt-web-platform-tests-7", + "webrender-macos-debug", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-16", + "toolchain-macosx64-clang-11", + "test-windows7-32/debug-mochitest-webgpu", + "test-windows7-32/debug-mochitest-chrome-1proc-2", + "test-linux1804-64-tsan/opt-mochitest-plain-19", + "test-linux1804-64-qr/debug-mochitest-media-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-apple", + "source-test-python-mach-linux1804-64/opt-py3", + "test-linux1804-64-asan/opt-mochitest-media-spi-2", + "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-1", + "toolchain-win32-node-10", + "toolchain-win32-node-12", + "test-linux1804-64/debug-mochitest-plain-gpu", + "test-windows7-32/debug-reftest-gpu-3", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-crashtest", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-search-restaurants", + "test-windows11-64-2009/debug-web-platform-tests-crashtest", + "test-linux1804-64/debug-mochitest-webgl1-core", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-3", + "test-windows7-32/debug-reftest-1", + "toolchain-win64-sccache", + "test-macosx1014-64/opt-mochitest-webgl2-ext-2", + "test-windows11-64-2009-asan/opt-mochitest-media-spi", + "test-macosx1014-64/opt-mochitest-chrome-1proc-1", + "test-macosx1014-64-shippable/opt-talos-g1", + "test-linux1804-64-qr/debug-crashtest", + "test-linux1804-64-qr/opt-mochitest-plain-gpu", + "test-windows11-64-2009-qr/opt-mochitest-plain-3", + "build-android-arm-debug", + "test-linux1804-64-qr/opt-web-platform-tests-8", + "test-linux1804-64-qr/debug-reftest-6", + "test-windows7-32/opt-mochitest-plain-1", + "test-linux1804-64-asan/opt-web-platform-tests-15", + "webrender-lint-tidy", + "test-windows11-64-2009/opt-web-platform-tests-9", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-pinterest", + "source-test-mozlint-localization", + "test-linux1804-64-asan-qr/opt-reftest-6", + "build-linux64-rusttests/debug", + "test-windows11-64-2009-asan/opt-reftest-2", + "test-windows7-32/opt-web-platform-tests-1", + "test-linux1804-64/debug-mochitest-media-3", + "test-windows11-64-2009-asan/opt-telemetry-tests-client", + "test-linux1804-64/debug-cppunit-1proc", + "test-linux1804-64-asan/opt-gtest-1proc", + "test-linux64-shippable/opt-raptor-wasm-misc-firefox", + "test-linux1804-64-asan/opt-reftest-2", + "test-macosx1014-64-shippable/opt-raptor-sunspider-firefox", + "test-linux1804-64/debug-mochitest-browser-chrome-14", + "test-vismet-android-hw-g5-7-0-arm7-arm-shippable/opt-browsertime-tp6m-geckoview-cold-booking", + "test-linux1804-64/debug-web-platform-tests-14", + "test-macosx1014-64-shippable/opt-raptor-stylebench-firefox", + "test-linux1804-64-qr/opt-web-platform-tests-wdspec-1", + "test-windows7-32/debug-reftest-2", + "test-windows7-32/debug-web-platform-tests-reftest-2", + "test-windows11-64-2009-qr/opt-mochitest-media-spi", + "test-macosx1014-64/debug-mochitest-plain-2", + "test-windows11-64-2009/debug-mochitest-browser-chrome-4", + "wgpu-linux64-debug", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-reddit", + "test-windows11-64-2009-qr/debug-mochitest-plain-5", + "test-windows11-64-2009/opt-mochitest-browser-chrome-2", + "test-windows11-64-2009-shippable-qr/opt-talos-perf-reftest-singletons", + "test-android-em-7.0-x86_64/debug-geckoview-junit-multi", + "test-windows11-64-2009-qr/debug-mochitest-plain-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-2", + "test-linux1804-64-asan/opt-web-platform-tests-1", + "test-linux1804-64-asan/opt-mochitest-webgpu", + "test-windows11-64-2009-qr/opt-web-platform-tests-print-reftest", + "test-linux1804-64-qr/debug-reftest-1", + "test-linux1804-64-asan/opt-mochitest-plain-6", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-imdb", + "test-windows11-64-2009/debug-mochitest-webgl2-ext-2", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-tumblr", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-2", + "test-linux1804-64/opt-mochitest-webgl2-ext-1", + "test-windows7-32-shippable/opt-talos-xperf", + "test-windows11-64-2009-qr/debug-reftest-4", + "test-windows7-32/debug-web-platform-tests-reftest-4", + "test-windows7-32/debug-gtest-1proc", + "source-test-jsshell-bench-sixspeed-sm", + "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-1", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-7", + "test-linux1804-64/opt-mochitest-browser-chrome-6", + "test-macosx1014-64-qr/opt-crashtest", + "repackage-win64-aarch64-shippable/opt", + "test-windows7-32/opt-firefox-ui-functional-local", + "hazard-linux64-shell-haz/debug", + "test-windows7-32/debug-web-platform-tests-14", + "source-test-mozlint-rustfmt", + "test-macosx1014-64/opt-mochitest-webgl2-ext-4", + "build-win64-fuzzing/debug", + "test-linux1804-64/opt-crashtest", + "test-linux1804-64/debug-mochitest-browser-chrome-14", + "source-test-python-mach-macosx1014-64/opt-py3", + "test-linux1804-64-qr/debug-reftest-3", + "test-windows11-64-2009/opt-mochitest-webgl1-core", + "test-macosx1014-64-qr/debug-web-platform-tests-reftest-3", + "test-windows7-32/debug-xpcshell-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-6", + "spidermonkey-sm-rust-bindings-linux64/debug", + "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-4", + "source-test-python-reftest-harness-linux1804-64/debug", + "test-linux1804-64-asan-qr/opt-crashtest", + "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-2", + "build-android-aarch64-gcp/debug", + "test-windows7-32/debug-web-platform-tests-4", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-slides", + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-2", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-twitch", + "source-test-python-raptor-macosx1014-64/opt-py2", + "test-windows11-64-2009/opt-mochitest-webgl2-ext-4", + "test-windows7-32-shippable/opt-talos-chrome", + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-4", + "test-windows7-32/debug-reftest-gpu-4", + "test-macosx1014-64/opt-reftest-7", + "test-windows11-64-2009/opt-mochitest-browser-chrome-7", + "build-fat-aar-android-geckoview-fat-aar-shippable/opt", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-2", + "test-windows7-32/opt-test-verify", + "test-linux1804-64/debug-marionette", + "test-linux1804-64-asan/opt-mochitest-media-spi-1", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-imgur", + "test-linux1804-64/debug-mochitest-plain-8", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-6", + "test-macosx1014-64/opt-gtest-1proc", + "webrender-android-emulator-release", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook", + "test-windows11-64-2009-shippable-qr/opt-talos-damp", + "test-macosx1014-64/opt-mochitest-media-gli-1", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube", + "test-macosx1014-64/opt-mochitest-plain-3", + "source-test-python-tryselect-windows11-64-2009/opt-py3", + "test-linux1804-64/opt-cppunit-1proc", + "test-windows11-64-2009-asan/opt-mochitest-plain-2", + "source-test-shadow-scheduler-bugbug_disperse_low", + "test-windows7-32/opt-mochitest-plain-2", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yahoo-news", + "test-linux1804-64/debug-mochitest-browser-chrome-12", + "test-linux64-shippable/opt-raptor-wasm-godot-firefox", + "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-4", + "source-test-python-telemetry-python-linux1804-64/opt-py2", + "test-windows7-32/opt-xpcshell-2", + "test-linux1804-64-qr/debug-reftest-swr-3", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-facebook", + "test-windows7-32/debug-mochitest-a11y-1proc", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-wikipedia", + "test-linux1804-64-qr/opt-jsreftest-1", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-ebay", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-linkedin", + "test-linux1804-64/debug-reftest-3", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook", + "test-windows11-64-2009-qr/debug-reftest-2", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-media", + "test-windows11-64-2009-qr/opt-web-platform-tests-2", + "test-linux1804-64-asan-qr/opt-reftest-1", + "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-1", + "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-3", + "test-linux1804-64/opt-xpcshell-4", + "test-linux1804-64-qr/opt-web-platform-tests-crashtest", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-2", + "test-windows7-32/debug-web-platform-tests-wdspec-2", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-1", + "source-test-mozlint-lintpref", + "build-android-arm-gcp/opt", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-google", + "test-linux1804-64-qr/debug-web-platform-tests-14", + "test-linux1804-64/debug-web-platform-tests-6", + "source-test-python-mozbuild-macosx1014-64/opt-py2", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-bing", + "test-windows11-64-2009/debug-web-platform-tests-12", + "repackage-win64/opt", + "toolchain-linux64-clang-11", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-instagram", + "test-macosx1014-64-qr/debug-crashtest", + "test-linux64-shippable/opt-talos-g3", + "test-linux1804-64/debug-mochitest-chrome-1proc-2", + "test-windows7-32-shippable/opt-talos-tp5o", + "test-linux64-shippable/opt-raptor-sunspider-firefox", + "test-linux1804-64/opt-mochitest-plain-3", + "toolchain-win64-geckodriver", + "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-3", + "test-windows7-32/opt-browser-screenshots", + "test-linux1804-64/opt-web-platform-tests-5", + "test-linux1804-64-asan/opt-web-platform-tests-6", + "test-linux1804-64-qr/debug-mochitest-plain-2", + "test-windows11-64-2009/opt-jsreftest-1", + "test-linux1804-64-qr/opt-cppunit-1proc", + "test-macosx1014-64/opt-reftest-6", + "source-test-webidl-test", + "toolchain-win64-nasm", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-1", + "test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-1", + "test-macosx1014-64/debug-mochitest-devtools-chrome-7", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-3", + "test-linux1804-64-qr/debug-mochitest-media-2", + "test-windows11-64-2009-asan/opt-mochitest-webgpu", + "test-linux1804-64-asan/opt-web-platform-tests-wdspec-1", + "test-windows7-32/opt-mochitest-browser-chrome-4", + "test-linux1804-64-qr/opt-mochitest-media-1", + "source-test-jsshell-bench-sunspider-sm", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-tumblr", + "test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox", + "test-linux1804-64-asan/opt-mochitest-webgl2-core", + "test-linux1804-64-qr/opt-mochitest-webgl2-core", + "test-windows11-64-2009-shippable/opt-talos-tp5o", + "test-linux1804-64/debug-reftest-5", + "test-linux1804-64-qr/opt-xpcshell-3", + "test-linux64-shippable-qr/opt-talos-g4-swr", + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-7", + "test-linux1804-64/debug-mochitest-plain-7", + "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-1", + "test-windows11-64-2009/opt-web-platform-tests-wdspec-headless-2", + "source-test-python-mach-linux1804-64/opt-py2", + "test-windows11-64-2009-shippable/opt-raptor-motionmark-htmlsuite-firefox", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-microsoft", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing-search-restaurants", + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-6", + "test-windows7-32/debug-reftest-no-accel-3", + "test-linux1804-64-qr/debug-web-platform-tests-5", + "test-windows11-64-2009/opt-mochitest-browser-chrome-6", + "test-windows11-64-2009-asan/opt-mochitest-plain-3", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-imdb", + "repackage-win32/opt", + "test-linux1804-64/opt-mochitest-chrome-gpu", + "test-windows11-64-2009/opt-mochitest-plain-3", + "test-linux1804-64/debug-jsreftest-3", + "test-macosx1014-64-shippable/opt-talos-bcv", + "source-test-python-mozversioncontrol-py2", + "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-3", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-8", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-4", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-youtube", + "test-windows11-64-2009-shippable/opt-talos-realworld-webextensions", + "test-windows11-64-2009-shippable/opt-talos-other", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-4", + "test-windows7-32/opt-web-platform-tests-wdspec-2", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-6", + "test-windows11-64-2009/debug-web-platform-tests-wdspec-1", + "test-linux1804-64-tsan/opt-xpcshell-7", + "test-windows7-32/opt-mochitest-browser-chrome-1", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-wikipedia", + "test-linux1804-64/opt-jsreftest-2", + "test-linux1804-64-tsan/opt-xpcshell-8", + "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-gpu", + "test-macosx1014-64/opt-reftest-4", + "test-linux1804-64/opt-web-platform-tests-8", + "spidermonkey-sm-compacting-linux64/debug", + "test-windows7-32/debug-web-platform-tests-reftest-5", + "test-macosx1014-64-qr/debug-reftest-1", + "test-linux1804-64-qr/debug-mochitest-plain-9", + "test-macosx1014-64/opt-reftest-3", + "test-linux1804-64-tsan/opt-mochitest-plain-3", + "test-windows11-64-2009-shippable-qr/opt-raptor-motionmark-animometer-firefox", + "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-tumblr", + "test-macosx1014-64-ccov/opt-mochitest-webgl1-core-gli", + "test-linux1804-64-qr/opt-reftest-2", + "test-windows11-64-2009-qr/debug-mochitest-chrome-gpu", + "test-linux1804-64-qr/debug-reftest-7", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-slides", + "test-linux1804-64-qr/debug-reftest-8", + "test-linux1804-64/debug-mochitest-browser-chrome-7", + "test-linux1804-64-asan/opt-web-platform-tests-10", + "test-linux1804-64/debug-mochitest-browser-chrome-11", + "test-linux1804-64-asan/opt-web-platform-tests-2", + "test-linux1804-64-qr/opt-web-platform-tests-reftest-4", + "test-linux1804-64-shippable-qr/opt-awsy-base", + "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-9", + "test-windows7-32/opt-reftest-no-accel-3", + "test-linux1804-64-qr/opt-mochitest-plain-3", + "test-windows11-64-2009/debug-crashtest", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-reddit", + "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-4", + "test-windows7-32/debug-firefox-ui-functional-remote", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-ebay", + "test-linux64-shippable-qr/opt-talos-g4", + "test-windows11-64-2009/debug-web-platform-tests-reftest-1", + "test-linux1804-64-qr/debug-mochitest-media-1", + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-4", + "build-linux64-fuzzing/debug", + "test-linux1804-64-qr/debug-reftest-5", + "test-macosx1014-64/opt-web-platform-tests-6", + "test-macosx1014-64/opt-mochitest-devtools-chrome-5", + "test-windows11-64-2009/debug-mochitest-browser-chrome-6", + "test-windows11-64-2009-asan/opt-firefox-ui-functional-local", + "test-macosx1014-64/debug-mochitest-plain-4", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-4", + "test-linux1804-64/debug-mochitest-media-spi-2", + "test-linux1804-64-qr/debug-mochitest-plain-3", + "test-macosx1014-64/debug-mochitest-media-gli-1", + "test-linux1804-64-asan/opt-mochitest-plain-8", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-5", + "test-macosx1014-64/debug-mochitest-browser-chrome-4", + "test-windows7-32/debug-web-platform-tests-10", + "test-linux1804-64-tsan/opt-mochitest-plain-13", + "test-windows11-64-2009-qr/debug-reftest-1", + "test-linux1804-64-asan/opt-web-platform-tests-11", + "source-test-shadow-scheduler-bugbug_disperse_high", + "test-linux1804-64-qr/debug-reftest-4", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-paypal", + "test-linux1804-64/debug-xpcshell-3", + "test-macosx1014-64/debug-mochitest-webgl2-core-gli", + "source-test-python-mozterm-linux1804-64/opt-py3", + "test-linux64-shippable/opt-raptor-stylebench-firefox", + "test-macosx1014-64-shippable/opt-talos-g4", + "source-test-python-mochitest-harness-linux1804-64-asan/opt", + "test-linux1804-64-qr/opt-web-platform-tests-5", + "test-linux1804-64/debug-mochitest-webgpu", + "test-macosx1014-64/debug-mochitest-browser-chrome-10", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-sheets", + "test-macosx1014-64-qr/opt-reftest-8", + "test-linux1804-64-asan/opt-web-platform-tests-17", + "test-macosx1014-64-shippable/opt-talos-dromaeojs", + "diff-artifact-win64-aarch64-eme-validation", + "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-slides", + "test-windows11-64-2009-asan/opt-jsreftest-1", + "test-linux1804-64-qr/opt-mochitest-a11y-1proc", + "test-windows7-32/debug-web-platform-tests-9", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen-search", + "test-windows11-64-2009-shippable-qr/opt-talos-g5", + "test-windows11-64-2009/debug-reftest-4", + "test-macosx1014-64/debug-web-platform-tests-7", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-9", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-tumblr", + "test-linux1804-64/debug-mochitest-devtools-chrome-5", + "test-linux1804-64-asan/opt-mochitest-plain-5", + "test-linux1804-64-qr/debug-reftest-5", + "test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox", + "test-macosx1014-64-qr/opt-web-platform-tests-reftest-2", + "test-macosx1014-64/debug-web-platform-tests-3", + "test-linux1804-64-tsan/opt-mochitest-plain-4", + "source-test-python-tryselect-linux1804-64/opt-py3", + "test-macosx1014-64/debug-web-platform-tests-reftest-5", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-3", + "test-linux1804-64-asan/opt-web-platform-tests-3", + "test-linux1804-64-qr/opt-web-platform-tests-1", + "test-linux1804-64-qr/debug-web-platform-tests-15", + "test-linux64-shippable-qr/opt-raptor-webaudio-firefox", + "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-1", + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-8", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-9", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-7", + "toolchain-linux64-lucetc", + "test-linux64-shippable/opt-raptor-tp6-firefox-cold-pinterest", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3", + "test-windows11-64-2009/opt-web-platform-tests-6", + "test-linux64-shippable-qr/opt-talos-g1", + "build-signing-win64/debug", + "source-test-python-condprof-linux1804-64/opt-py2", + "test-linux1804-64-tsan/opt-mochitest-plain-17", + "spidermonkey-sm-plain-linux64/debug", + "test-linux1804-64-qr/debug-mochitest-plain-11", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-15", + "test-windows7-32/opt-mochitest-browser-chrome-3", + "test-linux1804-64-asan/opt-reftest-no-accel-7", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-news", + "test-linux1804-64-asan/opt-telemetry-tests-client", + "test-macosx1014-64/opt-mochitest-plain-1", + "webrender-android-hw-p2-debug", + "test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc", + "test-linux1804-64/opt-mochitest-plain-1", + "test-windows11-64-2009/debug-mochitest-devtools-chrome-2", + "test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox", + "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-bing", + "build-android-x86_64/opt", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-paypal", + "test-linux1804-64/opt-mochitest-webgpu", + "test-macosx1014-64/debug-web-platform-tests-15", + "test-windows7-32/opt-mochitest-media-spi-2", + "test-linux1804-64-asan/opt-web-platform-tests-reftest-3", + "source-test-python-mozterm-windows11-64-2009/opt-py2", + "test-macosx1014-64/debug-cppunit-1proc", + "test-windows7-32-shippable/opt-raptor-sunspider-firefox", + "source-test-mozlint-yaml", + "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-3", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube-watch", + "test-linux1804-64-asan/opt-jsreftest-1", + "test-windows11-64-2009/opt-xpcshell-1", + "test-windows7-32/debug-web-platform-tests-1", + "test-linux1804-64/debug-mochitest-devtools-chrome-1", + "test-linux64-shippable/opt-talos-chrome", + "test-linux1804-64-qr/debug-web-platform-tests-reftest-6", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-1", + "test-linux1804-64-qr/debug-web-platform-tests-print-reftest", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon-search", + "test-windows7-32/debug-web-platform-tests-2", + "test-macosx1014-64-qr/opt-reftest-5", + "test-windows11-64-2009/opt-cppunit-1proc", + "test-linux1804-64/debug-mochitest-chrome-gpu-spi-nw", + "toolchain-linux64-nasm-2.14.02", + "toolchain-win32-geckodriver", + "test-linux64-shippable-qr/opt-raptor-speedometer-firefox", + "test-linux1804-64-shippable-qr/opt-web-platform-tests-5", + "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-3", + "webrender-android-hw-p2-opt", + "test-linux1804-64-tsan/opt-mochitest-plain-15", + "build-linux64-base-toolchains-clang/debug", + "repackage-signing-win64-aarch64-shippable/opt", + "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-wikipedia", + "test-linux1804-64-qr/debug-web-platform-tests-1", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-5", + "test-linux1804-64-qr/opt-mochitest-webgpu", + "test-linux1804-64-qr/debug-mochitest-plain-gpu", + "test-linux1804-64-asan/opt-reftest-no-accel-1", + "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen", + "test-windows11-64-2009-shippable/opt-awsy", + "test-windows7-32/debug-mochitest-browser-chrome-1", + "test-windows7-32/opt-reftest-no-accel-2", + "test-windows11-64-2009/opt-web-platform-tests-wdspec-headless-1", + "test-linux1804-64/debug-mochitest-browser-chrome-5", + "test-linux1804-64-asan/opt-reftest-1", + "test-windows11-64-2009-asan/opt-mochitest-webgl1-core", + "test-linux1804-64/opt-xpcshell-5", + "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-5", + "test-windows11-64-2009-shippable-qr/opt-raptor-speedometer-firefox", + "test-windows11-64-2009-qr/opt-web-platform-tests-8", + "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-3", + "test-macosx1014-64/opt-mochitest-plain-gpu", + "test-windows11-64-2009/debug-mochitest-webgl2-ext-4", + "test-macosx1014-64/debug-web-platform-tests-crashtest", + "test-linux1804-64-asan/opt-xpcshell-1", + "test-linux1804-64-qr/debug-cppunit-1proc", + "source-test-python-reftest-harness-linux1804-64-asan/opt", + "test-linux1804-64/debug-mochitest-browser-chrome-6", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-10", + "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bbc", + "build-android-x86_64-gcp/opt", + "test-windows7-32/debug-web-platform-tests-wdspec-3", + "toolchain-macosx64-clang-tidy", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-wikipedia", + "test-windows7-32/opt-web-platform-tests-3", + "test-linux1804-64/debug-mochitest-remote-spi-nw", + "toolchain-macosx64-sccache", + "test-windows7-32/debug-firefox-ui-functional-local", + "test-linux1804-64-asan/opt-web-platform-tests-print-reftest", + "test-linux1804-64-asan/opt-mochitest-browser-chrome-4", + "test-windows7-32/debug-mochitest-media-spi-3", + "test-linux1804-64-qr/debug-web-platform-tests-wdspec-3", + "test-macosx1014-64/debug-mochitest-remote", + "test-windows7-32/opt-web-platform-tests-wdspec-1", + "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-imgur", + "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-2", + "l10n-win32-shippable/opt", + "test-linux1804-64/opt-mochitest-chrome-1proc-1", + "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-5", + "build-win64-aarch64-shippable-no-eme/opt", + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-1", + "test-windows7-32/opt-telemetry-tests-client", + "test-linux64-shippable-qr/opt-talos-bcv-swr", + "test-linux1804-64-qr/opt-xpcshell-5", + "test-windows11-64-2009/opt-mochitest-webgl2-ext-2", + "test-linux1804-64/debug-xpcshell-6", + "test-linux1804-64-asan/opt-mochitest-webgl2-ext-3", + "test-windows11-64-2009/opt-jsreftest-2", + "test-linux1804-64-qr/opt-mochitest-plain-4", + "source-test-python-mach-windows11-64-2009/opt-py2", + "test-macosx1014-64/debug-reftest-2", + "test-windows7-32-shippable/opt-talos-dromaeojs", + "build-android-aarch64/debug", + "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-9", + "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-1", + "test-linux1804-64-qr/opt-jsreftest-3", + "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-8", + "test-linux1804-64-qr/opt-web-platform-tests-6", + "test-macosx1014-64/debug-xpcshell-2", + "test-windows11-64-2009/opt-mochitest-browser-chrome-1" + ], + "reduced_tasks": { + "build-linux64/opt": 0.86, + "build-win64/opt": 0.85, + "test-linux1804-64-qr/debug-reftest-swr-1": 0.83, + "test-linux1804-64-qr/debug-reftest-swr-8": 0.82, + "test-linux1804-64-qr/opt-xpcshell-2": 0.81, + "test-linux1804-64-qr/opt-xpcshell-3": 0.82, + "test-linux1804-64-tsan/opt-xpcshell-7": 0.81, + "test-linux1804-64/opt-xpcshell-3": 0.82, + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9": 0.83, + "test-windows7-32/debug-reftest-no-accel-2": 0.8, + "test-windows7-32/debug-reftest-no-accel-4": 0.85 + }, + "reduced_tasks_higher": {}, + "tasks": { + "build-android-aarch64/debug": 0.54, + "build-android-arm/debug": 0.6, + "build-android-x86-fuzzing/debug": 0.64, + "build-android-x86_64-asan-fuzzing/opt": 0.65, + "build-linux64-aarch64/opt": 0.66, + "build-linux64-asan-fuzzing/opt": 0.68, + "build-linux64-fuzzing/debug": 0.55, + "build-linux64-plain/debug": 0.55, + "build-linux64-rusttests/debug": 0.56, + "build-linux64-tsan/opt": 0.78, + "build-linux64/opt": 0.86, + "build-macosx64-asan-fuzzing/opt": 0.56, + "build-macosx64-fuzzing/debug": 0.52, + "build-macosx64/opt": 0.74, + "build-win32/opt": 0.66, + "build-win64-aarch64/opt": 0.67, + "build-win64-asan-fuzzing/opt": 0.64, + "build-win64-asan/opt": 0.61, + "build-win64/opt": 0.85, + "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-1": 0.51, + "test-android-em-7.0-x86_64/debug-geckoview-junit": 0.7, + "test-android-em-7.0-x86_64/debug-geckoview-junit-multi": 0.51, + "test-android-em-7.0-x86_64/debug-geckoview-reftest-1": 0.51, + "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-3": 0.52, + "test-android-em-7.0-x86_64/opt-geckoview-junit-multi": 0.53, + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-1": 0.58, + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-3": 0.59, + "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-4": 0.67, + "test-linux1804-64-asan-qr/opt-reftest-1": 0.67, + "test-linux1804-64-asan-qr/opt-reftest-2": 0.53, + "test-linux1804-64-asan-qr/opt-reftest-3": 0.68, + "test-linux1804-64-asan-qr/opt-reftest-5": 0.59, + "test-linux1804-64-asan-qr/opt-reftest-6": 0.61, + "test-linux1804-64-asan-qr/opt-reftest-7": 0.64, + "test-linux1804-64-asan/opt-marionette": 0.68, + "test-linux1804-64-asan/opt-mochitest-browser-chrome-10": 0.61, + "test-linux1804-64-asan/opt-mochitest-browser-chrome-16": 0.69, + "test-linux1804-64-asan/opt-mochitest-chrome-1proc-3": 0.71, + "test-linux1804-64-asan/opt-mochitest-devtools-chrome-1": 0.57, + "test-linux1804-64-asan/opt-mochitest-media-3": 0.52, + "test-linux1804-64-asan/opt-mochitest-plain-3": 0.5, + "test-linux1804-64-asan/opt-mochitest-plain-5": 0.55, + "test-linux1804-64-asan/opt-mochitest-plain-6": 0.5, + "test-linux1804-64-asan/opt-mochitest-plain-8": 0.6, + "test-linux1804-64-asan/opt-reftest-1": 0.67, + "test-linux1804-64-asan/opt-reftest-2": 0.67, + "test-linux1804-64-asan/opt-reftest-3": 0.68, + "test-linux1804-64-asan/opt-reftest-4": 0.61, + "test-linux1804-64-asan/opt-reftest-5": 0.66, + "test-linux1804-64-asan/opt-reftest-6": 0.64, + "test-linux1804-64-asan/opt-reftest-7": 0.64, + "test-linux1804-64-asan/opt-reftest-no-accel-1": 0.76, + "test-linux1804-64-asan/opt-reftest-no-accel-2": 0.76, + "test-linux1804-64-asan/opt-reftest-no-accel-3": 0.77, + "test-linux1804-64-asan/opt-reftest-no-accel-4": 0.7, + "test-linux1804-64-asan/opt-reftest-no-accel-5": 0.58, + "test-linux1804-64-asan/opt-reftest-no-accel-6": 0.76, + "test-linux1804-64-asan/opt-reftest-no-accel-7": 0.76, + "test-linux1804-64-asan/opt-reftest-no-accel-8": 0.54, + "test-linux1804-64-asan/opt-web-platform-tests-17": 0.55, + "test-linux1804-64-asan/opt-web-platform-tests-19": 0.58, + "test-linux1804-64-asan/opt-web-platform-tests-20": 0.51, + "test-linux1804-64-asan/opt-web-platform-tests-21": 0.54, + "test-linux1804-64-asan/opt-xpcshell-2": 0.61, + "test-linux1804-64-asan/opt-xpcshell-3": 0.58, + "test-linux1804-64-qr/debug-gtest-1proc": 0.55, + "test-linux1804-64-qr/debug-mochitest-media-3": 0.5, + "test-linux1804-64-qr/debug-mochitest-plain-11": 0.55, + "test-linux1804-64-qr/debug-mochitest-plain-13": 0.51, + "test-linux1804-64-qr/debug-mochitest-plain-15": 0.54, + "test-linux1804-64-qr/debug-mochitest-plain-16": 0.57, + "test-linux1804-64-qr/debug-mochitest-plain-15": 0.55, + "test-linux1804-64-qr/debug-reftest-1": 0.67, + "test-linux1804-64-qr/debug-reftest-2": 0.61, + "test-linux1804-64-qr/debug-reftest-5": 0.59, + "test-linux1804-64-qr/debug-reftest-6": 0.62, + "test-linux1804-64-qr/debug-reftest-7": 0.62, + "test-linux1804-64-qr/debug-reftest-8": 0.57, + "test-linux1804-64-qr/debug-reftest-7": 0.5, + "test-linux1804-64-qr/debug-reftest-swr-1": 0.83, + "test-linux1804-64-qr/debug-reftest-swr-2": 0.73, + "test-linux1804-64-qr/debug-reftest-swr-3": 0.73, + "test-linux1804-64-qr/debug-reftest-swr-4": 0.82, + "test-linux1804-64-qr/debug-reftest-swr-5": 0.79, + "test-linux1804-64-qr/debug-reftest-swr-6": 0.8, + "test-linux1804-64-qr/debug-reftest-swr-7": 0.82, + "test-linux1804-64-qr/debug-reftest-swr-8": 0.82, + "test-linux1804-64-qr/debug-web-platform-tests-3": 0.62, + "test-linux1804-64-qr/debug-web-platform-tests-reftest-4": 0.55, + "test-linux1804-64-qr/debug-web-platform-tests-reftest-5": 0.55, + "test-linux1804-64-qr/debug-web-platform-tests-reftest-6": 0.52, + "test-linux1804-64-qr/debug-web-platform-tests-wdspec-1": 0.54, + "test-linux1804-64-qr/debug-xpcshell-3": 0.6, + "test-linux1804-64-qr/debug-xpcshell-6": 0.64, + "test-linux1804-64-qr/opt-gtest-1proc": 0.63, + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-1": 0.52, + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-2": 0.56, + "test-linux1804-64-qr/opt-mochitest-chrome-1proc-3": 0.56, + "test-linux1804-64-qr/opt-reftest-4": 0.53, + "test-linux1804-64-qr/opt-xpcshell-1": 0.7, + "test-linux1804-64-qr/opt-xpcshell-2": 0.81, + "test-linux1804-64-qr/opt-xpcshell-3": 0.82, + "test-linux1804-64-tsan/opt-mochitest-plain-10": 0.54, + "test-linux1804-64-tsan/opt-mochitest-plain-13": 0.57, + "test-linux1804-64-tsan/opt-mochitest-plain-16": 0.5, + "test-linux1804-64-tsan/opt-mochitest-plain-17": 0.62, + "test-linux1804-64-tsan/opt-mochitest-plain-18": 0.6, + "test-linux1804-64-tsan/opt-mochitest-plain-19": 0.63, + "test-linux1804-64-tsan/opt-mochitest-plain-20": 0.68, + "test-linux1804-64-tsan/opt-mochitest-plain-4": 0.58, + "test-linux1804-64-tsan/opt-mochitest-plain-5": 0.57, + "test-linux1804-64-tsan/opt-mochitest-plain-6": 0.58, + "test-linux1804-64-tsan/opt-mochitest-plain-7": 0.65, + "test-linux1804-64-tsan/opt-mochitest-plain-9": 0.5, + "test-linux1804-64-tsan/opt-xpcshell-1": 0.5, + "test-linux1804-64-tsan/opt-xpcshell-2": 0.71, + "test-linux1804-64-tsan/opt-xpcshell-3": 0.73, + "test-linux1804-64-tsan/opt-xpcshell-4": 0.57, + "test-linux1804-64-tsan/opt-xpcshell-5": 0.73, + "test-linux1804-64-tsan/opt-xpcshell-6": 0.69, + "test-linux1804-64-tsan/opt-xpcshell-7": 0.81, + "test-linux1804-64-tsan/opt-xpcshell-8": 0.72, + "test-linux1804-64/debug-gtest-1proc": 0.55, + "test-linux1804-64/debug-marionette": 0.65, + "test-linux1804-64/debug-mochitest-browser-chrome-16": 0.63, + "test-linux1804-64/debug-mochitest-devtools-chrome-5": 0.54, + "test-linux1804-64/debug-mochitest-media-3": 0.56, + "test-linux1804-64/debug-mochitest-plain-12": 0.55, + "test-linux1804-64/debug-mochitest-plain-13": 0.53, + "test-linux1804-64/debug-mochitest-plain-14": 0.55, + "test-linux1804-64/debug-mochitest-plain-15": 0.55, + "test-linux1804-64/debug-mochitest-plain-16": 0.54, + "test-linux1804-64/debug-reftest-1": 0.61, + "test-linux1804-64/debug-reftest-2": 0.61, + "test-linux1804-64/debug-reftest-5": 0.6, + "test-linux1804-64/debug-reftest-6": 0.62, + "test-linux1804-64/debug-reftest-7": 0.64, + "test-linux1804-64/debug-reftest-no-accel-1": 0.68, + "test-linux1804-64/debug-reftest-no-accel-2": 0.57, + "test-linux1804-64/debug-reftest-no-accel-3": 0.52, + "test-linux1804-64/debug-reftest-no-accel-4": 0.65, + "test-linux1804-64/debug-reftest-no-accel-7": 0.54, + "test-linux1804-64/debug-xpcshell-3": 0.68, + "test-linux1804-64/debug-xpcshell-6": 0.67, + "test-linux1804-64/debug-xpcshell-spi-nw-3": 0.51, + "test-linux1804-64/debug-xpcshell-spi-nw-5": 0.59, + "test-linux1804-64/debug-xpcshell-spi-nw-6": 0.57, + "test-linux1804-64/opt-browser-screenshots": 0.65, + "test-linux1804-64/opt-gtest-1proc": 0.63, + "test-linux1804-64/opt-marionette": 0.67, + "test-linux1804-64/opt-marionette-headless": 0.68, + "test-linux1804-64/opt-mochitest-chrome-1proc-2": 0.6, + "test-linux1804-64/opt-mochitest-plain-5": 0.55, + "test-linux1804-64/opt-xpcshell-1": 0.66, + "test-linux1804-64/opt-xpcshell-2": 0.73, + "test-linux1804-64/opt-xpcshell-3": 0.82, + "test-macosx1014-64-qr/debug-crashtest": 0.55, + "test-macosx1014-64-qr/debug-reftest-2": 0.5, + "test-macosx1014-64-qr/debug-reftest-4": 0.52, + "test-macosx1014-64-qr/debug-reftest-5": 0.55, + "test-macosx1014-64-qr/opt-crashtest": 0.59, + "test-macosx1014-64-qr/opt-reftest-3": 0.58, + "test-macosx1014-64/debug-marionette": 0.72, + "test-macosx1014-64/debug-mochitest-browser-chrome-16": 0.62, + "test-macosx1014-64/debug-mochitest-remote": 0.5, + "test-macosx1014-64/debug-web-platform-tests-15": 0.52, + "test-macosx1014-64/opt-crashtest": 0.53, + "test-macosx1014-64/opt-marionette": 0.6, + "test-macosx1014-64/opt-mochitest-browser-chrome-7": 0.7, + "test-macosx1014-64/opt-mochitest-chrome-1proc-2": 0.51, + "test-macosx1014-64/opt-mochitest-devtools-chrome-2": 0.51, + "test-macosx1014-64/opt-mochitest-plain-4": 0.57, + "test-macosx1014-64/opt-reftest-2": 0.63, + "test-macosx1014-64/opt-web-platform-tests-5": 0.5, + "test-windows11-64-2009-asan/opt-marionette": 0.64, + "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9": 0.83, + "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-2": 0.59, + "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-3": 0.62, + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-1": 0.54, + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-2": 0.6, + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-4": 0.57, + "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-7": 0.59, + "test-windows11-64-2009-asan/opt-reftest-1": 0.68, + "test-windows11-64-2009-asan/opt-reftest-2": 0.65, + "test-windows11-64-2009-asan/opt-reftest-3": 0.72, + "test-windows11-64-2009-qr/debug-crashtest": 0.5, + "test-windows11-64-2009-qr/debug-mochitest-media": 0.57, + "test-windows11-64-2009-qr/debug-mochitest-media-spi": 0.51, + "test-windows11-64-2009-qr/debug-mochitest-webgl1-core": 0.7, + "test-windows11-64-2009-qr/debug-reftest-1": 0.5, + "test-windows11-64-2009-qr/debug-reftest-2": 0.52, + "test-windows11-64-2009-qr/debug-reftest-3": 0.57, + "test-windows11-64-2009-qr/opt-crashtest": 0.62, + "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-7": 0.7, + "test-windows11-64-2009/debug-gtest-1proc": 0.62, + "test-windows11-64-2009/debug-mochitest-a11y-1proc": 0.59, + "test-windows11-64-2009/debug-mochitest-media": 0.53, + "test-windows11-64-2009/debug-mochitest-webgl1-core": 0.67, + "test-windows11-64-2009/debug-reftest-2": 0.54, + "test-windows11-64-2009/debug-reftest-4": 0.67, + "test-windows11-64-2009/debug-web-platform-tests-11": 0.52, + "test-windows11-64-2009/debug-web-platform-tests-14": 0.53, + "test-windows11-64-2009/opt-browser-screenshots": 0.66, + "test-windows11-64-2009/opt-crashtest": 0.53, + "test-windows11-64-2009/opt-marionette": 0.75, + "test-windows11-64-2009/opt-mochitest-browser-chrome-7": 0.71, + "test-windows11-64-2009/opt-mochitest-chrome-1proc-2": 0.62, + "test-windows11-64-2009/opt-mochitest-devtools-chrome-2": 0.63, + "test-windows11-64-2009/opt-mochitest-devtools-chrome-4": 0.51, + "test-windows11-64-2009/opt-reftest-1": 0.53, + "test-windows11-64-2009/opt-reftest-2": 0.68, + "test-windows11-64-2009/opt-web-platform-tests-4": 0.59, + "test-windows11-64-2009/opt-web-platform-tests-9": 0.54, + "test-windows7-32/debug-marionette": 0.72, + "test-windows7-32/debug-mochitest-a11y-1proc": 0.58, + "test-windows7-32/debug-mochitest-media-1": 0.56, + "test-windows7-32/debug-mochitest-media-2": 0.5, + "test-windows7-32/debug-mochitest-media-3": 0.52, + "test-windows7-32/debug-mochitest-media-spi-1": 0.55, + "test-windows7-32/debug-mochitest-media-spi-2": 0.51, + "test-windows7-32/debug-mochitest-webgl1-core": 0.71, + "test-windows7-32/debug-reftest-2": 0.62, + "test-windows7-32/debug-reftest-3": 0.51, + "test-windows7-32/debug-reftest-4": 0.59, + "test-windows7-32/debug-reftest-gpu-2": 0.62, + "test-windows7-32/debug-reftest-gpu-4": 0.69, + "test-windows7-32/debug-reftest-no-accel-1": 0.76, + "test-windows7-32/debug-reftest-no-accel-2": 0.8, + "test-windows7-32/debug-reftest-no-accel-4": 0.85, + "test-windows7-32/debug-web-platform-tests-12": 0.58, + "test-windows7-32/debug-web-platform-tests-14": 0.55, + "test-windows7-32/debug-web-platform-tests-4": 0.54, + "test-windows7-32/opt-browser-screenshots": 0.66, + "test-windows7-32/opt-crashtest": 0.54, + "test-windows7-32/opt-gtest-1proc": 0.51, + "test-windows7-32/opt-marionette": 0.74, + "test-windows7-32/opt-mochitest-chrome-1proc-2": 0.52, + "test-windows7-32/opt-mochitest-devtools-chrome-4": 0.55, + "test-windows7-32/opt-reftest-1": 0.75, + "test-windows7-32/opt-reftest-gpu-1": 0.64, + "test-windows7-32/opt-reftest-no-accel-1": 0.74, + "test-windows7-32/opt-reftest-no-accel-3": 0.77, + "test-windows7-32/opt-web-platform-tests-10": 0.54, + "test-windows7-32/opt-web-platform-tests-9": 0.59 + } +} diff --git a/taskcluster/test/data/pushes.json b/taskcluster/test/data/pushes.json new file mode 100644 index 0000000000..093e8e0b5f --- /dev/null +++ b/taskcluster/test/data/pushes.json @@ -0,0 +1 @@ +{ "1": { "date": 1593029535 } } diff --git a/taskcluster/test/params/autoland-onpush.yml b/taskcluster/test/params/autoland-onpush.yml new file mode 100644 index 0000000000..b11ba003dd --- /dev/null +++ b/taskcluster/test/params/autoland-onpush.yml @@ -0,0 +1,44 @@ +--- +app_version: 87.0a1 +backstop: false +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1612296233 +build_number: 1 +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: cee95ac4c0a6dfe53a4a85ecfd854e449561b4a9 +head_repository: https://hg.mozilla.org/integration/autoland +head_rev: cee95ac4c0a6dfe53a4a85ecfd854e449561b4a9 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20210202200353" +next_version: null +optimize_strategies: gecko_taskgraph.optimize:project.autoland +optimize_target_tasks: true +owner: cbrindusan@mozilla.com +phabricator_diff: null +project: autoland +pushdate: 1612296233 +pushlog_id: "135570" +release_enable_emefree: false +release_enable_partner_attribution: false +release_enable_partner_repack: false +release_eta: "" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: [] +release_product: null +release_type: "" +required_signoffs: [] +signoff_urls: {} +target_tasks_method: autoland_tasks +tasks_for: hg-push +test_manifest_loader: bugbug +try_mode: null +try_options: null +try_task_config: {} +version: 87.0a1 diff --git a/taskcluster/test/params/mb-onpush.yml b/taskcluster/test/params/mb-onpush.yml new file mode 100644 index 0000000000..74ab02bf39 --- /dev/null +++ b/taskcluster/test/params/mb-onpush.yml @@ -0,0 +1,43 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0a1 +version: 60.0a1 +next_version: null +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: false +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +# target_task_labels: [] +target_tasks_method: mozilla_beta_tasks +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: null +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: hg-push +test_manifest_loader: default diff --git a/taskcluster/test/params/mb-promote-devedition-partials.yml b/taskcluster/test/params/mb-promote-devedition-partials.yml new file mode 100644 index 0000000000..1ece42a841 --- /dev/null +++ b/taskcluster/test/params/mb-promote-devedition-partials.yml @@ -0,0 +1,13210 @@ +--- +app_version: "77.0" +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1588614376 +build_number: 2 +do_not_optimize: [] +existing_tasks: + build-android-aarch64-gcp/debug: JGmK3sGPQeeqMbV7ulQr2A + build-android-aarch64-gcp/opt: J0nPj6LGQey67GbeUcNYew + build-android-aarch64-nightly/opt: NF0yUmArSc-VloM4JJD5VQ + build-android-aarch64-nightly/opt-upload-symbols: DxWljeJ1QNqeZ1Mpo5JxQA + build-android-aarch64/debug: fwks2IoQSeu1JRdzn5P7fA + build-android-aarch64/opt: DKKwmNmdSUWtx52mOjw8Bw + build-android-aarch64/pgo: DkBSLjHsRSun1yW-8V7tEg + build-android-api-16-gcp/debug: VhIneri8Tg6wjiov2hW0gg + build-android-api-16-gcp/opt: LYIrHCQwTbqP72GDCs75wQ + build-android-api-16-nightly/opt: bZMyMvI4QeCAhLQaEgiObg + build-android-api-16-nightly/opt-upload-symbols: NZY8OPD8TaG6NdIKnKtq_w + build-android-api-16/debug: Q473B0U-TB6CzyzpC66AVg + build-android-api-16/opt: c8Z2uLohR2KTAQ6ARviZKQ + build-android-api-16/pgo: ftFtRNCvTBWixnNCgyAguA + build-android-x86-fuzzing/debug: SLLSsreRTUaDDD5oK6kDpA + build-android-x86-gcp/opt: Xx0bwox-RSqQntZPH7bOrA + build-android-x86-nightly/opt: Nkmvu55RQQ-9ZlHoMK1FdA + build-android-x86-nightly/opt-upload-symbols: InNo05VOSYiqzIPPGk6agw + build-android-x86/opt: bRR9HCF2RouxDkvf7DaTWw + build-android-x86_64-asan-fuzzing/opt: CBykgBn4SYqcdWAFWGs5dQ + build-android-x86_64-gcp/debug: F3FT-r7FQsiND7rO475g3A + build-android-x86_64-gcp/opt: cX8IsKm8RGCSnHTV-1C28Q + build-android-x86_64-nightly/opt: IqO8rApMRB-6KNQBkmlohQ + build-android-x86_64-nightly/opt-upload-symbols: MVTH5eoMQeWDWzo0TNxXYg + build-android-x86_64/debug: LdZ4L5MrQFCC_t0YjeZIKg + build-android-x86_64/opt: M5roPcRJTiipuzGohrBidg + build-docker-image-android-build: bjPrBHarQKmT_QTOWBZErQ + build-docker-image-condprof: dsntAtbxS6CXbHWLCR79uQ + build-docker-image-custom-v8: fFgrg8L8S8GyIAKxyFYYUQ + build-docker-image-deb10-toolchain-build: LmH6FyMfTaycxD017oDt-A + build-docker-image-deb9-toolchain-build: Jr4J9lqgRqOaKqOi-BC_EQ + build-docker-image-debian10-amd64-build: bszVYqQkTv-LNQhFM4eyNw + build-docker-image-debian10-arm64-build: RYkZf7j3SiaulBQKRR5uYw + build-docker-image-debian10-base: dGvRYbddQ0-GwRBd-3kWEA + build-docker-image-debian10-packages: UFg_TurJSam3ZWcXAhJ9rg + build-docker-image-debian10-raw: Pb408udCSPKZ7K4Xhuj1wQ + build-docker-image-debian10-test: NHvDhUpPSsO84cNjHLy4Fg + build-docker-image-debian10-test-iris: a-f3lPf7SxCRrw4QqC1cyg + build-docker-image-debian7-amd64-build: P2gjCJ3BQJSagsBHYq72sw + build-docker-image-debian7-amd64-build-base: NtAMeTIgTi6-4tyaJo5mpQ + build-docker-image-debian7-base: IuaCvSNeS-ixturPDdyQsA + build-docker-image-debian7-i386-build: BNussGJvR7m2VYnGv0TJyA + build-docker-image-debian7-i386-packages: M5weEEyeQE2fglBTUHxn-A + build-docker-image-debian7-i386-raw: HVKPmkvQS0aSpWjybrpoUg + build-docker-image-debian7-mozjs-rust-build: PltNICo9Tg-2XvhfSK1cxg + build-docker-image-debian7-packages: aY8COTJpQ4mLmPAydIMebQ + build-docker-image-debian7-raw: U6fYI-SoQ2SWL-wfKWF06A + build-docker-image-debian9-amd64-build: JvMjKNhsRlCnpq6eAq0HCw + build-docker-image-debian9-base: EF2pM2dhSfOZFpmsUoet8Q + build-docker-image-debian9-packages: eG3_hPSlSlq6nvwNrT7KoQ + build-docker-image-debian9-raw: fLZWsm3STASXGbdT1-fyDg + build-docker-image-desktop1604-test: DakwuH_ZTiOafYSu3lswOQ + build-docker-image-diffoscope: ZjO_5d6bSbChdULCfF5W6A + build-docker-image-fetch: EGzdZbECS5armfrvRknmfw + build-docker-image-firefox-flatpak: OWno4UszT4uFLTgE4t6oiA + build-docker-image-firefox-snap: J2VPc-BuT9iqetz4xbcDbg + build-docker-image-funsize-update-generator: dFBdzttWSOSNW0ZplGDpRg + build-docker-image-gdb-test: HQmDAuIgQR2DGFvTfejcFg + build-docker-image-github-sync: CMByuJGmS7KFEEYJUTBMsQ + build-docker-image-image_builder: PHMSfxS8Q0GAxl9UvpgQsw + build-docker-image-index-task: CTzHObgZQ9muC_DxmxIvKQ + build-docker-image-lint: PJxeCIC3QVqUFrCZXIVC2Q + build-docker-image-mingw32-build: RtN9zek1RQGrsQdLHpeTZg + build-docker-image-mozapkpublisher: TrPBtJk6Q2-A5V6drH8LMQ + build-docker-image-partner-repack: cXT0xyU6RbuBvIE-ZKGuPA + build-docker-image-periodic-updates: YGkhXyX-TCyfp-Z6GBmXZw + build-docker-image-python-dependency-update: cAahrUDURbmgJxUvA6wSWA + build-docker-image-static-analysis-build: HaSSrs7HTAmltcJTuVIDjw + build-docker-image-system-symbols-mac: LevDhEdcT4iahBTk8Kmykw + build-docker-image-system-symbols-win: Ikir9e_NT9ipoUDnI4knWA + build-docker-image-toolchain-arm64-build: Cd4ly_HrTuqccK1sn73Xgw + build-docker-image-toolchain-build: Bu_ApajJQ4GRA1_O7sXxVw + build-docker-image-ubuntu1804-test: fXde-uciR_Wmqd2vrpuuug + build-docker-image-update-verify: fhfvZFCqROO1PRE0Kl-Pdg + build-docker-image-valgrind-build: bQRcIBnRSFilSeHn72ojnQ + build-docker-image-visual-metrics: TjZFyoy_TBqb3-ak39cIpQ + build-docker-image-webrender: KMcWxflNSYGwctBOmjradg + build-docker-image-wgpu: LLESbwYEQ5iMk-86bjIx5A + build-fat-aar-android-geckoview-fat-aar-nightly/opt: KFK1iEX9TbGkaZB4EUZYwQ + build-fat-aar-android-geckoview-fat-aar/opt: JWT6gj5HQT-YwZVa7H-0tg + build-linux-devedition/opt: WYWYFef6Q0qz0335nUoU3g + build-linux-devedition/opt-upload-symbols: e9LRwnOLSTCyESVC0osBpQ + build-linux-gcp/debug: HuZ6MTQ4Sqm4Z7RNyZi-oA + build-linux-gcp/opt: PjC2SalYS1uAUa9ZTVWkbw + build-linux-shippable/opt: Eg5MQBbORH-TL9wXw5Zr8A + build-linux-shippable/opt-upload-symbols: Pk9PpmVLQCm2q64juTx1YQ + build-linux/debug: NUTDuCPwSGmoTx9oVTeRdA + build-linux64-add-on-devel/opt: QiYpfLWzTxqnhchvZW8Svg + build-linux64-asan-fuzzing/opt: c8ym7F3pSACpt7wgVcCTVA + build-linux64-asan/debug: eTQLh5TQSYipA9DCzo5Wew + build-linux64-asan/opt: IeQR16eoSueQw0sLwUaW0w + build-linux64-base-toolchains-clang/debug: NO8Nds2qShqIZ6ah0V8njg + build-linux64-base-toolchains-clang/opt: JYjSUuLSQvqsBPc3isCjiw + build-linux64-base-toolchains/debug: MHhKmUWIR6-L9fnr-BhS-A + build-linux64-base-toolchains/opt: ELD4oyB3RmygIj9InOIJgg + build-linux64-devedition/opt: BDvk6HENTdaQqWMTnjSU6w + build-linux64-devedition/opt-upload-symbols: ddJZp63VQba4pyc7oRdPLw + build-linux64-fuzzing/debug: XytYGM40S2iBmYDupX3c_g + build-linux64-gcp/debug: YRKR61XaSbquoV60nnyQpA + build-linux64-shippable/opt: DzeGajhDRGaTrG3DD1-l_w + build-linux64-shippable/opt-upload-symbols: ItbM5hxRQKKkXzPglKwYqg + build-linux64-tsan-fuzzing/opt: KWka2LBESd6zjaDqhX-GqA + build-linux64-tsan/opt: UDXGJpyWSz2ZoucGas2cTA + build-linux64/debug: YzWXbaKISXq3-9Meh5QcgA + build-macosx64-add-on-devel/opt: NIrDYMRdQjWcHfLPeZMIDg + build-macosx64-asan-fuzzing/opt: Rkh2HDXvSSa-wleLKi4LjA + build-macosx64-devedition/opt: HSAGV9-2TaOB-SdIOz6fEA + build-macosx64-devedition/opt-upload-symbols: JXZ5rBcoQyyd0ohWWcxNFw + build-macosx64-fuzzing/debug: L9Rr7j14TE6VnORna-uSlw + build-macosx64-gcp/debug: G0vAXHA1RKiLSLYANre7sA + build-macosx64-shippable/opt: VP79_dkHQpGe8X061qF6qg + build-macosx64-shippable/opt-upload-symbols: HQl5ZociRyK8Z6nS-GoY3w + build-macosx64/debug: Qq06SqHPRMWtl1KkoBoeBg + build-notarization-part-1-macosx64-devedition/opt: TN7cFjAaTd2G4IrJw-wGIQ + build-notarization-part-1-macosx64-shippable/opt: SwteXZHnQryxlMuS5HtF1A + build-notarization-poller-macosx64-devedition/opt: F78CUTAQTki25s258bzJRQ + build-notarization-poller-macosx64-shippable/opt: RQwDgYL9SWOjq8w1Gt_upA + build-signing-android-aarch64-nightly/opt: DE5E9iULQnCQS7oIFp8oNg + build-signing-android-api-16-nightly/opt: EXVbSRPZQZe4J5qGEDNeEg + build-signing-android-geckoview-fat-aar-nightly/opt: bejgNxLBSpGPm89UvGensA + build-signing-android-x86-nightly/opt: YwaCnOAIQwuOYAHR4q7Zmg + build-signing-android-x86_64-nightly/opt: MrkbJegVSiO6eZhr08ytZQ + build-signing-linux-devedition/opt: cA5MiADCQZiuHWSLVTVnTg + build-signing-linux-shippable/opt: KpjK2i4YQlmU0y1SPXbqFA + build-signing-linux64-devedition/opt: IZ8mhHWOQY-9ZKt_OU_UxA + build-signing-linux64-shippable/opt: a69AGdHDSba-dI003usseA + build-signing-macosx64-devedition/opt: LCoDGmURRYOHJ9ewGPOVLw + build-signing-macosx64-shippable/opt: GIyIBrnKTDi4EihDhlBGHw + build-signing-win32-devedition/opt: a9yK7B1qTLCf807q--ufLA + build-signing-win32-shippable/opt: InYlcfU-SlahResHt31R0w + build-signing-win32/debug: T1qreDKTR8GcCr-LDt2BTg + build-signing-win64-aarch64-devedition/opt: J8S0B2PeQGm993aSvQX9MA + build-signing-win64-aarch64-shippable/opt: EVyLYumxQVy-sJb2lQASow + build-signing-win64-devedition/opt: ULgn5dZGQBmemg5wZmhiNQ + build-signing-win64-shippable/opt: FxyKT1ALSUWiWvmALljfKA + build-signing-win64/debug: BeTLmspiQ5CYog9aaFzInQ + build-win32-add-on-devel/opt: Ae0Pvp3zQQCWpcNNijK5Dg + build-win32-devedition/opt: ZmVuSRttSdSyMb0lc8uNHA + build-win32-devedition/opt-upload-symbols: bzzr5RPwS0qKUYxcNNoD-w + build-win32-mingwclang/debug: NRWph8N7Q--N5xNpEF0Pfw + build-win32-mingwclang/opt: Bo9nfgMyRma6KX5NxKAOYw + build-win32-shippable/opt: XISABU5rT_uqOLYW9KKbow + build-win32-shippable/opt-upload-symbols: L9XC7YXqTuW6gaOi6TroxQ + build-win32/debug: BmqmolGSRZS8RHh25zdWrQ + build-win32/opt: ZqQpeuTDTLugSTNgdjSgog + build-win64-aarch64-devedition-no-eme/opt: YmWL3PkQRSCOT_Ldu5wjaw + build-win64-aarch64-devedition/opt: VCEKdj5iT2yDRMz72tRbyg + build-win64-aarch64-devedition/opt-upload-symbols: Q99TpwsKRMyeEo-E-_kMdQ + build-win64-aarch64-eme/opt: Y9IgwTkXRROXLJ6A6QsXRw + build-win64-aarch64-shippable-no-eme/opt: akQSFje0SCqlyUXofj8Rrw + build-win64-aarch64-shippable/opt: FyJz4w_NR3Scx4NunQ7vzw + build-win64-aarch64-shippable/opt-upload-symbols: YEXXiUjJSgKkKufsVIhd1A + build-win64-aarch64/opt: OeiZCWt8SRaoH2x1go4lww + build-win64-add-on-devel/opt: Q1z5hBa9SKevVqynVy3kcw + build-win64-asan-fuzzing/opt: K-w41kc3TUiAcOy8OstdBw + build-win64-asan/debug: CismlWLtRdazPhUDG01QDQ + build-win64-asan/opt: cDPZyktBRHGldQcIkoWY4g + build-win64-devedition/opt: T6LTxrGjSxy21RxdHaVBRw + build-win64-devedition/opt-upload-symbols: HdcOcqpITv-zld0__TEiFA + build-win64-mingwclang/debug: GNgLFbP1SliqD7STOmhsLQ + build-win64-mingwclang/opt: OttQ3N87Sy-XvM-r3tyJag + build-win64-shippable/opt: QFxAu-nPQFmnvKJJp_m5yQ + build-win64-shippable/opt-upload-symbols: WzTeUUkHTfy4fmq0eS3HFA + build-win64/debug: coHjW7AlStCaELKzIs3f1w + diff-artifact-win64-aarch64-eme-validation: dkWwXzxqQjujXba7YGfzvA + fetch-android-rs-glue: QDqK2WN6T3S9zaBbTuBSrg + fetch-assorted-dom: bs7xcCLKRpCAkzhYWX09Uw + fetch-binutils-2.27: Z_aI0t3GS--v9AGCTMQ4pg + fetch-binutils-2.31.1: csl9SYLzQtqwryLLvcjg6A + fetch-cbindgen-0.14.1: Pwf1lqORS-CoQix1VNrzEA + fetch-cctools-port: ISWQgxVuQ7iyeAf1_0kJgg + fetch-clang-10: D-mdaWLLQt6Em2fk32ccEw + fetch-clang-5.0: XE5D3FSZQ1qXFXC_aMd56g + fetch-clang-7: FIyzXqT8T_Cc7K7bzXo-Rg + fetch-clang-9: KecNw86-Rhycvmj-EC33ow + fetch-cmake: Q54yL52hRRChS456jbYkYg + fetch-dump-syms: Y0jNmM2ZQmqKOcV6L2bIZw + fetch-fix-stacks: ASm0FfIXTGuFlMrwsS06Rg + fetch-fxc2: BVfPNDKsS1uHn7oO_N8N7Q + fetch-gcc-6.4.0: Ll-pP3P8QAOd0Zp-bBiSIA + fetch-gcc-7.4.0: DiXdbtxrS2O2H_dEPB7FUw + fetch-gcc-9.1.0: JwRl_TsrSA6t2-vAAj0r7Q + fetch-gmp-5.1.3: GB3HbQB1TCqBDv4ePQgl8w + fetch-gmp-6.1.0: CbHqtVUSReS6sYURNnSq_w + fetch-hfsplus-tools: WmQwbjv-SB-tuaBW6yjjCQ + fetch-isl-0.15: PdslxKHUSU2ZenKLqNDl3Q + fetch-isl-0.16.1: dBj-OKqlQgOmK12DwDHWjA + fetch-libdmg-hfsplus: AgtUuDFXTfWNa_LsdohYAA + fetch-libtapi: QCJB4A-vQqGEKjO3azOK2w + fetch-libunwind: aoK2nHohQPSx9efMhF271g + fetch-llvm-for-dsymutil: IlhbKqbrRY67ZDJZu_rFaQ + fetch-llvm-mingw: C4o6F7i0Qbi2jgqS4ofOlg + fetch-lucetc-source: d0DO-3KlS0Kq6LaLZ9DVIw + fetch-mingw-w64: YDSHmLWHQdO1h9a7PjpOyA + fetch-mpc-0.8.2: VvGKxogcROivMpFoR1YGhw + fetch-mpc-1.0.3: F0RqN1beQnGPjOVdMYwH_Q + fetch-mpfr-3.1.4: KlpS7aHZTuCj2k0zoff7xw + fetch-mpfr-3.1.5: Ro_e5dEZTeyvgxbpxoRpMg + fetch-nasm-2.14.02: SM7IB47LSkq7OpZqL63FDA + fetch-ninja: OPRvE05zQ2evAfm96YSHNA + fetch-nsis-3.01: c9DO_KELRMqtBHZGTqAaTA + fetch-nsis-3.01-win: FNHUmwhaRkShCYQp1z-wDA + fetch-rust-size: K2s1tum5TPypQAmOgvCY6Q + fetch-sccache: C75zz0lqRoG-6Mc_KVCsNw + fetch-unity-webgl: NEZAMpBYQbikxpQzUFX_aw + fetch-upx-3.95-win: KcZhWdxOTHy6DAwqzBZHrQ + fetch-wasi-sdk: O9ko-8CRQ9iyyJykegEE1Q + fetch-wasm-misc: B2bqyOJmQbeI30UdYgvwSg + fetch-winchecksec: ZUf_xXvVRPCvO7o4bxodog + fetch-wine-5.0: FZFcvs_TQBO-ihBssyUoSA + fetch-wix-3.14.0: d0gE9qCHTvO3Hq9qXi4yFw + fetch-zlib-1.2.11: THaU-BQaTVCU7OxLJIn-bg + geckodriver-repack-linux-nightly/opt: WqF_vT_4T_aGNlQGKRcH3g + geckodriver-repack-linux64-nightly/opt: PyNOULsxTBKZOlLb2GFWZQ + geckodriver-repack-macosx64-nightly/opt: MtcWcW8aShWzXn_0_914vg + geckodriver-repack-win32-nightly/opt: XupyfvA9TQSCjleqC92xPQ + geckodriver-repack-win64-nightly/opt: QpCn8I-yTp2eEr7qFaZFkg + geckodriver-signing-linux-nightly/opt: CnL0ptMEQ3uQVIO7a5KGNg + geckodriver-signing-linux64-nightly/opt: aChVGnDkT8SFThQWvKk__g + geckodriver-signing-macosx64-nightly/opt: NSjfby7sSVyf1aL44S0N0w + geckodriver-signing-win32-nightly/opt: TThc0i7ZQPOE1YbFcorfGQ + geckodriver-signing-win64-nightly/opt: P7gcEBdDRMqvazonIVCMYQ + generate-profile-android-api-16/pgo: GIJDT8HFRZyM5Xqk8YcXiw + generate-profile-linux-shippable/opt: OtYBmSzvSo-6CvACHpJ-KA + generate-profile-linux64-shippable/opt: FRa7LDRbQDWDiJYRD6bdlQ + generate-profile-macosx64-shippable/opt: GJnIyPigT7OEYT4V_FjJ7Q + generate-profile-win32-shippable/opt: Zscaa0AhSf-p2JSipVOlXg + generate-profile-win64-shippable/opt: ShdKVEbSRbKp1Gta8ZnGpg + hazard-linux64-haz/debug: MnX6U0JTTs6Tl_D_gEQ1Mg + instrumented-build-android-api-16/pgo: LyQLXk40TUWCdoA3ENVQ0Q + instrumented-build-linux-shippable/opt: FFCk5hpEToWFS6z-M3wRgA + instrumented-build-linux64-shippable/opt: DPE3OZJlSmqrti11PbivlA + instrumented-build-macosx64-shippable/opt: OzR-gdsbS4SqZbJvrJ4whg + instrumented-build-win32-shippable/opt: To5Go8HBTsyOUKTosGptdQ + instrumented-build-win64-shippable/opt: RrksvHnuSL-l4nFaya2esA + packages-deb10-cmake: E054EnLvSHm4A6HXgut95w + packages-deb10-mercurial: d1chdaQDTVG1xJpR1nSFrw + packages-deb10-python-zstandard: VE6kyb2SQ4ihX9GMv7kXug + packages-deb7-32-atk: Xd03WAjAS2SIoTeMuk6zTQ + packages-deb7-32-gdk-pixbuf: Za2y73ObTiGgH7zyEi8kqA + packages-deb7-32-glib: f6iC09G_Q2SwqxZwnnoARg + packages-deb7-32-gtk3: EVvvZEQdTk6nzAMdYdRt4A + packages-deb7-32-harfbuzz: JcKlKnmKSZyhdpoiyRxlSA + packages-deb7-32-libxkbcommon: Zc80i7ywTrub05lVJf6GfA + packages-deb7-32-pango: P9TDSCZlTuSqJ60TiRuoZA + packages-deb7-32-pcre3: WkGeQQ_qSdmQQS3arP0FIQ + packages-deb7-32-wayland: XcRVqnthTaOyTOy6sIz1cw + packages-deb7-32-xkeyboard-config: VB2p8YgfTjOAnWY180ZjTw + packages-deb7-apt: O3Aq-8qzSKus1EC3uSFayg + packages-deb7-atk: LL7G_BMxR2-RfddtW1gQoQ + packages-deb7-automake-1.14: N5JNe15oT72YCB0s8vVkDA + packages-deb7-cmake: MfGa3Rb6SFu7AsDVJs7g4Q + packages-deb7-devscripts-2.14: LTlbqRqrRcCydQgzldnALQ + packages-deb7-dh-python: b0o-v4VTRJ6QT_I5waAdng + packages-deb7-dpkg-1.17: csa3caTaQLiYAqCJCMXFLg + packages-deb7-gdb: NfnmZOmNR3OK2XTTyDDRNg + packages-deb7-gdk-pixbuf: KD6Vkd-hQJeCHK48hU1iFQ + packages-deb7-git: YXJeB6WiQwOFLLh6acnyNw + packages-deb7-glib: JYLH__UzSwGgfzbfQ2rFWA + packages-deb7-gtk3: eoHBjBm7S723jnZT6-ysOw + packages-deb7-harfbuzz: YhMGwO2sQiaRae-5-ZOHEQ + packages-deb7-libxkbcommon: cp6GJ9_3Q2COclcgEwzI5w + packages-deb7-make: WOojiEnTRQys6du5iclp3g + packages-deb7-mercurial: WtPCPL58TgujMuYM1RHjsg + packages-deb7-ninja: OrF2JyfySr6mEVrwFNXjdQ + packages-deb7-pango: NFxf9BlTQeaV-wAJ1bIkJA + packages-deb7-pcre3: ZuvsP-zMQkG2uQZ-4Scsqw + packages-deb7-python: NMXx8LL7SZCCgWRn2HIC-Q + packages-deb7-python-defaults: eKhC-uyBR5yPGTbcS-eX-A + packages-deb7-python-zstandard: BZibtOZpTyqJm_RVhc45Bw + packages-deb7-python3-defaults: f0D2K_W4SACSf8EQEihOCA + packages-deb7-python3.5: ZFOmmbY3Tba1HimjKvnrzw + packages-deb7-sqlite3: cohtM5C6Tou_PrzF79Gbcw + packages-deb7-valgrind: P9DEQWk7RYa6cE9uCiGO0g + packages-deb7-wayland: A6Y2holPQdCMppFpEIEYsQ + packages-deb7-xz-utils: VhEF3pTHTeaIO7MJFhBsdQ + packages-deb9-mercurial: K7HzJt9sR7SSzp7oBd75Bg + packages-deb9-python-zstandard: Z6FJdAm-QpKYORcNMEorag + repackage-linux-devedition/opt: DXLbCtPvTVGJFVQ5OuDZDA + repackage-linux-shippable/opt: YiaajJdLROmRkgpeCsowjg + repackage-linux64-devedition/opt: NXM363_YT9GHcZPQakOH3A + repackage-linux64-shippable/opt: E3nQ40U8R6Oa4dmfAEkAhA + repackage-macosx64-devedition/opt: KyuGwzVgTOaOtoW0doDe9g + repackage-macosx64-shippable/opt: PCW8veBYSyGkhFATrmuawQ + repackage-msi-win32-devedition/opt: HDnAORw_RqakGm5z7xfnpg + repackage-msi-win32-shippable/opt: KaXh-amcT5m-RRMCZuP7fQ + repackage-msi-win64-devedition/opt: GstzPkZVQnKgtjTAzcNjsA + repackage-msi-win64-shippable/opt: Nhobdd2-SW62YajYf3yUTg + repackage-signing-msi-win32-devedition/opt: cKJ0gkaiT3SGhLxWfOS-5w + repackage-signing-msi-win32-shippable/opt: XsUqJKDGQA-FuNk5DTxIeA + repackage-signing-msi-win64-devedition/opt: JVPzwCWCRpersiFVbMCkAQ + repackage-signing-msi-win64-shippable/opt: DKwigz5XSQKhqWD1cqPs7A + repackage-signing-win32-devedition/opt: DPztxi5lQGCK8kyGS824BQ + repackage-signing-win32-shippable/opt: FniLztUtSDyXXsdq5bVweQ + repackage-signing-win64-aarch64-devedition/opt: RhPB-J6hTjOiHfDMhXjpNw + repackage-signing-win64-aarch64-shippable/opt: dv0JPljeTFG9fY4v9zvmmQ + repackage-signing-win64-devedition/opt: QWALt93QSxGyAbn_Ee4Ijg + repackage-signing-win64-shippable/opt: E8xBPzR8RUeLmBry6mspZQ + repackage-win32-devedition/opt: eQgz8n4QT8WQfz4Rw4T17A + repackage-win32-shippable/opt: AUZvk_xFRQef7iVXNsdzmQ + repackage-win64-aarch64-devedition/opt: RTfJ44O5ScquoLxabstB-A + repackage-win64-aarch64-shippable/opt: JgiQwQKjRSGlA6LqhNPfKg + repackage-win64-devedition/opt: FTCSlQ_PQ8yjRQNtdxZ8lA + repackage-win64-shippable/opt: V0eEVaDUSdiYriUP1mOx6g + source-test-file-metadata-bugzilla-components: elkfO6TuSzm0LeBqPrmLnA + source-test-mozlint-clang-format: B3p5yAV1QX-pRvlkWHVpRw + source-test-mozlint-codespell: ZCS4EJ-YRqGyFTlWTYLhSQ + source-test-mozlint-eslint: CyO_GkCrTZGE6s9516LeUQ + source-test-mozlint-file-perm: IZZs_nU-QBWacV1XtjHulw + source-test-mozlint-file-whitespace: RZSO9OqlTJOWRZGcvCc-kA + source-test-mozlint-license: LZEZw13yTEe4I-rFu8n3yw + source-test-mozlint-mingw-cap: XZYBIV6CRKqfXdZ7juejMQ + source-test-node-newtab-unit-tests: OX1crFM3SC6laySbqw3MNA + test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: IhEh6X4cSy-YsGTqVw5NBA + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: e3WPPH62QjOuRcEYb4Krrw + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: HySSVSoFStaSGosIO4VK4Q + test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: AM-SWlBMQe6YA1fFlPIOOw + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: G6gZnXwhT9GW6DCeLa9X7w + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: SRL99WVCTDegycqQYPQ9Ew + test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: J7L9MSinRPe8DMCSD1JwNg + test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: EUkmEx5CTpKEEutdex4PWg + test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: FjDmsvxPSCanR5w8J9ZNfg + test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: Tvq2TdvmRXSrfwQFBVxXSA + test-android-em-7.0-x86_64/debug-geckoview-junit-e10s-multi-e10s: efQeK64iSiWsqxD4rKL-GA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: Zv5o5lhxQ4iPfJ4gNqybSA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: RWPW-iDKRYajyfUgNpJ38Q + test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-1: GhIzeV0HTaexzhzYKaTEeg + test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-2: Nmfjvz5jS9CI-2C2aoKCBg + test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-3: Xr3Vce-JSDGy0Ciol99KRg + test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-4: SXCbKg6NSCysX2qPNvUbtA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-gpu-e10s: JIH0bh7mSs-Kyf2MLTfrEA + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: YF7gxK9DT_2Za0ZQAKuNnQ + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: ACaVe4hBTMKK0yip-WDbhQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtest-e10s: Og40Y9z7RAKFlNjmXTpqkw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: e7Tz7ES_Tfatymjzx4R5cw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: Pm2zShqSQwSGW_lAisEASQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: bEQFZUYYTEeHXY2znKJlSw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: IE88gKwhTMKQFCsdRPyh8Q + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: bTxJIePCSoSZUB6yO-SICA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: bHeyek5yRzS3b9TWvMqRWA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Ws-LHSgPSwKUfTAEgmXChQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: Q5TH7TdXQ2Ow34MqIVBaLg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: Y98kCPY9QkCb_MjeSDhf4g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: buzCaEbLSFiSbVqbIVuPpw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: WAS0tNQGROuGcHoYL-1osg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: Cf1lrSOlReKbB3DWYmmESA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: c8-KuwfrT5Wv0a4x5fcdeA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: GBKNadN3RnKgLmQrPRRHrg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: XduTVsuoTQG0ODyGWiieVw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: MUtmS8OZToK6EtwEN9C2OA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-1: FHRluobCSEikp6t1yb2oVQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-2: B6b_mbaLRgu6tQqIG5uQnQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-3: YqYORy1GTymd87ERn_HNEA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-4: cfiUqfHlTOSPEk0pArXgVg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-5: RmlgHUJbSYq21zHx82zOWg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-6: bTbqzTQ5Ts2ylflUVds6Pg + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: H3UcGAf7R3eS73PkBcT-yA + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: V9VYOopAQdSOwwpfqnTTlg + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: U61psHdWT9-90_dp0KaO4g + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: En8rchmoROq4vSr65R3UCQ + test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: cK8OtnfJQfKUUtXQvnBV-w + test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: OWB4c6QlQESWbMC0CTn0wg + test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: QmlbtbHTRPaEpVwN1m-w2A + test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: RRbnPB_PRNS2j2NvVjCGNQ + test-android-em-7.0-x86_64/opt-geckoview-junit-e10s-multi-e10s: A0jVk0e1SfeuyHS9YU8GDg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: S_ZL8FztRtqaJ588VKafIQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: e1y9jhVzRKCp-cSr6ObaSw + test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-1: fGhp6VKhSBi2LGpwpfFzXg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-2: QwDorAAiTAWjO7lUsTGgcw + test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-3: CGmLQkO5TaeqeXgDHU1HmQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-4: Tf1ESYbJQ92C_i79U6a7bQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-gpu-e10s: ePiyC_hhRIOQehjd2W-YYQ + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: O6Qu0IQZQ1OcP0HUneg_DQ + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: PDU_gvP5TpieD1byO0_Xbg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtest-e10s: DYx3rrF8RSOfTqNHwJGcVg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: KmNSGsd6RNCDoqJUblhfNw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: Dhlh9zfhSpWkVcXiKN0DPw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: b3i9XCVxQEKQbORg7FfRRg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: KW2KktlyTr6yINAd27BBkw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: GDRg8zPsQ8i7luVfYgl1yQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: BWIrexWuQ_ulFVLSedNpNw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: R1SGfxvIS8yZbde11yoWMQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: Lw7YB28WSCiPhKlHYrkCkg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: ArDcMkgAT1-4baE-GBlI7A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: DujNbKLiTSqWysneMLrZBw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: d1oau3zgTfin-OJhmwkLjg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: QT3d8BQ9QVGAD8Yt1dUzIA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: HEPMPLhaTQaWL8KPZ0dIzQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: NCetaTNJRmSABApCM3UtJA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: UFMC7Wg7SZW3S1uW0haRMw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: DCjJ29T_SF-V3XaeOnxspA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-1: S7a6YaHLR2ymcDw152CCbQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-2: Y0iaVihdS9-8BN5h38hK2w + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-3: AUm8ziBLScWMbnziLRKjbA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-4: WuRTC6sDTKqg60Y8_j11Yg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-5: TJerm7rxTxGa_4KvCHb-Ow + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-6: IGcidfZ6R-24YuagcgmbTw + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: cQ4piG7rRGGkSYwujhW8gw + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: Uzwd98TkSsqgSeCune1OYQ + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: Ba3B5cy8Q3iq5yzxRQdppQ + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: PzJsKJ4eTGexzIGZOYCgZA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Uw1X0wM8RVy9PPy5Q4eK4Q + test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: K-0l06jARI2uT9uSJAHxyw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: P-mgi6kLTC-wrHK06Mfcpw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: aZRqMmeKQMOvBBjze4ReEQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: fJEiHblKR1SFLK0dQmGPbA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: OCDMeL58QxiiyQvPefY5Jg + test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: SjMTP1l1RCeSfOtFgO1j3w + test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: Md7HZ3okSC-72zcxS7Vmmg + test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: AQmJaV5sTkurEKh399mmfw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: ONhMkKWgTL2xnaei-Hio8A + test-linux1804-64-asan-qr/opt-crashtest-e10s: CepaK7LyT8Cp9VLZMubZSg + test-linux1804-64-asan-qr/opt-reftest-e10s-1: FuYGup-lQ1-XchI2ruX0Kw + test-linux1804-64-asan-qr/opt-reftest-e10s-2: b7jXOLH7T0qURnCmM8ePzA + test-linux1804-64-asan-qr/opt-reftest-e10s-3: W8uTMegyTseIByeordI8-A + test-linux1804-64-asan-qr/opt-reftest-e10s-4: BoVr6_5HQf-cBBPJ6Xs8mA + test-linux1804-64-asan-qr/opt-reftest-e10s-5: RO3Y2Qv3SmO_-CeSbPgPkQ + test-linux1804-64-asan-qr/opt-reftest-e10s-6: YdcVrKU6SYmnuNyVqedu9Q + test-linux1804-64-asan-qr/opt-reftest-e10s-7: W3oOtQmOSv2AZvGsfAtmlg + test-linux1804-64-asan-qr/opt-reftest-e10s-8: SW8q6JzyTTOMiGv_rM1Mbg + test-linux1804-64-asan/opt-cppunit-1proc: L4-Ptq2MRxqz1JE1_oGv6w + test-linux1804-64-asan/opt-crashtest-e10s: HP8-T3PfSDOusgLSd6H5Dw + test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: A1HvavVPRaGlGO2C5krAmw + test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: K6pRTbjCTju-ZFGOn1MpDg + test-linux1804-64-asan/opt-gtest-1proc: SLECsj_SR1yFMGJa6CgvCw + test-linux1804-64-asan/opt-marionette-e10s: aYotBGzGRjmX8RpdlNLc5Q + test-linux1804-64-asan/opt-mochitest-a11y-1proc: P8YIE2ABSr6ShjLORyZFVg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: SKXZVi1bTSC66wGLyTRY8A + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: Yw8nMBd5R9qIZd6OmFeh8g + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: O43B-fYgSzKtE8qdnRZn-A + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: GVLZtXTlTGS-sxhTvWIhSg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: dglSpe0AQ5Wlp-Hc5BJ7gg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PLfrwLDqR4KG8q8bOKx7eg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: G6kXpzeuQjWom9HwgcT8og + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: BwD9eENoSWic_cZ_31iotg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: QEWPH4I2TWG_BiGjAXTWOg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: Ew3oWWcRRNiUadjKFjL3vw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: ey_clBjPSU6tgxKg3icQBw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: XXcGrmddQjmST5S1quH-gA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: OpaqyCcEQnSnGZ1vKbf95Q + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: SpAfxliZRruuPGFFc1ItBw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: EHyRcrUVS-GHlazUhx0wRA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: c2rrSwK2TPSEfsGcJAlMjw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: WUSKQ9GmR1m6djioyujghw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: E5J09ovKQ-uhMtyU8PsTCw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: eO3GOZdeTtev1c8XFfGVBQ + test-linux1804-64-asan/opt-mochitest-chrome-gpu-e10s: GVSwqlcIRhi4sxRI3SOMjQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: R7UZlLaiQ-GaFkJnTbhOpw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: Wq1aEf-bQ3GMR2c-LLaFlg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: FGaoxdsOSXuXRlalnto-tQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: d1OvztgETtC7f5D77eqvmg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: aCk24HBgRCe-F3HaOwvO-Q + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: TiRtA-gaRpaEIZwxXfLCPQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: bElVdHjaRluQTxQwSUi5QQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: WEaPH1q-QNGlNq-GEDDatw + test-linux1804-64-asan/opt-mochitest-media-e10s-1: PAikJ6ppTGW26zJzxx_zUw + test-linux1804-64-asan/opt-mochitest-media-e10s-2: Muaj8sUuR0SXxOQGI6rfvw + test-linux1804-64-asan/opt-mochitest-media-e10s-3: H5gvzSacQ9CDlPCQqp_m_A + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: LLzbebNcR3ebVuADfZFXYQ + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: OGOIQOzSSge6q_u-H0J0bQ + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: PFC7ZQlcT_CjnbQXLZQmUw + test-linux1804-64-asan/opt-mochitest-plain-e10s-1: fnJWLYUOTcmii3LN8c40kA + test-linux1804-64-asan/opt-mochitest-plain-e10s-10: NxclL7EUQd2gUV1RukehcA + test-linux1804-64-asan/opt-mochitest-plain-e10s-2: PSuDGPTuQIaDHgTxdqmatw + test-linux1804-64-asan/opt-mochitest-plain-e10s-3: Wy2Nu5E0Sme8gBQgtGCVNg + test-linux1804-64-asan/opt-mochitest-plain-e10s-4: Ltk7i2ylSZq5JRznkAiMsw + test-linux1804-64-asan/opt-mochitest-plain-e10s-5: YUaYOELqQhGrH24BFd2dBw + test-linux1804-64-asan/opt-mochitest-plain-e10s-6: LqjxqpF_TGCB6UlRoaoudg + test-linux1804-64-asan/opt-mochitest-plain-e10s-7: CpYOHwXqRSiRcr-e_-Ak5A + test-linux1804-64-asan/opt-mochitest-plain-e10s-8: e7oQJsBUQdS3NVUkb-CAWQ + test-linux1804-64-asan/opt-mochitest-plain-e10s-9: Y51Fu7g1Tuu5MgPqrEnPpQ + test-linux1804-64-asan/opt-mochitest-plain-gpu-e10s: beksiFclQ1awIE4MVxFPNg + test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: f3pKsFfMSD2Ez9gVG8IIGQ + test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: Z47QW7xQT8mWtKgIU8jiQQ + test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: HsHN7MBGQli_h06IuVXr6g + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: NtGWc5vuTMSs5l31F5x7Gw + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Dom6NXI2SEab54opOVGA0g + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: G-mMwDcmQSipN5OOMzp44A + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: HMbUu3nxSDG6pq15BHpbIw + test-linux1804-64-asan/opt-reftest-e10s-1: eJ3A_p5QSsOLWXvw5NGT-A + test-linux1804-64-asan/opt-reftest-e10s-2: ai0NQ_ObQ7SrCCZKeJL_-w + test-linux1804-64-asan/opt-reftest-e10s-3: NQYPuYGkT22x23VxZqbEIA + test-linux1804-64-asan/opt-reftest-e10s-4: Lwxvc4KxQVSa3bvMHCYaEw + test-linux1804-64-asan/opt-reftest-e10s-5: GDPbJfZCT8ma91muSnjH6Q + test-linux1804-64-asan/opt-reftest-e10s-6: WWef4QBETcCS_e2Gz2EVSA + test-linux1804-64-asan/opt-reftest-e10s-7: Gri23CzoR9GgXbZl6oLMSA + test-linux1804-64-asan/opt-reftest-e10s-8: SlAwZKK9RwyfVipaCwR4Ig + test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: KcCDfT6jSSqi_Bd0SNpRAQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: DT1VATj1Tw69NMG7H8ilgA + test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: VQ_TiiwsSoGuAGsO6e_1Ig + test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: Y-9TrGXaQTObO2s_fY2ZIg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: VKAr2bnIRG-0dXF2S91X0g + test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: FKvyP-pxRn2QCwLxCX1VVQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: WZQ4kffLR0eiidgvoEqSPg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: RnqYPyluT8WMU3u-RZfrWQ + test-linux1804-64-asan/opt-telemetry-tests-client-e10s: DK1DDHDBTneKho9ZKzi1ig + test-linux1804-64-asan/opt-web-platform-tests-crashtest-e10s: dKrvdAJLRAKkESxrNAcYJA + test-linux1804-64-asan/opt-web-platform-tests-e10s-1: E45yQIlRRre3CTejANRzxA + test-linux1804-64-asan/opt-web-platform-tests-e10s-10: WkYKtMywTHOuB85Bps8vbQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-11: ddAJL5cnTAyIx9yH5POw8Q + test-linux1804-64-asan/opt-web-platform-tests-e10s-12: Ql-PDIo5T1mcDRn8r0J_hQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-13: QKm9JNowSvWUjYIXyJNGwQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-14: YaotuzL1TUSkQLNk0OolRQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-15: K1B6YAr-SDW_oJKMJQYY5w + test-linux1804-64-asan/opt-web-platform-tests-e10s-16: BRwFoEXUTYCzHkHb1yP37A + test-linux1804-64-asan/opt-web-platform-tests-e10s-17: OVsPiNYmTqWWjSEZ3Xh7rw + test-linux1804-64-asan/opt-web-platform-tests-e10s-18: TxP-dIkDSQ-JMQJEwW9jPw + test-linux1804-64-asan/opt-web-platform-tests-e10s-19: am8ghuCVR_2yFfLozqS5Xw + test-linux1804-64-asan/opt-web-platform-tests-e10s-2: XnmoFcq3SbyZqiBzwGBQDQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-20: PG-6OOQdSe6YIeKzlhNo5A + test-linux1804-64-asan/opt-web-platform-tests-e10s-21: RNJgn0caRbWRc7oM3l_HlA + test-linux1804-64-asan/opt-web-platform-tests-e10s-22: EY2HwzDzSau-GwhZ-n93ZQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-3: dMx_RZI2S1qUJiiAjyuoEg + test-linux1804-64-asan/opt-web-platform-tests-e10s-4: Ro1ZdbYmQAqUxgoJVfZJqw + test-linux1804-64-asan/opt-web-platform-tests-e10s-5: deHtHvwjS_WsYnIFdITpWA + test-linux1804-64-asan/opt-web-platform-tests-e10s-6: JOPNXg-wQr-6DrDYzC8oqQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-7: T4juEQOyQMu7qDjVVTAa9A + test-linux1804-64-asan/opt-web-platform-tests-e10s-8: M20mFU3oTams2ymk232aZQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-9: Ck_uSEoqSqmT-K-kMvAefQ + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-1: KvGsWawRT2-qo_oseCNwBw + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-2: fDnQHdk7TKKmMAGlDH4X1Q + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-3: R66wVYAhS6GR3adLlvI2ZA + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-4: Db6Usf4ETlSpRTM6cz-S1w + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-5: Hv2ekWwASl2aw1LFrGVitQ + test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-6: eszEo4U4RV2m0Ns3_I-7Jw + test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-1: YjJp1E17QeicT9YnSoQYtQ + test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-2: I_vtDOIfTCepZ7Z7cNe4iQ + test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-3: FBJN66wWS5CQGjQqJiNG5w + test-linux1804-64-asan/opt-xpcshell-e10s-1: YkY4HVqXThKhyTiQmZsSvg + test-linux1804-64-asan/opt-xpcshell-e10s-2: I3rYykeEQP-V-Y8jaVntiw + test-linux1804-64-asan/opt-xpcshell-e10s-3: IukJ8ZG_QBGr0yRlljRuMA + test-linux1804-64-asan/opt-xpcshell-e10s-4: KPWE6k3TSUC7pIzkg0TmmA + test-linux1804-64-asan/opt-xpcshell-e10s-5: NqBAVGjUT8yzF9jhg9VRMw + test-linux1804-64-devedition/opt-cppunit-1proc: UCobsSolRgG7GZ6tbr24aQ + test-linux1804-64-devedition/opt-crashtest-e10s: WQhJD8qeRtG5DQ5cBx0Vbg + test-linux1804-64-devedition/opt-firefox-ui-functional-local-e10s: SoqOefuFR9-OUGiGObU1ig + test-linux1804-64-devedition/opt-firefox-ui-functional-remote-e10s: GJ7lhp5BRXuIv3ZZf53I_Q + test-linux1804-64-devedition/opt-marionette-e10s: WF-LguxNQ7ia7gGeD_eUJA + test-linux1804-64-devedition/opt-mochitest-a11y-1proc: QqFplW4yRpa3ncGg7HwPVQ + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-1: EXfXTwWtRX2akdERgn4CDw + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-2: RR37Brj-TKWDr81Oo7lIwQ + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-3: Lwo6i7_vTX-Fx7Evw814_g + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-4: QTLoDa57Sku3nckFjdbglg + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-5: ZIe8I148QC2I4hwYpofWSg + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-6: fKhVGeh_ReyIVst28hNK9Q + test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-7: TgkFaih0R7ifRYp88tsr_g + test-linux1804-64-devedition/opt-mochitest-chrome-1proc-1: DNFMdQF8T66d4PGnHtS9tQ + test-linux1804-64-devedition/opt-mochitest-chrome-1proc-2: MKYudKddTGCVoRAtYMjeHQ + test-linux1804-64-devedition/opt-mochitest-chrome-gpu-e10s: ajt7vSlUQfCwymmSh3XYtA + test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-1: VGqYjoR1QfedGazYly__Qw + test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-2: KgwiVmaaTO6hzG-bgU_a0g + test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-3: J4ChY6hnQhGY_eZLZoKgUA + test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-4: CDR5EJl0R-W8u3cWgTr-0A + test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-5: W2bMF1dyTL2lSTjbqW0DPA + test-linux1804-64-devedition/opt-mochitest-media-e10s-1: GykMlpQiQP6weXO7v97ygQ + test-linux1804-64-devedition/opt-mochitest-media-e10s-2: WK14Q9OETiiE8Ab7x6Bunw + test-linux1804-64-devedition/opt-mochitest-media-spi-e10s-1: cD6IHzx_QimMG2r2MIGr0A + test-linux1804-64-devedition/opt-mochitest-media-spi-e10s-2: c4jShzYPQOaI5a07edMdbg + test-linux1804-64-devedition/opt-mochitest-plain-e10s-1: dDnxGlhhQlmSV4M3Kbcraw + test-linux1804-64-devedition/opt-mochitest-plain-e10s-2: SIXh-OrGQQqyqaXc76KWcg + test-linux1804-64-devedition/opt-mochitest-plain-e10s-3: eQGyjZHMQRKzZA0zKN2jlg + test-linux1804-64-devedition/opt-mochitest-plain-e10s-4: WIyfa4bLT8-hCNe3AJr-Ug + test-linux1804-64-devedition/opt-mochitest-plain-e10s-5: RCRsWd0XTeOkcuHG9aboqA + test-linux1804-64-devedition/opt-mochitest-plain-gpu-e10s: XgIQwLB8SpOfRnYaMsa1Og + test-linux1804-64-devedition/opt-mochitest-webgl1-core-e10s: CN9cxQNqT0qngJPVXQkQwQ + test-linux1804-64-devedition/opt-mochitest-webgl1-ext-e10s: R0jfmDp6SSuZbxWHedTv6g + test-linux1804-64-devedition/opt-mochitest-webgl2-core-e10s: UICvipJXSx66TOuLS2HhIQ + test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-1: GyBnP771R2KI18ijvCrvIw + test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UYup0wmUQneCQvcdvU4iTw + test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-3: G41MO7j4QI2NA11jTvXDkw + test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-4: KuzS7KPCSRKED1xXiW6-lQ + test-linux1804-64-devedition/opt-reftest-e10s-1: M0zcKgoRT-CUUSTEb0yp8w + test-linux1804-64-devedition/opt-reftest-e10s-2: UTSpfQZlTkCDr-DNk4B62w + test-linux1804-64-devedition/opt-reftest-e10s-3: A0S7w6bzS5aVhhgC9ZTTWA + test-linux1804-64-devedition/opt-reftest-e10s-4: B_K-bxFtSu6SBO49xtsxSg + test-linux1804-64-devedition/opt-reftest-e10s-5: fs3gXROnSZOyWFe_lea4lg + test-linux1804-64-devedition/opt-reftest-no-accel-e10s-1: HVR_3_sAQpaFSaEAoGwntQ + test-linux1804-64-devedition/opt-reftest-no-accel-e10s-2: J2wAFomOSEudo4B3UTpTeQ + test-linux1804-64-devedition/opt-reftest-no-accel-e10s-3: LWB4hvO_RleCqdP8UNkQkw + test-linux1804-64-devedition/opt-reftest-no-accel-e10s-4: a64t1uWWTmWPacgriUFPww + test-linux1804-64-devedition/opt-telemetry-tests-client-e10s: MDR7KViuSkKyo3mIMD-66w + test-linux1804-64-devedition/opt-web-platform-tests-crashtest-e10s: HMLLkmyzT6-hKat-X9QP2w + test-linux1804-64-devedition/opt-web-platform-tests-e10s-1: EQsV041TRtiDgYBMGVNtgQ + test-linux1804-64-devedition/opt-web-platform-tests-e10s-10: BeFky33FRXKhcAXGk2FwdA + test-linux1804-64-devedition/opt-web-platform-tests-e10s-2: DqGL3U4jQKCWYDKJ9bCd2g + test-linux1804-64-devedition/opt-web-platform-tests-e10s-3: F9fXtE-ZRP-7aRt5hXtCqA + test-linux1804-64-devedition/opt-web-platform-tests-e10s-4: OPyYWjfDRLCl8zoH9ALATw + test-linux1804-64-devedition/opt-web-platform-tests-e10s-5: aGHaRnXETAGyrJmF6q_8IA + test-linux1804-64-devedition/opt-web-platform-tests-e10s-6: Klqn5c0QRja9kg28AdXpRg + test-linux1804-64-devedition/opt-web-platform-tests-e10s-7: dW8G5z5OSECEPEHBUqB6Hg + test-linux1804-64-devedition/opt-web-platform-tests-e10s-8: XrdVzSFdQTehH_AE-RyyCQ + test-linux1804-64-devedition/opt-web-platform-tests-e10s-9: R7cdNVEmQ9iTrsIPa3hClg + test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-1: XSrW1cxmRJOuC-lK6NqBtw + test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-2: NWnDl4MGQgmCosoN4xUWjw + test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-3: Fbjx8VJ1SeyAP5k0G9L33w + test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-1: ANRw0MwER4eAueSVisL8sw + test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-2: I-zgY1_dQf6QOwcLcmQ1lQ + test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-3: YOVgfYENSNa1hOxwYCddqg + test-linux1804-64-devedition/opt-xpcshell-e10s-1: BG9h8uhFTb-DJ9amZK9R6Q + test-linux1804-64-devedition/opt-xpcshell-e10s-2: SY-q6q9fRFCOcAd2GKDFHg + test-linux1804-64-devedition/opt-xpcshell-e10s-3: dtYsn1PCSvCbvaxBCYlBwQ + test-linux1804-64-devedition/opt-xpcshell-e10s-4: KTHoKE-ARQaDA3c2jEFM6A + test-linux1804-64-devedition/opt-xpcshell-e10s-5: NxI2jm60Rveczv96cyIv8Q + test-linux1804-64-qr/debug-cppunit-1proc: VFdpUotdSXaAb_L9YsQepQ + test-linux1804-64-qr/debug-crashtest-e10s: ITTEK3NOR_26OZH722uMwg + test-linux1804-64-qr/debug-gtest-1proc: DDP7guKlSC2-kcWa3kUc9Q + test-linux1804-64-qr/debug-mochitest-a11y-1proc: ZRmkeBVJTXa-aMGEt6sH-g + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: DA0JHnMLSsi175GgO-Ykmw + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: R-pfpiHOT82bTBfyg9Y4Eg + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: E2fAe3uASmO9ULCsO9hRkg + test-linux1804-64-qr/debug-mochitest-chrome-gpu-e10s: F08rrw6gQuy51ZlQuPz-EQ + test-linux1804-64-qr/debug-mochitest-media-e10s-1: aiZnTUUMS1G_fMj-_wW8PQ + test-linux1804-64-qr/debug-mochitest-media-e10s-2: NWQSYFOaSK2Hc-v6HbE_wA + test-linux1804-64-qr/debug-mochitest-media-e10s-3: FQ3WqAUsQN2X4G1hkT2ovA + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: K7tImIuXRSyuOqBDOmYKjw + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: LRODBK1ORDiX_3BUxFC8TQ + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Mrs5eTe5R7CzDFy56q3bHg + test-linux1804-64-qr/debug-mochitest-plain-e10s-1: PBzthYSGQTqFreWDpGRVMg + test-linux1804-64-qr/debug-mochitest-plain-e10s-10: b7oSfFsvTkukkrx8NwTE9w + test-linux1804-64-qr/debug-mochitest-plain-e10s-11: WtFz_BtqQ9O3CkuRabj7Ow + test-linux1804-64-qr/debug-mochitest-plain-e10s-12: bD0LJb61ThKHmhfFDmo3bQ + test-linux1804-64-qr/debug-mochitest-plain-e10s-13: HsGwB-3KTruTLCEZqodxJg + test-linux1804-64-qr/debug-mochitest-plain-e10s-14: R7A_bmgZQGmDqxBMepa42A + test-linux1804-64-qr/debug-mochitest-plain-e10s-15: O2Pxypc8R9G0EmZqxpbCuQ + test-linux1804-64-qr/debug-mochitest-plain-e10s-16: fzUm6eAkQ_OJjRoo2Z9uEg + test-linux1804-64-qr/debug-mochitest-plain-e10s-2: TfKILRd6QeSjM_PiGC4Buw + test-linux1804-64-qr/debug-mochitest-plain-e10s-3: QRgLA-gtRG2UxNhqXaOm5A + test-linux1804-64-qr/debug-mochitest-plain-e10s-4: QszmxNOCS3GagO3FD6XwIQ + test-linux1804-64-qr/debug-mochitest-plain-e10s-5: cxq6LnOKRSSeBAdiZTf1GA + test-linux1804-64-qr/debug-mochitest-plain-e10s-6: E1-PhMMtQVCtt1D6VVaRYA + test-linux1804-64-qr/debug-mochitest-plain-e10s-7: JzIH9_U4QTClnvCmw-2DeA + test-linux1804-64-qr/debug-mochitest-plain-e10s-8: MmkN5qTNRYOtA0jbHhF1dQ + test-linux1804-64-qr/debug-mochitest-plain-e10s-9: AjjCT5dkTjqETDix7pqXVA + test-linux1804-64-qr/debug-mochitest-plain-gpu-e10s: WSDu4njTRV6bMONfs4YdXg + test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: W2dRtl6LSNyaXs7u_eo-PQ + test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: NSrBN2y_T4WQTh8tYk8Vlw + test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: Ae3NyXFJQUuH8i-Szp_ZTg + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: A6CdRn6UQLiGBAV9Os2tlA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: TcaEBmRmSKmUNICXE4dKhw + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: HdMRSwqNT6imJy-zQkRQ2A + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: NKi2XaawRXal0TsUTD7nng + test-linux1804-64-qr/debug-reftest-e10s-1: bBd6X1iCRPy_9EB8fh7Xig + test-linux1804-64-qr/debug-reftest-e10s-2: TwKLermJR5uWFMZ95KLhgA + test-linux1804-64-qr/debug-reftest-e10s-3: bv69WJuHSACeZDP_-90KFQ + test-linux1804-64-qr/debug-reftest-e10s-4: LTA2AJOATiqb1qToJVLIpA + test-linux1804-64-qr/debug-reftest-e10s-5: Rjp4dYqfTzu9kVdAHPd7kQ + test-linux1804-64-qr/debug-reftest-e10s-6: USffYzeEQI65VDASSaSQMA + test-linux1804-64-qr/debug-reftest-e10s-7: YxlrsDuCQHmZ7z7vN3iyYA + test-linux1804-64-qr/debug-reftest-e10s-8: W3wa56f3RTCwEeY_y1Ua3Q + test-linux1804-64-qr/debug-web-platform-tests-crashtest-e10s: fCI1yqWYQ1i9xKyTxh_Lfw + test-linux1804-64-qr/debug-web-platform-tests-e10s-1: btQbkuUlR46TwIYrC4jSTw + test-linux1804-64-qr/debug-web-platform-tests-e10s-10: bWpAPf-MQf6X85tT43bdSA + test-linux1804-64-qr/debug-web-platform-tests-e10s-11: UUxlR2PdQv-Fs2NGAPfU-g + test-linux1804-64-qr/debug-web-platform-tests-e10s-12: a4nuZgrYQO2XB7PpCzsm3A + test-linux1804-64-qr/debug-web-platform-tests-e10s-13: TwRcAl5nSkiT4XLBXa8aVg + test-linux1804-64-qr/debug-web-platform-tests-e10s-14: ECMKjuHjQ4qJU2PesOURKQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-15: GwjvRU2JSQ6m7-xaujwmug + test-linux1804-64-qr/debug-web-platform-tests-e10s-16: VgK6-wCUS9qi70Mj-gp_nw + test-linux1804-64-qr/debug-web-platform-tests-e10s-2: Mw_FRZ0rR-6D_4d_j6uKbg + test-linux1804-64-qr/debug-web-platform-tests-e10s-3: dgpcsEhQRRuw-cvMFCNI4w + test-linux1804-64-qr/debug-web-platform-tests-e10s-4: OUnPIKpST22cD9yZkuaaxQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-5: cuPenv0oTi-Z5q0KayqHew + test-linux1804-64-qr/debug-web-platform-tests-e10s-6: J3I9mYZfRMeF4VFM2c8zGw + test-linux1804-64-qr/debug-web-platform-tests-e10s-7: Y3e1Zq-yQU61Lu8SZQBo4w + test-linux1804-64-qr/debug-web-platform-tests-e10s-8: W499qc0iQVSH6NrP1nNljw + test-linux1804-64-qr/debug-web-platform-tests-e10s-9: P9RqAV0iS9iLU8xaGET-Mg + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-1: HTogukLKTD6-44K27LCqxQ + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-2: R3bDyKRkTBmPey8pAHJt6w + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-3: Pk3UsUUGSxq5SBerw_xfDA + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-4: dg0Kp1SXRy-IJefosuCKYA + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-5: LJ_NPDYQTrC1z3mKA1NdcA + test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-6: efMyDznpRaOPG3bxINSYSQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-1: ecrcbs7QQI6Ed9gZz5STzQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-2: OgbHqkaHSMSpNHq5s2rRxA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-3: RtvgDiHKTYST1uNIRG_ffw + test-linux1804-64-qr/debug-xpcshell-e10s-1: EMvo365QSjO3t17YsX_fug + test-linux1804-64-qr/debug-xpcshell-e10s-2: WkQv1dnqSOKWJNFZ6JNZ3g + test-linux1804-64-qr/debug-xpcshell-e10s-3: f4la2pVYQyCM1rZXWT-y4A + test-linux1804-64-qr/debug-xpcshell-e10s-4: O6Bb1VfIT66Ra6gLKEtBKA + test-linux1804-64-qr/debug-xpcshell-e10s-5: ZuIm3LMOTxORD3pXlv6LLQ + test-linux1804-64-qr/debug-xpcshell-e10s-6: ehkrdwUKTWO8kA1viKTlaQ + test-linux1804-64-shippable-qr/opt-awsy-base-e10s: ehYrz3oGT1GAlKSx2f0HoA + test-linux1804-64-shippable-qr/opt-awsy-e10s: evSQ7ewMT8SJyNz8D6a31Q + test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: E5b1WG48SIyQ3QCzBSIIMA + test-linux1804-64-shippable-qr/opt-cppunit-1proc: Ssn1TgryR_y8aKrrUciQfg + test-linux1804-64-shippable-qr/opt-crashtest-e10s: NoAP2iH7SYyVzNiPQkVaIA + test-linux1804-64-shippable-qr/opt-gtest-1proc: cOBdPeMwQwqK5WGbpRT_rQ + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: ap1HT4T6S2mdTkNLk4f19g + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: J9WPzU0-S5q1Fj1PMsSrkA + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: Hb6ZialuTh2tfbOUupGpcA + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: FMV5ufE7RoOTVNUoh_dXNQ + test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-e10s: ZUUVsrvhRpeoWw0sDs4VgA + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: a_6thDXKQo-RCh2wX3lMQA + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Z4HWqBHYQiS-sPdNJNzcFA + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: DC-Z9VINS2SZp4qzqmSzNw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: bheaeaOKRoCj2QRfB0gf9A + test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-1: RDlTKwRjSx6Ehd7zqa23fQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-2: Sax2J5I4Szac1nWpn9-qrA + test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-3: ddE4lEEkRCKwWVPRCXUlAw + test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-4: aufGWJ4HS96iZ2xEyo5Pvg + test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-5: VdsJcKtuQVanJbjp4dqK4w + test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu-e10s: bvGjcdXbT-SPdwaSPvAX6A + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: PqugxwDTQSybaqiY6yde4A + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: aL5YB9tzReuSBefV8XrEew + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: buJdAOovTSmKIAMch5SUNA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: OHhS_z5ZRx-Ubchdqzr96Q + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: SRL2FqRRRd65_UV8jYIijw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: DKvecMssSW-Y1WcGl8jqGA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: dJhGz7HDQmKOVRYS2wPIYg + test-linux1804-64-shippable-qr/opt-reftest-e10s-1: LYHGEqALTwuISqTLWx6eUA + test-linux1804-64-shippable-qr/opt-reftest-e10s-2: VWHMf1aSSTKtWUIQc1JSCQ + test-linux1804-64-shippable-qr/opt-reftest-e10s-3: ajt9QLOZSrWkebpuMsa0Ug + test-linux1804-64-shippable-qr/opt-reftest-e10s-4: CNbI3s5lSeqMAEXNTLuOyQ + test-linux1804-64-shippable-qr/opt-reftest-e10s-5: AbwMwvBOTuSrJtDYAAKaWw + test-linux1804-64-shippable-qr/opt-reftest-e10s-6: LlLshHxhQRyBupNW5btccA + test-linux1804-64-shippable-qr/opt-reftest-e10s-7: DOZkQz46RIi1Q75UNVeGgw + test-linux1804-64-shippable-qr/opt-reftest-e10s-8: Quc0hPFmSJqhPA7MzOEYow + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest-e10s: MhCUPQ3XTPGzB4mdYAmOPw + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: LDCaMDEETKaOEiCI3Hfz_w + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: VNYS1veCSZK5N-92ldNuaA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: RW6J-WVzSayeiqcKUznwyg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: OmKSb8YoRkCbh1ziZGCcKQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: FrUVzRFQTZe2a6j3eYN4BQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: V-oi8FW-Tvq7Kkez0KosAg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: alLeC6KXRna8AzQ2P-sVGQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: fUlH5kyiSieZDXI6ud6alg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: ewHY9doaRBqvV_aVI0gxQA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: dobtzstDQ1a59tqZT5yDeg + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-1: d0O6vs86QUaMMEiuZo667A + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-2: Tm3qB2GYRIOQg4alJ7ex6A + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-3: M79oMdt2REWo3jAfX-ynJQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-4: EwlcPgogTGiyF5fHdpJsSw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: V-XHxPnxTfmOKWsnO9vk6Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: QJ6JyHP6TU2LDefTSmpUZQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: TlCo5AqETcy23lwVF9IXyg + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: K2wYDkTVSzOfzhPUF_4pEQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: cPbdkwL5Rju6WddDvds7NA + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: YuJL9HfUTOOg-yzivQC7kQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: OkSzgHBpR9SoRd19OEA-zQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aqTNL-4nT3eA-JQZVSmcqA + test-linux1804-64-shippable/opt-awsy-base-e10s: Dq2zL2CqRz2CW9vdoQkjug + test-linux1804-64-shippable/opt-awsy-e10s: KzWnZ4hoQf6CTl5k3m3k-w + test-linux1804-64-shippable/opt-awsy-tp6-e10s: BzpSuW3bQ8K86uBRAAYU8A + test-linux1804-64-shippable/opt-cppunit-1proc: Q12Cug-KQiu9jOVTohB1uw + test-linux1804-64-shippable/opt-crashtest-e10s: OzczpyweRQqaMkKj2Y6RBQ + test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: RUj5du81SxCVPSmc6y_ygQ + test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: SFyJfGsPSEq0ev2TQGGJbw + test-linux1804-64-shippable/opt-gtest-1proc: QYBq1hP5TcqdZH5X50VMWQ + test-linux1804-64-shippable/opt-marionette-e10s: EJ4GjRoWR_K-cnfBrMoGtQ + test-linux1804-64-shippable/opt-marionette-headless-e10s: cr6_DHlUQxOY0E3Q0Ps7ag + test-linux1804-64-shippable/opt-mochitest-a11y-1proc: bKuNkPYNRxO9GMW3rL6WdQ + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: W63_6pPXTu23vrzgZRWodw + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: D1TnH2EISt2zmVuMnPxduQ + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: O35MvXBJTEuXw78EdSHlWw + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: bJ7aSbxsSdqRqklq0jhPJA + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: E6X-OF6RREyWd6eH4LIvBg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VZwKTHNaRmq4CxZinfdTxQ + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: PJ_oLTM7TF6CtdfNciBkyA + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: KbN52RxvRv2aYsZcLq_GyQ + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: SRqGqynQTRWwAmMMSm277g + test-linux1804-64-shippable/opt-mochitest-chrome-gpu-e10s: bS4GePJqTCGomBvL0FI4qw + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: XzVr8FvkTiWPl_rGjs_YkA + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: dOQikzuDT0WzMEc_ACUltQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: SxyrRyJiSkGLV-hfjf36ew + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: C8O_xA4rT0eCre6USfEjBQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IuqW4NuqTqyyPHzoYlP9NA + test-linux1804-64-shippable/opt-mochitest-media-e10s-1: MiuUtEoySzee9QJk4-B-_g + test-linux1804-64-shippable/opt-mochitest-media-e10s-2: TIFOO_d_R7ijGjAvZiSsjQ + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: OpeZ8Lx7Ty6_00JXKgqMnQ + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: WRxXaKg7SA2VObd50qvGDg + test-linux1804-64-shippable/opt-mochitest-plain-e10s-1: NOczw-2ZSWyhVhNP0ni8bA + test-linux1804-64-shippable/opt-mochitest-plain-e10s-2: f2SyBiUkSM6pXGEDGhACeg + test-linux1804-64-shippable/opt-mochitest-plain-e10s-3: Es5gH8qISLqB7hTv2xkypg + test-linux1804-64-shippable/opt-mochitest-plain-e10s-4: ejOmgQILSV2i87HG-gglFA + test-linux1804-64-shippable/opt-mochitest-plain-e10s-5: Z_MWJg0aQ4aN-ZDg1TEEgg + test-linux1804-64-shippable/opt-mochitest-plain-gpu-e10s: EIzG55ZvQKuwI06IeuSVkA + test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: LLQtpYq5SkiyBQi3BFlMQA + test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: dV6LpM_TQBSh1m00bw-dVQ + test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: ODV8gO3iRCW6TWSRcuhzzQ + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: dHDgFR48SaW7ZCgxAupaLw + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HFBiy1voQJujgVFT70-7Ig + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: LOfVnsApThu5gtRpp_aOHg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: AaiGPlWpSam3EAWMTgE2Ag + test-linux1804-64-shippable/opt-reftest-e10s-1: WIODio0_QPmf-WJiYx7cHA + test-linux1804-64-shippable/opt-reftest-e10s-2: F0wyYUSNSZGfh8vpI5trgw + test-linux1804-64-shippable/opt-reftest-e10s-3: Hvui-X9RRx6kIMMGHYFDmg + test-linux1804-64-shippable/opt-reftest-e10s-4: IVH6cAQUTrG_LQSiWTpTtg + test-linux1804-64-shippable/opt-reftest-e10s-5: RD1IIxAkSqCZI8X4pI1Y6w + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: NA2uvgZvRMKFIwuAhxaijw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: RSrDBYSpR-eW_QaCArICmA + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: AKBCVgN-SKSar7YVupxwag + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: fetQgcNBSm6ZzyjFOviTCw + test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: NlBGozeCReizBqbqttK92A + test-linux1804-64-shippable/opt-web-platform-tests-crashtest-e10s: Y-PZGZ_BSHeFk9k0MbXSYg + test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: Q9cWugvNT3KZ5-xOIGXPSA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: Y0OwcgzxTSeHvZQxqOdGMw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: OsdmjPrWQSmq88-3Gg1oIA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: OP-HLfbSQoGslPw0oODEzA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: SunxTJCETtKiaSPYUpRcIw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: F0TsTndGTgi8-vreoHkirg + test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: dIsqrPz6TYSoQ_iQA16izA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: f9TNS_Z0QhK9o1XiEWAHvw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: SyI3IR-MS8qze6h0xsOUFQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NfC6VIEzQKa2AuXacxz67Q + test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-1: HjSkLTnjQBOR5z3uj8qUyA + test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-2: AAo6dndnSnutVlVz54XPhA + test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-3: TvDNDvV-Tn2NmyTvNrWcXg + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-1: DdJAmSMJTEqnBgFrN4YSew + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-2: BBAY9mCKSOm9I2aNy1maJQ + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IcQGTu8URzKdrBI4HE6pfA + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: JeTvQWWBQTuLYrFpgG4Lcw + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: U3fZ3GHwQBa61YsxbIk1ow + test-linux1804-64-shippable/opt-xpcshell-e10s-1: SSnWZoWKSAizFm090wRlZg + test-linux1804-64-shippable/opt-xpcshell-e10s-2: Vnj7kYdWTgme-Zh81lGM6Q + test-linux1804-64-shippable/opt-xpcshell-e10s-3: IfURyvpYTXOxELH6dQfZ5g + test-linux1804-64-shippable/opt-xpcshell-e10s-4: Qx3QYzL3TsOAIj3BD1HW0Q + test-linux1804-64-shippable/opt-xpcshell-e10s-5: aXtYaOiISfiTAWgNgQeDgQ + test-linux1804-64-tsan/opt-mochitest-plain-e10s-1: eGBv6ezRREucrQ1LoMVFtQ + test-linux1804-64-tsan/opt-mochitest-plain-e10s-10: fZV9DJwjRVCcIXkAqWVWGw + test-linux1804-64-tsan/opt-mochitest-plain-e10s-11: WiNw_MrkRpSzAnRxEhxNYg + test-linux1804-64-tsan/opt-mochitest-plain-e10s-12: MHpdszKnRMaWA0k1e01LUA + test-linux1804-64-tsan/opt-mochitest-plain-e10s-13: AV-rnMMFTKurj6Fqt_gVbg + test-linux1804-64-tsan/opt-mochitest-plain-e10s-14: KyhFv5muRuyS22OEgURT0Q + test-linux1804-64-tsan/opt-mochitest-plain-e10s-15: D2TndPhTQIWde9JSq3s_5w + test-linux1804-64-tsan/opt-mochitest-plain-e10s-16: IWgEIYtGQXGxfhz_3AVu2g + test-linux1804-64-tsan/opt-mochitest-plain-e10s-17: cU5Z5XshRBWbzBVXNbLYkg + test-linux1804-64-tsan/opt-mochitest-plain-e10s-18: PNkbxM-eRbef1Iiiy4tPqA + test-linux1804-64-tsan/opt-mochitest-plain-e10s-19: C8vsmN3qSC6DZxSGgMAuDA + test-linux1804-64-tsan/opt-mochitest-plain-e10s-2: fmLe__hEQJKWQpLK1KQjDw + test-linux1804-64-tsan/opt-mochitest-plain-e10s-20: HXbaDpWMRKiURIx-baP3jg + test-linux1804-64-tsan/opt-mochitest-plain-e10s-3: LtCKflYiQjKC6-7Cv3Xp7Q + test-linux1804-64-tsan/opt-mochitest-plain-e10s-4: TH9dWE9jRjmwVFg7_3aG6Q + test-linux1804-64-tsan/opt-mochitest-plain-e10s-5: C9MjVP67R2Wro0QtxJTaRQ + test-linux1804-64-tsan/opt-mochitest-plain-e10s-6: HVQ4oTBEQJqypZeoQqUzTw + test-linux1804-64-tsan/opt-mochitest-plain-e10s-7: DmQ0qnlGT1yPzk9TnmZRSg + test-linux1804-64-tsan/opt-mochitest-plain-e10s-8: AdLSpZTYTpGMwVBoR_v0SA + test-linux1804-64-tsan/opt-mochitest-plain-e10s-9: FGXdFv5VQ5qfHXy_JhDGUw + test-linux1804-64-tsan/opt-xpcshell-e10s-1: V5MHHfZmScmPwUO-SSWecQ + test-linux1804-64-tsan/opt-xpcshell-e10s-2: LVLFQXOJSOmIEFf5wx3zAA + test-linux1804-64-tsan/opt-xpcshell-e10s-3: CdaHnF-nR6ic112XkjT6vw + test-linux1804-64-tsan/opt-xpcshell-e10s-4: YrfQ2cpGQqG2DePXlcBa-A + test-linux1804-64-tsan/opt-xpcshell-e10s-5: crLl-ZNkStOb96az7iSLMQ + test-linux1804-64-tsan/opt-xpcshell-e10s-6: KdBoYtPgTPicfp1mQeRXPw + test-linux1804-64-tsan/opt-xpcshell-e10s-7: aSUkmm51SxW1XyVKjq_MEw + test-linux1804-64-tsan/opt-xpcshell-e10s-8: DGbfYpDhQEa-i35nbMO-Xw + test-linux1804-64/debug-cppunit-1proc: AS5YIMt4RxKftMtNg3phRg + test-linux1804-64/debug-crashtest-e10s: WplFGsXeRp6H_3RmDIN3Gw + test-linux1804-64/debug-firefox-ui-functional-local-e10s: HP1OCvKQTRiusc8wsajBDg + test-linux1804-64/debug-firefox-ui-functional-remote-e10s: Iyrw4ntkTOC-1yUQ5u6Smw + test-linux1804-64/debug-gtest-1proc: RvGpM7wtSDCCKCVkrCmEpQ + test-linux1804-64/debug-marionette-e10s: R7ZIto0USBylitU1Z0G9og + test-linux1804-64/debug-mochitest-a11y-1proc: SPsfPqAcTEu6IglJ26dQEA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: PTf8jjhNRxStrfCK0BxE3g + test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: Tbs1vtSmRa6feW-xpRU-pA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: SsogmtLXRgiBELl1T2xhlg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: ZkZelZxNTM-dvk5IjeaCQA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: EHhIva0rSgC0hoOOmr1RWg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: D_OtdnjzSs2t48P2m2ivvw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: UJV-9pDtSDirWb8AuIMRVQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: P1ehoW2fQX-wFGhrhgFkAQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: UqvY67ecRxGfjoziC959yQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: N0SYmTBBR1mrHGA6gU32Fg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: Hz9xwS2OQBmqmBWpG0VcOw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: A0GaHkYORS-NTQbcorzhYQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: AWm7Nos7ShSaYoAtANzbuw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: TtALBM1hQ2qoUHROYSZl5w + test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: AEq0CQiHSCGygPwWhaMbJw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: WG7DLqDHQTSQBs_smvSonA + test-linux1804-64/debug-mochitest-chrome-1proc-1: Qc8UaLKqQfanVLbkrrJ5uQ + test-linux1804-64/debug-mochitest-chrome-1proc-2: SuUrKUuxQ2uaT4-uT0grYw + test-linux1804-64/debug-mochitest-chrome-1proc-3: ZdIiuPKWR62wuF5bGW9Wog + test-linux1804-64/debug-mochitest-chrome-gpu-e10s: SDaCuik9TOuQBUoi2m6BTQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: U-_fb6hcSfqBJmi9fLZTiA + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: X7ZoLwa7Sqa0mrpmYDC0bw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: TlOrfUrYQjCHIQK_7-KhTg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: NZswymabR0Gi4DiusJvFWA + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: OMTvfHpOQ52orHLHm8ZqJw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: GXuiBODdRz-tElkjPueBkA + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: FIsoet0ARS2GsAMI6kowAw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: Dz3zjYFcR3CAU46O4Em-iA + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: XNR6DILAS-mo3GvyyoIULg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: G4-ALYBVTsy5jzgKebNKvA + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: L5FwS6wvREKEfqQ5-Md5gg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: MJgVsbu6R_a42kr7_6ErAA + test-linux1804-64/debug-mochitest-media-e10s-1: VOV947P1QpelouHhskAzgA + test-linux1804-64/debug-mochitest-media-e10s-2: TrDRqEgzTE27rd3WXXOsvw + test-linux1804-64/debug-mochitest-media-e10s-3: QagSE8xKQFiC50p-NeGObg + test-linux1804-64/debug-mochitest-media-spi-e10s-1: FzjnwpTaRUiP0OQJVTNxMg + test-linux1804-64/debug-mochitest-media-spi-e10s-2: YYHuLZ0bSPGrosFBPcF2lQ + test-linux1804-64/debug-mochitest-media-spi-e10s-3: BLKbo7n_R6erXgFRxEZYDw + test-linux1804-64/debug-mochitest-plain-e10s-1: KZqRzzMSSNe0l7EZaHONvw + test-linux1804-64/debug-mochitest-plain-e10s-10: JlxOU1J_QZigAAR6rOzjPA + test-linux1804-64/debug-mochitest-plain-e10s-11: cqO9PWydQYKB0IqZPQG3aQ + test-linux1804-64/debug-mochitest-plain-e10s-12: aIM46IC3T9qkAqECeeN8jA + test-linux1804-64/debug-mochitest-plain-e10s-13: ENN3bEenSZqVpNStjPtUJg + test-linux1804-64/debug-mochitest-plain-e10s-14: STGePPajRPy2Tv0KY8Mk-g + test-linux1804-64/debug-mochitest-plain-e10s-15: dIuTzeDCRG-Rn2MEexNSRw + test-linux1804-64/debug-mochitest-plain-e10s-16: MNrkB9G6Q1KH842LpNrFzQ + test-linux1804-64/debug-mochitest-plain-e10s-2: NoHPMiW8TTO-Dd6oGZ998A + test-linux1804-64/debug-mochitest-plain-e10s-3: Fm_m2QpZRZmVVkT1jUJxIA + test-linux1804-64/debug-mochitest-plain-e10s-4: HcuGUDY2SeeM3pFuiQLzZw + test-linux1804-64/debug-mochitest-plain-e10s-5: fdCAJRBPQGeDRU9OKbIM9g + test-linux1804-64/debug-mochitest-plain-e10s-6: ESymq2m6ShOjsKf2MYcuEQ + test-linux1804-64/debug-mochitest-plain-e10s-7: dBPk1bNRQP-TFB0lKFjpEw + test-linux1804-64/debug-mochitest-plain-e10s-8: aotgcY2fQC22_HOR9X85Kw + test-linux1804-64/debug-mochitest-plain-e10s-9: C8fNQVVsRWi07PyRe3KLYQ + test-linux1804-64/debug-mochitest-plain-gpu-e10s: fjLGXUBcR32YDOK7E50a4g + test-linux1804-64/debug-mochitest-webgl1-core-e10s: JmqLf8z2RIed5oCpESz-Ow + test-linux1804-64/debug-mochitest-webgl1-ext-e10s: HEZjL4vSSN-hXu9dHjZsfg + test-linux1804-64/debug-mochitest-webgl2-core-e10s: OmFmx-JUQFKj6MH2d18LYQ + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: ePKCa8RtT5K4KAjerpvBZw + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: SH57-C0FSu2G0DcdvkfAdQ + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: fSP5LG2YS-qaQi79CNHd9w + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: AMHm94PLS6ShRMQ0f6ARXw + test-linux1804-64/debug-reftest-e10s-1: DVzodI8iRF6djzEjsuHgzQ + test-linux1804-64/debug-reftest-e10s-2: AnM3QFA_TFy8rZ6aXDE1EQ + test-linux1804-64/debug-reftest-e10s-3: T-VUdLOmTC-cG-ZJSsqlYA + test-linux1804-64/debug-reftest-e10s-4: ZE0UBimrRT2t1IcQP5ZPEQ + test-linux1804-64/debug-reftest-e10s-5: dPU09WN-TjeWO14bXwZTjw + test-linux1804-64/debug-reftest-e10s-6: a41seT8vQnSNuuVH8-qgAA + test-linux1804-64/debug-reftest-e10s-7: EN3N2PPdTVyz303W2TMEbw + test-linux1804-64/debug-reftest-e10s-8: Jb1VeGq2SweP1TgCppTNNw + test-linux1804-64/debug-reftest-no-accel-e10s-1: bPy9DwqcTJSoRI19AL2iWA + test-linux1804-64/debug-reftest-no-accel-e10s-2: W9QqjWEkRJaVv0tVXocvWw + test-linux1804-64/debug-reftest-no-accel-e10s-3: HLbJTBKMQoe4738bBpd_XA + test-linux1804-64/debug-reftest-no-accel-e10s-4: JV8kYcUcT9ul3BeEepmIZw + test-linux1804-64/debug-reftest-no-accel-e10s-5: IhN_2LrkQzmCu0IuKBSVZQ + test-linux1804-64/debug-reftest-no-accel-e10s-6: HaBEiDBmRyOx3zBCtAgnAQ + test-linux1804-64/debug-reftest-no-accel-e10s-7: fCA5jQMfQUOAPYN0yhcQHQ + test-linux1804-64/debug-reftest-no-accel-e10s-8: MkWy0uBgSOCHlvjZmycGWw + test-linux1804-64/debug-telemetry-tests-client-e10s: XGKez9_JR2WpRJAeNiCrzw + test-linux1804-64/debug-web-platform-tests-crashtest-e10s: Q3Rdpgy4QYm0ypYqkqbQLg + test-linux1804-64/debug-web-platform-tests-e10s-1: Ko8TBx1-TFSeXfyn7dv31g + test-linux1804-64/debug-web-platform-tests-e10s-10: XXz3Ztj5RnKhXPK9YG1eyw + test-linux1804-64/debug-web-platform-tests-e10s-11: KxwOrFSMQBSKKTrZKKzy_w + test-linux1804-64/debug-web-platform-tests-e10s-12: I9b07b7wSiqLAeQ4x5I5oQ + test-linux1804-64/debug-web-platform-tests-e10s-13: PUYehnMTSN6TKtsRGIb4aQ + test-linux1804-64/debug-web-platform-tests-e10s-14: X5e2wTEuQtefJD_Sm2a_Fw + test-linux1804-64/debug-web-platform-tests-e10s-15: aQF_19rdTumJLHspFwqzzQ + test-linux1804-64/debug-web-platform-tests-e10s-16: Krbw13zdSJy8dcHsKgZqwQ + test-linux1804-64/debug-web-platform-tests-e10s-2: Z6EWTmhwSoaJmb9-dRjxUQ + test-linux1804-64/debug-web-platform-tests-e10s-3: KlTMVL-rSk-FOKiliJIUMw + test-linux1804-64/debug-web-platform-tests-e10s-4: YMKG7OBRQqebY953GPK_wg + test-linux1804-64/debug-web-platform-tests-e10s-5: SvnW9IvDRlqeTvsOxlvV0A + test-linux1804-64/debug-web-platform-tests-e10s-6: VMpLPFL8TdSMgxzB3LBooQ + test-linux1804-64/debug-web-platform-tests-e10s-7: avGKBKOHQZKxIoaTQsGMaw + test-linux1804-64/debug-web-platform-tests-e10s-8: N4-FcsH8S9iNLE5EA1_whw + test-linux1804-64/debug-web-platform-tests-e10s-9: LAWerzD6Q_65ANDewumQeA + test-linux1804-64/debug-web-platform-tests-reftest-e10s-1: YFaJ6bfPQECiERbC4Tr1pA + test-linux1804-64/debug-web-platform-tests-reftest-e10s-2: ArJGu7uiRHOGcBxm5cULCg + test-linux1804-64/debug-web-platform-tests-reftest-e10s-3: AS9aZRaUS-WPTM8LS-iZkQ + test-linux1804-64/debug-web-platform-tests-reftest-e10s-4: BdvrV3xIR5OEGFRnHosTbw + test-linux1804-64/debug-web-platform-tests-wdspec-e10s-1: en1DjMFgThaz-YmsGouLbQ + test-linux1804-64/debug-web-platform-tests-wdspec-e10s-2: b6s3tNvrRdeWasKzPYBQSw + test-linux1804-64/debug-web-platform-tests-wdspec-e10s-3: PvSZt6yEQAOds3wD_ZsgVQ + test-linux1804-64/debug-xpcshell-e10s-1: RldSsOXrR2Ou830dqysiyw + test-linux1804-64/debug-xpcshell-e10s-2: DVeh-V14S7eF6zV3EEx_HA + test-linux1804-64/debug-xpcshell-e10s-3: bX4pD8nUSlKeDDZSxR89FA + test-linux1804-64/debug-xpcshell-e10s-4: AaEt3l_vRa23Jm8DAHTnuA + test-linux1804-64/debug-xpcshell-e10s-5: WtxmSpqeSTiQqE5_hw-SbQ + test-linux1804-64/debug-xpcshell-e10s-6: NlvEjDr3SD6e_TeYGd2Oug + test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: HZl2pSPSSFCFufNJeScRJg + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: dKWnayWtQLGBHqh3PLuy8Q + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: YgZDwIsMQZ-TG0EsBzPzkg + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: Mye4GXy1QbqOdcK4O-TUrQ + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: HfYAOsFsRuu9yAajffXHlA + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: CjOj4KNIRpKfwn8qIdnEHQ + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: XTEVZOEeRNCu-MC4l8fZpQ + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: UqYdm77hSummZYe7uBe1gw + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: YOn9waP7Qm6TtvT7-TG6Nw + test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: alkH3JUeR7CwpvjLsViefQ + test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: KVbMrgBMQJqB2LMgSDwh-A + test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: bHlHDMIMRcWBc8DTmUKmnA + test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: JCrRMJnNQpqAZjK-ZnW3iw + test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: alIiYTaoQeiHCOCA_dpq_g + test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: bCqXJ28ZRKu2w1YJoZ2A5Q + test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: Wsxk9zIUSsWtv1rzcY4QDg + test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: XnOufAZbQPSl79v80fjgBg + test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: FUxjzB0IQVq_VfboLKhWKA + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: D4fG1Xm3SJOqbAEwQJ7Pnw + test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: H-Tl4_imRmaKmN8wEvCzNw + test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: M6QHlnrqQOybnHFv3YG9EA + test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: bdkyRVi_QeOwWkrZi4DIIw + test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Ls5xZYjwQBaPUSMB5KaqNA + test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: TkTap30NTg2bdHH5zS9DNQ + test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: dViCTFP-SNqezuhXIHTzWQ + test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: b8dfEVOLRcGrTl0V8ifx3A + test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: P9YUAKWYRv2u_BhNQJXuEg + test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: NbRtMiMzRNuXWt5EwpJUDA + test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: eWQJuKOgTl2sMnxLNxakmQ + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: WvnJBUuUQXesybPI1bWu-Q + test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: eZ0eeF3hRuWyptrxbKWKLQ + test-linux64-shippable-qr/opt-raptor-tp6-31-firefox-cold-e10s: BaTkzmPVRs-Y6InyPsPELA + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: HCnPFcozSrqLuV6n9FudYw + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: Ro-KqcUkTvWIUTHlPhHUAg + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: fgFy069oTiKZR1B3I5VGjg + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: JC01zczfR_yh3OfUJxcHsw + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: KEEPDWT7Qfe5dpwUyZ-mZw + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: CmKj0WktSYCzcpqsCCHlbg + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: BUOzv9IHTW-OiTMFWdpbeQ + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: aajNFMufQ9G71oYxJmVlzA + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: FgmhI9iQRKOZfI6GMsqsIA + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: UOKF1vIpSdaw3Qch31Bebw + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: O0lOCYVDR463rAOZsiyjlw + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: DZZZJG0VQgOt7ftEalM-DA + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: CWE7lE3HQGeIeLXtucWtAA + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: Umf6031xTOeqYdsgrmyxBw + test-linux64-shippable-qr/opt-talos-chrome-e10s: T9-eDhzXR9u-KiuiJNHN7g + test-linux64-shippable-qr/opt-talos-damp-e10s: OdpCqGHESFe_kVW0XRYYzQ + test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: ZQ31DjxOTYWuZurJtifaZw + test-linux64-shippable-qr/opt-talos-g1-e10s: An82xihnQ_KBVLL9K-6xCg + test-linux64-shippable-qr/opt-talos-g3-e10s: aa6RPT8uSE6sFQ-pgt5fLA + test-linux64-shippable-qr/opt-talos-g4-e10s: Yr2Ne-zJSvmSxfpUPnTRwg + test-linux64-shippable-qr/opt-talos-g5-e10s: Yc1OQavHROqIW3jYOVHA9Q + test-linux64-shippable-qr/opt-talos-other-e10s: f9v00kBYTL6d1cKgtGkmrQ + test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: IgpOuiFSRdqMjEUWQEsgng + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: BMEM02h2QH6MRJWJtZFvLA + test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: c5BimKfWR8y-U5fs3GBS3Q + test-linux64-shippable-qr/opt-talos-svgr-e10s: S9vT1-2LQlGWkw5q0jcESA + test-linux64-shippable-qr/opt-talos-tabswitch-e10s: eeTl8HYGRwe9cDoijqi2fA + test-linux64-shippable-qr/opt-talos-tp5o-e10s: cyCPNtlkT6GsSBEaX4kRAQ + test-linux64-shippable-qr/opt-talos-webgl-e10s: AVzxfdtKRuGsvaFQhGpopg + test-linux64-shippable/opt-raptor-ares6-firefox-e10s: dCqFHLP6RC2UMX5ofsQRoQ + test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: L-kajEUET-6iGQ26zYM1Fg + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Z-chHDSqTTGuNn-v8JknuA + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: DFaONozKSQ-zWNNSCI9gVQ + test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: EqgN1kbzTO-o317X4eLUSQ + test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: a11UDnIDTJOtgnpdICKbyw + test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: Qj9yWfhITDmWR03gjNoFCQ + test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: JQoApDUWRPacMIljMZu8oA + test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: YJZZF2DgSruFgL4Qy6Q9lA + test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: BaaM4466SVKVda7UQA_lOg + test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: VxyR1nCtRuqS9QXjMHwdXw + test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: cyqOQckhSVqvGS0k7hdsNg + test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IQ8ciaDbRdOrZoN6hfYEHQ + test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: EfCf71Y9TIKDGdoqYNiO2A + test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: WeDcY562SX-6v76exZuo1A + test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: FDOo3-AdTWO6XtnfBQYzeA + test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: NqenIivHSxKuYT-MKT2PTQ + test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: Beby9MAOTlaFvfMXpWWruA + test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: apW7S5RpSfKbl_ukgpX00w + test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: cArb92d1SNm5jNTxBfzg7g + test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: D_6r6OrwRTSbvA91wNEFZQ + test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: A09z2aRrTEC7ukqVXFvziA + test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: DysgmfykQRibhxhHwBtRFQ + test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: S4QohIzaSH23-xrNehg1EA + test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: XdGO2m37Qfa1XHVew_5ZiQ + test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Qtdmwjw5SZaw8GCrV_xi2w + test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: d4IETGp9Ts-GXIlay6td2A + test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: FyxuDvNkQZqwov74Nxw5Yw + test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: Rn9Awi_NQCG5AN_IqhFHyw + test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: fbr5g5_cQ-KKKd_374OwiA + test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: SV_voFfLR7STG4SqrJ791g + test-linux64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: X5agFYLSSWihKJxg3j3uVg + test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: f_yTH8BHQf-gX5mAGjFRhA + test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: faJXnuFUT9yBk_GOtRCqfw + test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: Bec07thmRq6s3hIu1x3SzA + test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: SDGlMi9hTIKL8KIsPNViIA + test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: Nj2VBDQoR2i74vLO0e6OKA + test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: cBG9h9JaSdikTfAJNd6PTw + test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: IuydZbK7R7aOLfse8rRObw + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: KdIUU5yVQeixnoIQtGww8Q + test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: UOdZKUxFSo-3IKQXXfDEug + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: NZWJDYAnT1yWHE1ZlK6XCw + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: POp6oo5QSdCR8CHUK52vYQ + test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: Ff8sl0FmQDWoJL4whbY8uw + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: VwFgZxMmRMyfqPPQfnkicQ + test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: L4IXSod8TXaDAQq1HRqpXw + test-linux64-shippable/opt-talos-bcv-e10s: fjzolmcsRPupbSa-_SI6Tw + test-linux64-shippable/opt-talos-chrome-e10s: VjYmS5v-S3CSO5VoyOdmNw + test-linux64-shippable/opt-talos-damp-e10s: EJ9knDnMRfSzr0R8YayfcQ + test-linux64-shippable/opt-talos-dromaeojs-e10s: H5cMvCHNRHixQqPoJ04pQg + test-linux64-shippable/opt-talos-g1-e10s: JPkZKF4kRyGAI-atFKdDPw + test-linux64-shippable/opt-talos-g3-e10s: Teq5oN0bTVCRfaoHJSig-Q + test-linux64-shippable/opt-talos-g4-e10s: d3X3sxlNS2-0ucAzULFlow + test-linux64-shippable/opt-talos-g5-e10s: VMsisnJfR-Kt74XB8bY8cQ + test-linux64-shippable/opt-talos-other-e10s: NbtizoqwThWQepHh79Xk7g + test-linux64-shippable/opt-talos-perf-reftest-e10s: JT0EfHSdTkC1a_7RrkxjUA + test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: dRwjyeOMTnulyYxUJGBREQ + test-linux64-shippable/opt-talos-realworld-webextensions-e10s: DY4p-l5bSbKpnrzDc5RlxQ + test-linux64-shippable/opt-talos-svgr-e10s: QpejQU4qQUq0h_skyo_7bg + test-linux64-shippable/opt-talos-tabswitch-e10s: YpVoEBnvQYWdmbXf1ONSRQ + test-linux64-shippable/opt-talos-tp5o-e10s: ei5nCp5kSvmnQ57Q9xN2nw + test-linux64-shippable/opt-talos-webgl-e10s: ExKenK8jRJuhcGIMw-4vpw + test-macosx1014-64-devedition/opt-cppunit-1proc: SugrbYUVTDKS9ckSlbOQKA + test-macosx1014-64-devedition/opt-crashtest-e10s: R05Fl1-NR9i1fsnZT_jbgA + test-macosx1014-64-devedition/opt-firefox-ui-functional-local-e10s: W3Fgzcb6SHOnrq5SHCBpvA + test-macosx1014-64-devedition/opt-firefox-ui-functional-remote-e10s: Uxcipga1SDygBqBL80ePOQ + test-macosx1014-64-devedition/opt-marionette-e10s: Jzm3-Tc0T-mPshKcixGFwg + test-macosx1014-64-devedition/opt-mochitest-a11y-1proc: ejBbBfHRR7aeUcz5OReuOg + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-1: cpi0UXKvT9mzX72_ijQljA + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-2: Eflz77vRRiOq6WNVVXnLPw + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-3: ZgiT2gvWQ4KrJldkTsDZXw + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-4: eoIg25orTLmywfWUSX0_jw + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-5: Rk-xI-1ARlmYSukazPmk0g + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-6: eMC2ii4ATD6n8tqNl2XmpQ + test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-7: RF27BD76RUOWaUoSWdF0cQ + test-macosx1014-64-devedition/opt-mochitest-chrome-1proc-1: IDZ7hojLSBOMZUPpn9uh5A + test-macosx1014-64-devedition/opt-mochitest-chrome-1proc-2: MlemRTm0SFGSDzeDQFrRVg + test-macosx1014-64-devedition/opt-mochitest-chrome-gpu-e10s: WBFpbRcoSvuyMV3w0aUXOA + test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-1: A7AL6dQYRqqr8LDvYGwaKg + test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-2: Af54nhLQQMeKmMFsV1dAzQ + test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-3: Out8TdceTqGG39pyCjlD_g + test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-4: bFYOlZxnS56afIQgtobNYw + test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-5: RIloY8JES_-axIHa2MA02A + test-macosx1014-64-devedition/opt-mochitest-media-e10s-1: NOhsxcT5RZqnVP4xkggRdg + test-macosx1014-64-devedition/opt-mochitest-media-e10s-2: AcTSNT1NQBuqbTHyxv7Kug + test-macosx1014-64-devedition/opt-mochitest-media-spi-e10s-1: BNxlGPujRPGxhMqrNgbegQ + test-macosx1014-64-devedition/opt-mochitest-media-spi-e10s-2: OeYt8_gYS4qSH8Q3hOjocw + test-macosx1014-64-devedition/opt-mochitest-plain-e10s-1: bUNlZV8DQqyqEns9N2UT8w + test-macosx1014-64-devedition/opt-mochitest-plain-e10s-2: TRmDFYBLSL2YDpHoMIvRNA + test-macosx1014-64-devedition/opt-mochitest-plain-e10s-3: J1ba439jQbqHhstUVBlzDw + test-macosx1014-64-devedition/opt-mochitest-plain-e10s-4: cpmQPzXRR4GuBffU8pBVLg + test-macosx1014-64-devedition/opt-mochitest-plain-e10s-5: b1LFiu0sSWaoZIJbkPTZkw + test-macosx1014-64-devedition/opt-mochitest-plain-gpu-e10s: dxkQpEByROW36hgSQxUk_A + test-macosx1014-64-devedition/opt-mochitest-webgl1-core-e10s: edVHgpYoSP2gtgPzNM5hyw + test-macosx1014-64-devedition/opt-mochitest-webgl1-ext-e10s: YudNDab9Rz-ROs8cnsvZNw + test-macosx1014-64-devedition/opt-mochitest-webgl2-core-e10s: R4asCkXNTK6NPLVhtmBRlQ + test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-1: etVeCMCBSgusgwXxFw7gHA + test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-2: H0E5BrihRsW4hTM8lAT8zQ + test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-3: a3jfkXnMT7-w7a69Pgcsiw + test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-4: cg2Rqzw-RTWA1425UFpZ0w + test-macosx1014-64-devedition/opt-reftest-e10s-1: CX1WHXiBSLqa9pKVKWJTcA + test-macosx1014-64-devedition/opt-reftest-e10s-2: Clrzx7W6TwCdjmMMe0subA + test-macosx1014-64-devedition/opt-reftest-e10s-3: Ey97brhQRM-xKPiz4yBBvA + test-macosx1014-64-devedition/opt-reftest-e10s-4: FX51adaHQ06RbOZEQujNQQ + test-macosx1014-64-devedition/opt-reftest-e10s-5: Vfq5Rch8RiioE7KckvodVQ + test-macosx1014-64-devedition/opt-reftest-e10s-6: FH_pqUnkTfyI1SUbk3XA7w + test-macosx1014-64-devedition/opt-reftest-e10s-7: ML64SxgOQ2iWDJhO4HZoIw + test-macosx1014-64-devedition/opt-reftest-e10s-8: Igp9LXN3T3GaWXx3BLeuAg + test-macosx1014-64-devedition/opt-telemetry-tests-client-e10s: eBY8tuUMSMOiLHChwJbaTw + test-macosx1014-64-devedition/opt-web-platform-tests-crashtest-e10s: G1ERzv-1SfOqa1nXPk7FNg + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-1: POaNzRjYRpS8sx3tlfVD5g + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-10: KvQaX5TRSZ2HgtutcRBTgg + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-2: YoomjbShSyaliJEuuqb3YA + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-3: ditKyGP9QU2SWzlcOyGjoQ + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-4: a-PLLRcQSO6ZhR8QM0CEkA + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-5: eLcopn8xQNylAcO4MDIfNQ + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-6: IwcqQqryT6WOUOvU7Zec-Q + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-7: IDsn9dXtQBy5e54t2Pm_sg + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-8: H-05u-dqR6OUAvTaKaCPbw + test-macosx1014-64-devedition/opt-web-platform-tests-e10s-9: RDuz8XU8SNqYazsfglk_QA + test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-1: Iw6mYZanTr2VAW4Bn08PdA + test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-2: fWTCA7-URpyKihakrT5gkA + test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-3: Px8cs0rVQtqhOe7EsYoz9A + test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-4: YaHrpI-wR_eqw1xJHSzIAw + test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-1: STx_Fz4JSAGmSN93r4QqBQ + test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-2: Hpx4HaB6QLOc3_5En9_4lQ + test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-3: Ju0nTHKGQvmNr8CTEgxOZg + test-macosx1014-64-devedition/opt-xpcshell-e10s-1: JbMtCoYuQy-ke16ci3u9gw + test-macosx1014-64-devedition/opt-xpcshell-e10s-2: KN_5TlNvRIiDl7E76zu_GQ + test-macosx1014-64-qr/debug-crashtest-e10s: M7QGkfLgTEKNyB6HcJchXA + test-macosx1014-64-qr/debug-reftest-e10s-1: E9zELueYTzW0Y7FUSEdSLg + test-macosx1014-64-qr/debug-reftest-e10s-2: DjYYbbcGT5mNkIBrp1hjrQ + test-macosx1014-64-qr/debug-reftest-e10s-3: LUZ9LkYJTeOHoOguIPrB_w + test-macosx1014-64-qr/debug-reftest-e10s-4: HLsWYCQRRq-5FkRllZ17KA + test-macosx1014-64-qr/debug-reftest-e10s-5: Faeh_jM5R2aL9rC_fify-g + test-macosx1014-64-qr/debug-reftest-e10s-6: OfW0GE7BQiujEeDzBbpFBA + test-macosx1014-64-shippable-qr/opt-crashtest-e10s: MvA5twLSSv6wrAd3DxjOVQ + test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: S9OJA-R2Qx6vbCt4ySOAhg + test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: XqndRX7lQo2Wly5PihGitg + test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: CSN7j2YJSh29RWku6HM8qg + test-macosx1014-64-shippable/opt-awsy-base-e10s: L5TldhlTT_SQRYswCodLwQ + test-macosx1014-64-shippable/opt-awsy-e10s: TuvHh_hjRgWLuKQy7k2nog + test-macosx1014-64-shippable/opt-awsy-tp6-e10s: MYJmMBXTTASndXqrJnjVaw + test-macosx1014-64-shippable/opt-cppunit-1proc: W08YoNLGSNa5SHO32Qi0ew + test-macosx1014-64-shippable/opt-crashtest-e10s: X7HvDpctRduBdJztU1g0Bg + test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: fuSAFjkkQXeFCzuM7nkI2A + test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: Kf9ZcEV1T7Of6LjaMmc-6w + test-macosx1014-64-shippable/opt-gtest-1proc: FxH_0WzBTBif4dwWWyTrOw + test-macosx1014-64-shippable/opt-marionette-e10s: H2-OoeteRp-XGnOtUUrBOw + test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: OqH23cPPTCGMccW0MAtVdw + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: Z4ctvTO8TSmHqBhrmP5k0Q + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: Id8Fw_-WS3yylo9X1CeKGA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: RPwDlLM-TL2VnviZmJuR5w + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: Cdy5_Ly6QF28s2eJHLZeBQ + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: X_m0VxtYTf2sM_NPOeL9jg + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: Z9-rzAsjSxCtxVuFMj2H1w + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: akjtF6MJRW2HI9EpC9ELMA + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: QeMJUhJ4SrOExz7Xk1WtVQ + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: IqvO5H3ISPy8daDR-bHO8A + test-macosx1014-64-shippable/opt-mochitest-chrome-gpu-e10s: DKkG6p1MRj6lyjLerZnTbA + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: XMAPyEnKRlm42muAgCCQKQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: SRnx6lYsSSW7_OXgAo-hgA + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: AMwDZZTxS7iUJkL8wa0I9Q + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: BS_iewaVTnuGn7CeEj3wxg + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: OE520x0kRpOO_J2pkOndGg + test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: OvO0Y-85Scqr74r9UtYcKg + test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: BQroejUCRd-isdRE7Zzxyw + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: aUZClARDTouSJpfa1TDIUQ + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: f-E7Lu15Qk6_bS_sL6HwFw + test-macosx1014-64-shippable/opt-mochitest-plain-e10s-1: F6JkbSrxS827ef8q7PvQWQ + test-macosx1014-64-shippable/opt-mochitest-plain-e10s-2: fwWlObXFT0y6LCih85daVA + test-macosx1014-64-shippable/opt-mochitest-plain-e10s-3: HKgcyzNkSf-73PxFYMJkag + test-macosx1014-64-shippable/opt-mochitest-plain-e10s-4: NBY1R95ZSR-7arJ6rGPlxw + test-macosx1014-64-shippable/opt-mochitest-plain-e10s-5: MJK6PWaWTbSZnbte6tPx5Q + test-macosx1014-64-shippable/opt-mochitest-plain-gpu-e10s: RAZBqJB1Sd2H9lXRPkfoCQ + test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: banWGCQkQyCUGnAYBFi_dA + test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: R5bddKE2TfCfCbAOMPQ2rQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: KDnwB83kTf61hMIgbA2f9g + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: DY2WDUPmRoeDqP6PdXeeeg + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: YirvbGwxTKmlIgGFIqUBBA + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: aKLpNIUvSOOlxjbomCAGCQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: GHimRWyuS7Cyi5NddrPbVA + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: eKYDsfjpTLONBt9BcndQyA + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: a4j7gLePTSCbiea4t65fvA + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: OHuzHh6eSXGTn12WQGNcPQ + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: dtS7oDi8TbWdDcyr1TujXg + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: ZSaYwaCRSWWydRKxY_JSdg + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: H5jEgY40QgqmOzRxskCUhg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: GZ32aoDHSXa6mrKAFP7O_w + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: EeCh3HtGQoeyQMYUBiidCg + test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: fbVFHIv-TbiwPl3Znu1aMg + test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MpTT1-vJRh6eb766km09Cw + test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: Vi_ilrO6Se2lnYMomCoOfg + test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: SafmHubaSuOfgp2z6YI_SA + test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: YLjN3hjyRQeojBo8OE3UEQ + test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: d9qcM3FsTOq0hmibgn2RNw + test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: D3GCWc3YTu2yIo9sIqe-Hg + test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: BKgkKq1ASEeqCDoGC803pA + test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: fvDVEM9lTaqmqklwiQ3adg + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eFTkMdAOR9yfMlaSyEFF8w + test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Ht4ilKpERuKVKa3yea9kfg + test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Wog42PolRmm2bhA25NvtjA + test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HkkPQwClRKC1hxts3jVnhQ + test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: Lwr3WzU5RZCJmc80pimYdg + test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: XcOwMgiQRD-XOfYCZkI9Cg + test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: f9rqdDEDTM6KGx4-wZD5bQ + test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: NBAylkjcTfevavtHW7o64A + test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: DUFqDfuZS_yPPKD92HoUfA + test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: HWNQ7nN8TYmWYLvQVXQnng + test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: by9EK8E1Qq-PCJUgJL1PWw + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: GgUpkuheT4eCSePJ49Uj5Q + test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: cY1zrQ-CTIm5B3N3KBN1HQ + test-macosx1014-64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: WCky7SofRU2A4FFzlEc_VQ + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cvebGjjpRp-1lGpY-b05qg + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: YMDNcmd3RW68DxrDjgzpZQ + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: MDwzlffeTraTKGn9OUvDUA + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: Mu_Eca2YSGK_4j73TNc_Hg + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: JTB00hj7TTW9S7wCo84j5A + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: Sxb5Oj_nTSixqzpUh319fg + test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: H1w5GVhiQZenVun7wZRFzQ + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: D43miVPEQQWEcupTSWA8ag + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: LdCpyzRxS8-7dJTYQlPw2g + test-macosx1014-64-shippable/opt-reftest-e10s-1: L8erdb0TQbWMQxcrOtwmTQ + test-macosx1014-64-shippable/opt-reftest-e10s-2: FG_iiJByTBG5t8t8PLvBMQ + test-macosx1014-64-shippable/opt-reftest-e10s-3: SPDqwR7ETA-JeYBWkoSowQ + test-macosx1014-64-shippable/opt-talos-bcv-e10s: dt4WNlclTRaG4XHMU9YMZQ + test-macosx1014-64-shippable/opt-talos-chrome-e10s: dv_ZqfnZRGuBUnzKz33XWw + test-macosx1014-64-shippable/opt-talos-damp-e10s: Zg1jru0wQ7ev3zefyfIJaw + test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ZixVcsFzRRWY5LJLlddPQQ + test-macosx1014-64-shippable/opt-talos-g1-e10s: HgrvOlu9T3OXDxqTP-yKDw + test-macosx1014-64-shippable/opt-talos-g4-e10s: UqQpZz8mRQeohGZFl9GpCg + test-macosx1014-64-shippable/opt-talos-g5-e10s: f8UvINg6R1m50rx-om5wqg + test-macosx1014-64-shippable/opt-talos-other-e10s: AEwBnVM4SCmTtkXlbQz3KA + test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: ZLxB5qi3RZSH6xX6EHq_vA + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: G6BF18DOSfKYwTiOMfGC3A + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: fB7JfHuiTluVQ3egpabkOA + test-macosx1014-64-shippable/opt-talos-svgr-e10s: TCedeIdBTNSfPGanNIDqrg + test-macosx1014-64-shippable/opt-talos-tp5o-e10s: SVi3fRuySMG9o_NoEaV0JA + test-macosx1014-64-shippable/opt-talos-webgl-e10s: fS5UiIt3TX29V2MWIhU8lg + test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: dlp4aRRzRaWS7Zt8aFL61g + test-macosx1014-64-shippable/opt-web-platform-tests-crashtest-e10s: ck-mkgZDTRaLamdW6O0tGg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: fMcswqWxRn6IjfFuJ6urJA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: croJ2GQkQNOaNfWieUclKg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: ZXPQ5TxsQf-_5hPk8cw4FA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: AllUddYMRay4mrv01MUX6A + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: e1zF97A1RJu10l7TxBCN4w + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: HNAv1gCfQzOrCRCZx7-DaA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: QRxcrWqHRMSEcIaq8Z0Kdg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: AUYp4SMBQyK9nDsboCNPoQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: GSVxgqwsTe229PSX2aGHYw + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: UHzxZ6hmRqWKN8JVOinyvw + test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-1: QhEu7rVpREeBCH-t8QWmrA + test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-2: ebIT3YXCSdmdizyb9mTguw + test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-3: TxCNB11lQ_SjnEvPEVqMMg + test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-4: cxr_QC4IQw-uNXpwFYdvrg + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: TxMezlxsRTiyk67ygX_MvA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: MV6_IohpQyGHQSRz0zdpGw + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: d1qP8vBaTpyiCJZxcxcWHA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: KpUJgosRQfGbNRmJ0Twr_g + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: aKgH78KTS4CZE0btiRgJNQ + test-macosx1014-64-shippable/opt-xpcshell-e10s-1: D35ER4oCTVei1M3xN-EDcQ + test-macosx1014-64-shippable/opt-xpcshell-e10s-2: JgbiIKcHQUO4X-zAAwRakA + test-macosx1014-64/debug-cppunit-1proc: bPM7ceOGRSmUs5ufYGn6dw + test-macosx1014-64/debug-crashtest-e10s: aTqKokNVQ8eqg4zUVEGk2Q + test-macosx1014-64/debug-firefox-ui-functional-local-e10s: ScDWfKtpQ3uSx63y61vFMg + test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: P9cgCM8bTfKAdiyoPlyG5Q + test-macosx1014-64/debug-gtest-1proc: K-yEz0Q8RFCRwo8FT50gMg + test-macosx1014-64/debug-marionette-e10s: RSgjKVEWR2afmT1X6Ii8vQ + test-macosx1014-64/debug-mochitest-a11y-1proc: ZW9rulztQvKBG8TGoALVJQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: ZI_2wQOETfSydwzK550hQg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: GMhPnCQKShG9tYfOxfgPWw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: OMksdfb9QBKVZqXaWYKG9w + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: SwQcbIj0R6CycrhKdwYByQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: E3pAezSNTHiaKrWG5nv34Q + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: R53Zh7P5QHqiv3IgByYcbg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: dsFQXaV_RKu84Z3yBeKmjA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: dN8cQqy8T32HpPsQxm3nkw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: OvHOrGuBSxCT3eRm-2JrWg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: NB6iXD2wToexlJsOpJZfRw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: MakUwz8WS9ib1ug8Q19QYg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: Bu8FFcZ9QQ6fU1xF7JedjQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: ZoJhrQkcQpqPTRh-4PpvKQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: b1i4EqX6QA-UYt5qbDaeRw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: SFOOPkrySKSw10e7EfTgHQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: LjR6kpBSQu-zaqLdbmZxaw + test-macosx1014-64/debug-mochitest-chrome-1proc-1: KbF8n1DVSsON5tx2SFM5aw + test-macosx1014-64/debug-mochitest-chrome-1proc-2: E99vC4dcSPGUVwvNok7-dA + test-macosx1014-64/debug-mochitest-chrome-gpu-e10s: Yc8K7hOXS-esX8ju0szYWg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: VeDKkTsyS-aL-hOTG2E7_A + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: SfE1L9HrSa2plCVD8uva4w + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: evGIjRYRQd28iEE1-bOAjw + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: ZJ-t1W1cRGmu-LkuOuyppg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: EIJK1lojT1iMYzlOhm-KAw + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: dOWnWh7VTCa6OoFi__JnKw + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: L6JdsNzfQ3Oqhi5M_m-Elg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: I1Kmf6OtQcWeeaejCvJbng + test-macosx1014-64/debug-mochitest-media-e10s-1: Ug-wKkZ_RhO_CuLSMeNJ5g + test-macosx1014-64/debug-mochitest-media-e10s-2: KwSBmrakQ9SFRS85v_XHzg + test-macosx1014-64/debug-mochitest-media-spi-e10s-1: NRoAID1CSC2vjUtNnY905w + test-macosx1014-64/debug-mochitest-media-spi-e10s-2: X9PUetGBRGaU2tRNz-GxwQ + test-macosx1014-64/debug-mochitest-plain-e10s-1: Rh2jzYQ-Rm-ieCIORUeuFQ + test-macosx1014-64/debug-mochitest-plain-e10s-2: GfToepmwQ5a1PLqrKbI9pw + test-macosx1014-64/debug-mochitest-plain-e10s-3: Vf2oFuDWQROfJXIUpMr6Ew + test-macosx1014-64/debug-mochitest-plain-e10s-4: FHDVKESXSqCLMLaT2AuyFQ + test-macosx1014-64/debug-mochitest-plain-e10s-5: Ggi9NZ4yQ_e_6JtaeSh0Sg + test-macosx1014-64/debug-mochitest-plain-gpu-e10s: UHQ8SfmuSlOh-xwJUg6Vnw + test-macosx1014-64/debug-mochitest-webgl1-core-e10s: IgKxaWWISDapCJreUqAuhQ + test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: R7WYrNkES1aXlQymZgOeXw + test-macosx1014-64/debug-mochitest-webgl2-core-e10s: eOoy7hSvRx2GeTSMjzgljA + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: DBd3fPrCSKmUHIo2epOPhQ + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: RikMK6AkT66by5Wfls37kw + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: TgyA2962Qd6c3RWpd2O0VQ + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: K4-N4v1dRGaKrfEFNzKC3w + test-macosx1014-64/debug-reftest-e10s-1: GmM1g20ETQSxISiOcmOthw + test-macosx1014-64/debug-reftest-e10s-2: MdWUTDwVR06-JQIZitX5pQ + test-macosx1014-64/debug-reftest-e10s-3: R5r4o9YRSbWS4dwTjM0G2Q + test-macosx1014-64/debug-reftest-e10s-4: CmUbdwjHTmCjo2RVWA7rwA + test-macosx1014-64/debug-telemetry-tests-client-e10s: UlVDzmFpRHiwl3DX2U2uNw + test-macosx1014-64/debug-web-platform-tests-crashtest-e10s: NMnsEyrNSZ6AeXdehyOlmg + test-macosx1014-64/debug-web-platform-tests-e10s-1: b2ZS219xQGm_UpPtHvrjdQ + test-macosx1014-64/debug-web-platform-tests-e10s-10: PYDpiL41QuiPuT7oiPCohA + test-macosx1014-64/debug-web-platform-tests-e10s-11: aOordnAsT4mLzkXVzBanUA + test-macosx1014-64/debug-web-platform-tests-e10s-12: YF63IDgzQ9mZIMPB9XPotA + test-macosx1014-64/debug-web-platform-tests-e10s-13: bYC6c94NR3--f5Qd1cIiSQ + test-macosx1014-64/debug-web-platform-tests-e10s-14: BFQoAQDJRdmDxrKF3vEiWw + test-macosx1014-64/debug-web-platform-tests-e10s-15: B7CgB63tT1aPkU_a9hwzSg + test-macosx1014-64/debug-web-platform-tests-e10s-16: Ka2-4BXiTcWHsk0wQJos7Q + test-macosx1014-64/debug-web-platform-tests-e10s-17: QnkG-79mRPm-zNxusjpFOQ + test-macosx1014-64/debug-web-platform-tests-e10s-18: Ao2P_dZuRxa-sXf273vetg + test-macosx1014-64/debug-web-platform-tests-e10s-2: PU9sHGdiRPyEbxjhHfO_CA + test-macosx1014-64/debug-web-platform-tests-e10s-3: Od6E-t-kTMWl-hKA315cqg + test-macosx1014-64/debug-web-platform-tests-e10s-4: XV5k8OpUQmWvE23KlK08FQ + test-macosx1014-64/debug-web-platform-tests-e10s-5: ZCSRJu1LQTqHG4wDeMmkEg + test-macosx1014-64/debug-web-platform-tests-e10s-6: Prj5cytKQ8iiYt9HBAJLFg + test-macosx1014-64/debug-web-platform-tests-e10s-7: Om0cH8NwTei8RGMmH7Vabg + test-macosx1014-64/debug-web-platform-tests-e10s-8: CYv35agOTbGcXcOMJB1ZCQ + test-macosx1014-64/debug-web-platform-tests-e10s-9: OJTUzxNIRcesRvzkbIckLA + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-1: CLsXITqKSNKD4Y0n1LTa1A + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-2: f1P0JfL2TWaTQekNGhpSkA + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-3: VOKeMQkBQLqeiij0gMJVCw + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-4: G0q0HXGCR_2lzBogxq33-g + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-5: DxhHqTyhTSeBQOEa7zhEiQ + test-macosx1014-64/debug-web-platform-tests-reftest-e10s-6: AvxjhmgtTpey6IooEwRIgA + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: ABVcQA5DRM2fweXqSfAneg + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Mjmh22miQ0q8w2PvGYQPgw + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: TkS9dy4CQQC07qJL50ZFrg + test-macosx1014-64/debug-xpcshell-e10s-1: Il9tsYHIT8ugleMhT3JmqA + test-macosx1014-64/debug-xpcshell-e10s-2: ag_52efcTIqDs2gCQMxIVQ + test-windows10-64-asan/opt-cppunit-1proc: Nxm9FrkrSzyuQfJqwLn1ew + test-windows10-64-asan/opt-crashtest-e10s: JSJ1m4_tR4KOy0nOjJ2c3g + test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: KhZt4cPlRKiyKQhbMRk71A + test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: evNF-43oQUm7zygQk1wT3Q + test-windows10-64-asan/opt-gtest-1proc: Cb4UL83gRRuqTspwLi2ZjQ + test-windows10-64-asan/opt-marionette-e10s: KGd2ZvU-QgmWPav3wadrHg + test-windows10-64-asan/opt-mochitest-a11y-1proc: dmwliiLBSjykIpDBzSL1Yw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: D9D3k0EyRxS6vcenZIa-RQ + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: YO6cDQV0SHSGfcRPX4mUcw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: dCUJkcb0T2W03KY85f0F6A + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: LQ4gZD6aT3mxc6AnUNSp9w + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: AO5h6gqbS3CGmNyiGTj_NQ + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: NmrxS_qlQguTBDic53cmpA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: fSn2iLN-QAm-3hxPhIUxhw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: F0Z7AYg0QdimiWGerevi_g + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: VqmJ3eePSu-AeX0-JHAkBw + test-windows10-64-asan/opt-mochitest-chrome-1proc-1: er53t4_iR1ybpLSomygebA + test-windows10-64-asan/opt-mochitest-chrome-1proc-2: EYcpuA9zTgyH6ouacvsc_w + test-windows10-64-asan/opt-mochitest-chrome-1proc-3: HR7m_7-8RHOeQMa2OaxpWA + test-windows10-64-asan/opt-mochitest-chrome-gpu-e10s: WqcweWVfSyOvmWpGUCNtGA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: WXefBh53QpycZ6553nXAWA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: eKR56KmsRwKOUu0Cpn2NNg + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: QaZ3_RjaR6GT2rfXuD5G8Q + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: YAuXq1g0QhSW25CAwIWS4g + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: DPeMmqsUQFaoKzbxu1XPng + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: GoHb-xmBTwqYAdfHay1ZFg + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: Bm-rOEXjRXKbWSIuvgUAMA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: ciUNgnD8Q_-TtLCJbizTHg + test-windows10-64-asan/opt-mochitest-media-e10s: RrUYfOE2Rpi-dTnD97lMWw + test-windows10-64-asan/opt-mochitest-media-spi-e10s: TRVHypC7RwCqnr6700o_jg + test-windows10-64-asan/opt-mochitest-plain-e10s-1: YC1wuknYQIep1WhC6fl65g + test-windows10-64-asan/opt-mochitest-plain-e10s-2: RSmYzxwSQNG1OcF47S0aOA + test-windows10-64-asan/opt-mochitest-plain-e10s-3: QoxzFrJ2Q0GLRrgcGm0u2Q + test-windows10-64-asan/opt-mochitest-plain-e10s-4: GL_ZykXSTOKBB40AztIrSw + test-windows10-64-asan/opt-mochitest-plain-e10s-5: cFUE-YSCTGGlwkMYDW4V9w + test-windows10-64-asan/opt-mochitest-plain-gpu-e10s: QA7-2Jk2QRiwgvhqVT7NvA + test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: VymuOdihSx-nnE5JiBJrAA + test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: E-JAYUysSP2BfOCePfmxvA + test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: VafSlTfESiWDAFGFjkv71Q + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: bEPMZULtRAWhyXz420AFCw + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: HuNjnS7yRSu9JzJwPA6slA + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EfqEbqFFQoyB1G2XYRWRjw + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: Q7gCeSjRSuKYyiDTtjAj4g + test-windows10-64-asan/opt-reftest-e10s-1: DssGxMgiRiexQPdV6xktnw + test-windows10-64-asan/opt-reftest-e10s-2: WpbYk4g4QRibZ1EdpfVZWg + test-windows10-64-asan/opt-reftest-e10s-3: NiTCB6aLQe6WW_vdi4sfow + test-windows10-64-asan/opt-telemetry-tests-client-e10s: PRYX62qYR3a-4a2c9yjMEQ + test-windows10-64-devedition/opt-cppunit-1proc: af8f64fFTKCv3Fvwks7qEA + test-windows10-64-devedition/opt-crashtest-e10s: I-c39WODQ0CfRHypOcAmzg + test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: OkHP6SxASZSingCCJyIHlA + test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: PDO3mzgsSkKpOpvd2TPfEA + test-windows10-64-devedition/opt-marionette-e10s: XSI-MLMHQoaDYn6TtB6zQQ + test-windows10-64-devedition/opt-marionette-gpu-e10s: NPNnrYCiQ1-gdB_Uqph7MQ + test-windows10-64-devedition/opt-mochitest-a11y-1proc: W0z6uvrHSn2zeFTuOdyklw + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: UPYfrY0fTbOZfca7VTvEdA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: OVbnmgHVTqSQ376skiDCgQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: BrRzWWuaS4GWnClTCDyH_A + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: SjYXZYRKSD-fCBv-U379bw + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: DXSTKNyCQSqa-FuFanwE8g + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: JZCtnX-aQ82uLugmldrTxQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: OUgBtlHGSNe3fdjWVImsuw + test-windows10-64-devedition/opt-mochitest-chrome-1proc-1: e0y4XoIhRSm_9aDwk3JB-g + test-windows10-64-devedition/opt-mochitest-chrome-1proc-2: KnueTQDcQf-PnoKjqTz2SA + test-windows10-64-devedition/opt-mochitest-chrome-gpu-e10s: YrRH93duToyRLaB4kG2sCg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: VsTqUn58QFW3zSKrQJAn3g + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: FtQSxUn3SYu3DHFb_BvRYg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: AzciUnmMQm2ol9GCEzJI2A + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: ebGELhHARcGr800CwiZ70w + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: V8NOShKMQVaKStjrHdHqlg + test-windows10-64-devedition/opt-mochitest-media-e10s: P7jKnefOT12acvMXDVGkyA + test-windows10-64-devedition/opt-mochitest-media-spi-e10s: KkhRkHqBSsCfi1lnmnObqQ + test-windows10-64-devedition/opt-mochitest-plain-e10s-1: M6NbnPjOSYWi1irYR7dmnA + test-windows10-64-devedition/opt-mochitest-plain-e10s-2: QO8V5tQPRd6S-5YpKqhrug + test-windows10-64-devedition/opt-mochitest-plain-e10s-3: HsbGuG5TSz2R1TZX2clzMg + test-windows10-64-devedition/opt-mochitest-plain-e10s-4: BNxcei8yRcGXudhxoJtFJA + test-windows10-64-devedition/opt-mochitest-plain-e10s-5: RQmvrz-xR_OkeAzOWF5vvA + test-windows10-64-devedition/opt-mochitest-plain-gpu-e10s: V-ODwyeuTy-xzt5kyxUzGQ + test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: cnBnDXHhQ4Wh-OoVSmwgPA + test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: FOMsF49uQbO_R1N-yM3nFA + test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: cjvnoDOcRKmw_1WBddQMdA + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: VHjB8nukQUCMZuK0L76ZbA + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: e0Z_xNtZR5abli_wtcFNpg + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: fNEtc5UETRGeD1bJZdPPLg + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: UNv69CP_RVa1smKtL6-sdw + test-windows10-64-devedition/opt-reftest-e10s-1: Yi7Lmp6TR4e8QnYFxTzeSQ + test-windows10-64-devedition/opt-reftest-e10s-2: M9UzlUNKRHGeJKxeV5Ykmg + test-windows10-64-devedition/opt-telemetry-tests-client-e10s: BqLH--shRcarcWQbvdQlMA + test-windows10-64-devedition/opt-web-platform-tests-crashtest-e10s: WYpZD4jXQVuvUKUvx0s8kQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-1: HdHON-2KRA22G8dDVzbt0g + test-windows10-64-devedition/opt-web-platform-tests-e10s-10: Ki0cK7E0R5Cnq06syPfSLg + test-windows10-64-devedition/opt-web-platform-tests-e10s-2: VfHZlbRIRQOGL0MpUVOjWA + test-windows10-64-devedition/opt-web-platform-tests-e10s-3: MowfZQU5Sp6aRtSi0osrxQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-4: NW0EvgKAS0e9Iri71neaEA + test-windows10-64-devedition/opt-web-platform-tests-e10s-5: MqTK9M7-SA25ydM1ajNwDw + test-windows10-64-devedition/opt-web-platform-tests-e10s-6: CixnwqngQqePch1PxAwXxA + test-windows10-64-devedition/opt-web-platform-tests-e10s-7: IZO559CISVGfsuY79BPUow + test-windows10-64-devedition/opt-web-platform-tests-e10s-8: JtAC9ntXSaey47B0V79lQQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-9: cKHwnxVHQJSx9j2LgyBULA + test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-1: FwqUSwo-Sbe9aTIKT8QqEw + test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-2: Mwm2Ow5_QfWJyH7icWItJg + test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-3: cRhHZW1MQF-QU1RRHEmhgQ + test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-4: HkCTaVAlTJOlMXRhchBJeA + test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-1: E7Zy0TMKS2GPUn-fgUa6Mg + test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-2: Qudng102TmKVy-owZosUtQ + test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-3: bHUEjOKGT_awJHt9k8gnUQ + test-windows10-64-devedition/opt-xpcshell-e10s-1: AvH6jNi8SJejV601rRkL0Q + test-windows10-64-devedition/opt-xpcshell-e10s-2: Lxdy7jbCQwSD7g3RpOUm4A + test-windows10-64-mingwclang/debug-cppunit-1proc: Bc5w5uFFTMKtKHkIe-PjNg + test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: YL-8CAGlTuCE2mIAMYP_SQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: SyPTEwOgTSyCCzSWWAxu5w + test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: GcrT6LkNSISgxBqVU6bFdg + test-windows10-64-mingwclang/debug-mochitest-chrome-gpu-e10s: SWwHUVVZSdyltd0hQZAxGw + test-windows10-64-mingwclang/debug-mochitest-plain-gpu-e10s: KDDVD3SBRqOc8989sEvFww + test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: P7un1kuTR7aj6r8M1znxYA + test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: EONxuVdZT1St_ABaiF--Ug + test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: VoPzuU-0S-SAPeAX8-uX3w + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: c2QdUN-bRnCK1Jh78XS3Sg + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: GxDmhYncTx2VO9lQeRr2Xw + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: KLzFa1VHTIGnYKWdXfL9RA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: EiHm_3gRS82VMR3__PomKw + test-windows10-64-mingwclang/debug-reftest-e10s-1: JYWWAQvSSFejRcttyihaIQ + test-windows10-64-mingwclang/debug-reftest-e10s-2: SNdxYN8kSwmzxllA230-Yw + test-windows10-64-mingwclang/debug-reftest-e10s-3: XbjhZd_OT5m_53_ni5je4A + test-windows10-64-mingwclang/debug-reftest-e10s-4: MH8uNMBIQfG81KpwR-Swow + test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: XDvBmAzmSP2O3IUArlgmww + test-windows10-64-mingwclang/opt-cppunit-1proc: OkI8Ct44Sb-exinzCQh3RA + test-windows10-64-mingwclang/opt-mochitest-chrome-gpu-e10s: duoDYnADRnGuZxNly1QSXA + test-windows10-64-mingwclang/opt-mochitest-plain-gpu-e10s: CFnmHHtcTpK7_0O6UU9ztQ + test-windows10-64-qr/debug-crashtest-e10s: TFKa4x08RQm0gGAOQGyIpQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: U2s5SvKZS-a5A59v-doT-g + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: SK1GzWmARlGmitYMYohs-Q + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: F2l_VBvNQYeZ9l5McnHPrQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: FwUltM3nTb-Sooy-fTLpLQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: AmZk_tD9ThS14gqyVgfdjw + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: Txv1RNX6Rh-4dM4tTluw4w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: fLJ-XSEgSoeArotMk_tGAA + test-windows10-64-qr/debug-mochitest-chrome-gpu-e10s: D5_SiluFQFyH537bgT8Qyg + test-windows10-64-qr/debug-mochitest-media-e10s: R89_8XmMQOC1HmX6WRPLJA + test-windows10-64-qr/debug-mochitest-media-spi-e10s: ORagls3-TCe1yNgTj16tRQ + test-windows10-64-qr/debug-mochitest-plain-e10s-1: XNf70aO1SWy2JjgioNhzBw + test-windows10-64-qr/debug-mochitest-plain-e10s-2: L4U7o4DSSqipxrDT8jgT2A + test-windows10-64-qr/debug-mochitest-plain-e10s-3: Hrxg0mOVRJa2BrD5pYP9_A + test-windows10-64-qr/debug-mochitest-plain-e10s-4: TqVZvP3RTsS3Z1oJeJYEew + test-windows10-64-qr/debug-mochitest-plain-e10s-5: eziiUPcIR1qp_awM6bIH0g + test-windows10-64-qr/debug-mochitest-plain-gpu-e10s: Eh0pi24aT0q4StIsiqLrlw + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: CbTgFUV1RWazAFjS8jpuQg + test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: O2aWByNGT4-WMPR4KqBJpA + test-windows10-64-qr/debug-reftest-e10s-1: eW9czyw_TQip5Sn9kscv2w + test-windows10-64-qr/debug-reftest-e10s-2: cyPiySDZR8-O5I66uzz4ew + test-windows10-64-qr/debug-reftest-e10s-3: ZU3rr7gKSLS_EiOAiq4WqA + test-windows10-64-qr/debug-reftest-e10s-4: ZAUotvhaTNmFeb35l--xKQ + test-windows10-64-qr/debug-web-platform-tests-crashtest-e10s: UHVdyNbVTTK-TKMil1THPw + test-windows10-64-qr/debug-web-platform-tests-e10s-1: DFmn_mDKSd-XizbEQkBWwQ + test-windows10-64-qr/debug-web-platform-tests-e10s-10: TtWgS6ZrTr6LuNiK8b6NIA + test-windows10-64-qr/debug-web-platform-tests-e10s-11: JsuoH4yzRWyvLV2CafUvtA + test-windows10-64-qr/debug-web-platform-tests-e10s-12: W2vKwOpaSC6v4ZBw85jk2w + test-windows10-64-qr/debug-web-platform-tests-e10s-13: FiejTUIdTqiRWLMIehtGAw + test-windows10-64-qr/debug-web-platform-tests-e10s-14: RfNFOKRVQnqiqrF2XRPIrw + test-windows10-64-qr/debug-web-platform-tests-e10s-2: Kv-jszrmRjiJrV79us2deg + test-windows10-64-qr/debug-web-platform-tests-e10s-3: QQdQUQO4RB--Y_v6EfJopg + test-windows10-64-qr/debug-web-platform-tests-e10s-4: FykVnRRZRZaaX8RwflZJYQ + test-windows10-64-qr/debug-web-platform-tests-e10s-5: Ba5EVoojSbW8UL-s1IDzoA + test-windows10-64-qr/debug-web-platform-tests-e10s-6: QDp_nXAjRQ2BxuRNJwe8ZA + test-windows10-64-qr/debug-web-platform-tests-e10s-7: OD6Z6vxBRmCpYsULS7XDXg + test-windows10-64-qr/debug-web-platform-tests-e10s-8: O4_eRBTMQqCAmW3jXZD1OA + test-windows10-64-qr/debug-web-platform-tests-e10s-9: Yj7LEbuJTvqfROSWeZx-Mg + test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-1: W6xIitVZSAuaVESwSt9S8Q + test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-2: QRfc-mJBT1iOkbcuRFsxnQ + test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-3: b75To_G-T3GcrffFWVQ86w + test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-4: fYjAoNxIQW-yzwfcItOj1g + test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-5: ZvfGGxOQRvuJ4pXkekkOBQ + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: ICNfYGEFTDy42_kViBcCtA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: cxeKoYXTSfKzlxWGyI03LQ + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: JcO_gtblRkupl_yxNPHj3w + test-windows10-64-shippable-qr/opt-awsy-base-e10s: DKAdCUHNS4GJ2PCzuiDENg + test-windows10-64-shippable-qr/opt-awsy-e10s: KKzEY4Y1RweAsfC5Zfc6RQ + test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: IXZLQ8GMRMePUHtZ1c7S6A + test-windows10-64-shippable-qr/opt-crashtest-e10s: VVufFjzFTjywAETE_wmGrQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: XcIQs9-wQAuw-9UYOy3m4A + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: Mih54YSrRvWN9qTl2BcAbA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: Gs_Tn4LbTNSZy8fLee5urw + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: dLKFYz3GSoq-aduuNye0UQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: dPHfKNnqSWy5ZYQWsWgyxQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: HhdtNMpGQOeN8JALgSbrrQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: WcVWw6X0QYCI_Tn6lyB8xw + test-windows10-64-shippable-qr/opt-mochitest-chrome-gpu-e10s: cnW6DeR6T_KwAIU3pPF-Gg + test-windows10-64-shippable-qr/opt-mochitest-media-e10s: CsK8yLHpSbu_4KLuNeRDqw + test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Gb7GGha4T6usidslofjKlQ + test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-1: et7QaTE-Q_WRxoLyE85P_A + test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-2: RWWOHwphQbGebh2zq2PNRg + test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-3: JLDAqAizR_aVOTSpeqRLBw + test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-4: SXywcnXYQZ-dm6Q5iiUAEA + test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-5: IBITtoiXQDuNP_nnIWwNsw + test-windows10-64-shippable-qr/opt-mochitest-plain-gpu-e10s: T9levs0CRy6henXSxYKEWQ + test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: PmH71jrwRP6TOVjE_toqqA + test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: QL44CfhJRPOfy_hBcRIl1g + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: Kj1IfmbrRCq6obcKXzgLtw + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: G94KSi52RLyWUE9UKbWb5w + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: FGWsxw4UT8KPu_Q3m9hZsg + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: LS9T0iewQn2EoXxVpdN66w + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: YiLZee8QSF2jQVQojntL5g + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: X69G-AVGSomiBFn1KtgdWw + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: UD8_9nFVRouaUngp77w24w + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JB7rZH5-TJaMCV9EBuZZGQ + test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: dAOZa5_-QfWTIco4WMFOZA + test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: XMLfoZcIRTK5O857YIqDTQ + test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Hkg-t8w-S5mUiyhUlHfwtw + test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: T36JNjB9QxO-6bM02z0d1w + test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: D20qQ4Q3RkqfIxu2RNMDQA + test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Vfgh2oQDRVSWGuCR63saug + test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: VCjHhYFYRm6B7DxguEHSNA + test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: dahsFHIYRoyPNBd0JA_rPA + test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Cns5YflmQVu5oS11GiSgeg + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: KrzNzOAWSAOYKM4Qs_7UGw + test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: EeiB7LVJSjqlnPvagWr5PA + test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: SJU7ZuXKTiSqYpT9ad1ZHA + test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: MOHINw_KQF6VroZq0J2Gkw + test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: VIOwVu_GQqOdI-AH5fMXxQ + test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: few-p6OMS2KLa8FsqYKXQA + test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: e0sgOpleRYqkpxpUsujZ2Q + test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: aAth3XztRhemzGp6evT6rg + test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: dqURwyjsSqGr8lasJoftHA + test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: dyeUBK2MSOaXci9qc-ebtQ + test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: WFDzwsZNTjm7UnH5D5eQyA + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: IsBho0hTRdCSziHCmaIKqw + test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: ISJFfW1kSZSrDzWtjNxpBg + test-windows10-64-shippable-qr/opt-raptor-tp6-31-firefox-cold-e10s: IqhexAE4QFi-8U3BqA-qrA + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: GhTtG6HuRI6xVpp6s_rlrA + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: Mju0RfuET1OmUtQzJNuWqg + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: XIWfquQ7R3SQQUnAtAmi-Q + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: Wy-vnGYESGCTZFlYrsP6Fw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: bP1fxj3kQvSP_Qb9iR1eVA + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: WEn3s5iwQQmhW0yPSMbv_w + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: JNwC43jERaO5d-G9Q4lTgA + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: agoPn2XsSCax6uNOA1uuIw + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: DL2LyC1FTimXTk7rssGfFA + test-windows10-64-shippable-qr/opt-reftest-e10s-1: S_9GSEF3RaKGeAZdVO2rjw + test-windows10-64-shippable-qr/opt-reftest-e10s-2: BdbrxjMmQZiFlC-7LXEd2Q + test-windows10-64-shippable-qr/opt-talos-chrome-e10s: XEhx8onUQ0qtOgRLWUe1Ug + test-windows10-64-shippable-qr/opt-talos-damp-e10s: Byd5MMwFS06_zm8fHVMT9Q + test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: FM8VfrwGTC2gAVVpFkDdYA + test-windows10-64-shippable-qr/opt-talos-g1-e10s: dB0bWwspTs2M-KtV4Q1YCg + test-windows10-64-shippable-qr/opt-talos-g4-e10s: aURcdB5hT8aaxvJqYGwdeQ + test-windows10-64-shippable-qr/opt-talos-g5-e10s: H4o0-WinSbGQCS4iSdId9w + test-windows10-64-shippable-qr/opt-talos-other-e10s: BL1EYp0PQkCg3u5pQIOXNQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: MZXsS1xrSAWoNmn-UMBBDA + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: OqWFWN6NTtm07JAvGGZTpQ + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: DG75SfDuTeKXr5sva5jlFA + test-windows10-64-shippable-qr/opt-talos-svgr-e10s: cF1sobp3Q8KWSIPZetxGKA + test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: YNfBX_nUQ9OIBD-uI1zXzw + test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: Ae2aDXsDQfSK6e8YdfVnug + test-windows10-64-shippable-qr/opt-talos-webgl-e10s: eKeMNuDNRJy7zcjQTOwBTQ + test-windows10-64-shippable-qr/opt-talos-xperf-e10s: UIlClBIFR0WLGfqEjWWxwQ + test-windows10-64-shippable-qr/opt-web-platform-tests-crashtest-e10s: eO8igetfSbOoeicGcdT5sw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: IlBtjziVTGa06tqDWwyp0Q + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: QXlo32OeRTKhqDNNDLIqhg + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: YNBDltrtTFmrYdXMXmLOEA + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: X5XDVPneSPeC66VR39-pyw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: Jy74kM9_SEiVnsAfqJVkVA + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: cPZg_590R7mCV6MEAN8zTg + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: TI703tpaStyY_hZE9FKVXQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: aDugb8bwQ8-lAlK1eGBmNQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: CoSmIxq9TDi41sxxIFPGPw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: Ln6fIBkpRgCmtAwopHgwwg + test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-1: Fh2Hg3fJTLa8rPGHW1vJvQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-2: N97xSUQXTPeLUxWpdb-JSQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-3: VEV0NNHjToOD5qIATr7DSg + test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-4: IvwRt3CNRSixXl48QpB8QA + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: Zgj1NMPOTsmQjoUOVNN1sA + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: BFMDPpuLQKyNfsipaJGzbg + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: HFb0WD4_TnCtTIl46bTkww + test-windows10-64-shippable/opt-awsy-base-e10s: Sndfv5xgSGSE-BKcVpZgLQ + test-windows10-64-shippable/opt-awsy-e10s: EB3NR7iQRaOoNSE4Y8bUZA + test-windows10-64-shippable/opt-awsy-tp6-e10s: SEWlskT5RVCjHEBbhQVw7w + test-windows10-64-shippable/opt-cppunit-1proc: SaDO7knxR86RVHuRirbY7Q + test-windows10-64-shippable/opt-crashtest-e10s: OXCNwnI0QBOpWbKvLrplxg + test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: NfcVR0yfQj6otQH562XPtw + test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: dlXYAaQ-TViYsao_3TFi2w + test-windows10-64-shippable/opt-marionette-e10s: SFtwXOSRSl6HEuf_2d99oA + test-windows10-64-shippable/opt-marionette-gpu-e10s: Qr9r7LK9QEm5baZTn5Ie3g + test-windows10-64-shippable/opt-mochitest-a11y-1proc: E6Qbk0NjQLeqrXwv8tRuUA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: XeNuCApqR5uSc62GJD5c5w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: XmriDxRgQ7uvqDMjbhH3dA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: EDTS0HskQkOJCGZQBm3FlQ + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: LVLNfgv2Smy_AYhT8MXuaw + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: ZLdZ4ZnESg6hiWJItL8hHA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: Bdmq0DFHRg2NDAYPhWQ_Vw + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: Y8ziM33HS9q5WdcQCI706g + test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: FWhl3_2QSfOtaUJZLmG3GA + test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: eORKlt8IQ7y1COwvTrElZg + test-windows10-64-shippable/opt-mochitest-chrome-gpu-e10s: DGFUQyhpQo6Dy7Vomf9f3A + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: Dq4_Sd58TuG4UHtxQTvVmw + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: MeuDLw1wQB28wlzMAv3sjQ + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Sc-SObw-SO6gi_jDMO1QVA + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YgZBNxTmTLKNoeOJn7zStw + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: AdIqydAHQPCX5t7Z_NOjHA + test-windows10-64-shippable/opt-mochitest-media-e10s: axc3v2h7SRK5DM9rQESRVA + test-windows10-64-shippable/opt-mochitest-media-spi-e10s: DsmRHJdISHOUGmUVJ941Fg + test-windows10-64-shippable/opt-mochitest-plain-e10s-1: RyPUgvaxRDWY9RuJrcsYOA + test-windows10-64-shippable/opt-mochitest-plain-e10s-2: Kqb72CeCSaKsyMmCkJGLMg + test-windows10-64-shippable/opt-mochitest-plain-e10s-3: S37wzaO2T_KbGqW1ujQsnQ + test-windows10-64-shippable/opt-mochitest-plain-e10s-4: AjruxelXSfaWpQ41WSXxnA + test-windows10-64-shippable/opt-mochitest-plain-e10s-5: fRMD2S21RwuLBsxMg8b0Aw + test-windows10-64-shippable/opt-mochitest-plain-gpu-e10s: XLZrG6O0RS6_lXjA0XMkZA + test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: ZRSw1OlmThO-xJmSerYGrA + test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: NpylWvLGTJiYsPITxG0bHw + test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: AlHpRV2FTEOpZOL9B6qwSw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: S4-PletIQAOZJ0YHhYw_Ug + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: UblV5zE6R1mvbfPazqj-UA + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: QnzmDSHeStep1H0_vCkJxw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: TDrIE5ZSRVmF9jEnutb1GA + test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: Ypvp3pmuTrC9qrosKIXgPw + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: SAlnye6XTmiWAcXkglhCkw + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: NUw3ra9hR8iQk5Imi9Q7WA + test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: VALKB1TOQhatc8UEbzh7_w + test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: Y6HbzLEkSrqXMFqEe_KqCg + test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: HHo5aB0hR8ajmlqGTcavFA + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: E_bjUO2ySOmdUw6B2SK7kg + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: A7L0NKQXTdubBe5uVitm7w + test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: IVus63RAQICNZ2rZLuFxAQ + test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: eaFS2MPORZa1LdVtDStsFw + test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: dPFYRy3qTAO9VM4kLgZcAQ + test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ECCfsLY-Q4-I739VZIFzYw + test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: IRZB6jwsTaSW1C8tnJd5XA + test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: VJX_DmC9R3WzqcNSfvlt3w + test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Ag5sgkzpScWZWAB6kX7kCw + test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: MklsU9-jRNKCAQKAxz-sFQ + test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: AuGDj-wzQCW3TSxqpuE3wg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: D93bpAS3Qb-P_iI5lOSNEQ + test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: e3G5nsfdQgGpXF2yxmxARQ + test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Ckjhb3f-T-6hXumlsWuZ-w + test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: ZlPhgwRoTO63HMUk3k83uw + test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: ObU3WoAGT9Gporg2-SBkvQ + test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: EMo5uOFOSTea90xJ_c28-g + test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Xuf4XJR9QdOwlJhCyLzwoQ + test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TaRzqOZxRAmjcQPTroqKDg + test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: bfuc7EuDSPmAyKk1OiZm4A + test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: KqULAiWVS2KcNJToP3taog + test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: VapQvsc3TD-f5wmNnhBYZQ + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: Nh7hqkaLRV2V4W6YnUYyug + test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: DMkGLFbGQeuEQ0Q093Clfw + test-windows10-64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: M-QtAevQR9y9KsBPmqWTMw + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cidsVfoQRJSd_YjO_UkNbA + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: U4g-V93GS3WtveUMtg2oHg + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: f496w8-hSEykwrgMqRQulg + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: Wic14INASwun_RlfttZUYA + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: KufRzZt4RRienthAZrymkQ + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: CDsqz8p0SgKR0aFIL9tbfA + test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: cGm_c845Sh6AD--EiRf4Wg + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: ebWoYeFLR_2DTL_2BoqT7A + test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: bDx8OzEOQ2-7qf-lVmQAAw + test-windows10-64-shippable/opt-reftest-e10s-1: RxSpCKlcQJ-oXAVC85HGtA + test-windows10-64-shippable/opt-reftest-e10s-2: HjAP0z4rTbKa1II68Xu0jA + test-windows10-64-shippable/opt-talos-bcv-e10s: TSLEoYVoTAiv_FyTi704Xw + test-windows10-64-shippable/opt-talos-chrome-e10s: aYowQsbvS8ideXnUoCqAxA + test-windows10-64-shippable/opt-talos-damp-e10s: ZH-8KjqWRq2GsnlaCFlMxA + test-windows10-64-shippable/opt-talos-dromaeojs-e10s: Z7u3NGdOTOW6mNI1WoBikg + test-windows10-64-shippable/opt-talos-g1-e10s: VHdffzSuT-imdaWDuwSJfg + test-windows10-64-shippable/opt-talos-g4-e10s: a4_iaLtISN2exy_Et56nEQ + test-windows10-64-shippable/opt-talos-g5-e10s: TtzmsZ9UQAmhaSj84RGe5g + test-windows10-64-shippable/opt-talos-other-e10s: cOgc6lIcT4SIgFsjwkOHmw + test-windows10-64-shippable/opt-talos-perf-reftest-e10s: Y-shJAXwSeKhsf3w0hI1SA + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: YzK5XKFWRpqBRX8i250Mqw + test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: JwqnAOxZSYOqEA5HGBRJUA + test-windows10-64-shippable/opt-talos-svgr-e10s: TdJ_OF-MQjyqjBHnC9D8XA + test-windows10-64-shippable/opt-talos-tabswitch-e10s: QiDCpAK8QZKD8B3S3Gpf9A + test-windows10-64-shippable/opt-talos-tp5o-e10s: WbPsLxZmR6ymIApjGPqmZQ + test-windows10-64-shippable/opt-talos-webgl-e10s: Pm9smCa0RaOWW6OICLKgEw + test-windows10-64-shippable/opt-talos-xperf-e10s: HbDhCAkQTceYQVW5ghEBfA + test-windows10-64-shippable/opt-telemetry-tests-client-e10s: LhR8UYNARIO_B5KF2eSnTQ + test-windows10-64-shippable/opt-web-platform-tests-crashtest-e10s: PGzXXmv9RUus4fY4xJi4eQ + test-windows10-64-shippable/opt-web-platform-tests-e10s-1: dNEJQY0hQRK0KcIUTOY38w + test-windows10-64-shippable/opt-web-platform-tests-e10s-10: VzSspFb7QRG70nXq3aCGkA + test-windows10-64-shippable/opt-web-platform-tests-e10s-2: IpULg4nmS_6RhjZNc5fxsg + test-windows10-64-shippable/opt-web-platform-tests-e10s-3: C3aeyA9vT2qNNsb2DEPsZA + test-windows10-64-shippable/opt-web-platform-tests-e10s-4: JjSZr-kwS8mEXQ1uMBLaeQ + test-windows10-64-shippable/opt-web-platform-tests-e10s-5: L-4OiTooSmWvd4yCcsvnQg + test-windows10-64-shippable/opt-web-platform-tests-e10s-6: MrdPsmwAQKOEhI1p69krOw + test-windows10-64-shippable/opt-web-platform-tests-e10s-7: DotTXLsMTR-TonZ2mcl7jA + test-windows10-64-shippable/opt-web-platform-tests-e10s-8: WrssrAXwTcWcJx0MAHFoCw + test-windows10-64-shippable/opt-web-platform-tests-e10s-9: cAv-LjSFT5CMxBDG28jKNw + test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-1: ZRyUXR7sS_WboLgX28Bd5A + test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-2: KupFds0pQueuUNbzOkmcQw + test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-3: Vr3pghhzRSa1PTU-9nEK9Q + test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-4: PIrDfiRTS-eUUYO8my-4Qg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: B9Y1VAkeQsadeSxY_uq0pw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: e8L5sm2ETFO9I3D6L9n9ZA + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: MYkuwQ2jQHeJuBW596BRVA + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: f2dLB0RIQpGK0NLSwgL6rw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: CrV0u18oTZayHJDjpG05gQ + test-windows10-64-shippable/opt-xpcshell-e10s-1: L9r-GZi4SMittJHM2mx5ww + test-windows10-64-shippable/opt-xpcshell-e10s-2: eEoJutxGSuG-sCtQWM_YbQ + test-windows10-64/debug-cppunit-1proc: ZFU0k4hIQvCtGVaeZGTe-A + test-windows10-64/debug-crashtest-e10s: Zsv1AgALRwWYv2MYbhaegA + test-windows10-64/debug-firefox-ui-functional-local-e10s: MjN8X1EGSdeHNyhBoTwStQ + test-windows10-64/debug-firefox-ui-functional-remote-e10s: c5Pzfd2nSqKn2YGtzVAaoA + test-windows10-64/debug-gtest-1proc: KixrUZOJQoa73BDrkwKkQw + test-windows10-64/debug-marionette-e10s: XAzJ_sCTRSOfxHr30hnYKQ + test-windows10-64/debug-marionette-gpu-e10s: Ux1S1LqFQX6ZiTR6tD6-4A + test-windows10-64/debug-mochitest-a11y-1proc: Pme_mqALT2a_LONPJCSVsA + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Mwb1W3CrRZmjZZ4GylWlmw + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: MReoeaSQTwCjDHE_1CTHzQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: MTxo_DAHTReejStlmB_mBg + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OqGxGnJcSiuz_bGEp05Wnw + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: GyqvJyPMQPC92sxYbY_T6A + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: GHjvbeFXQJKQCoVqcI8Slw + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LOyfdC4gR0atVTbd-AGDXg + test-windows10-64/debug-mochitest-chrome-1proc-1: eTiPQHPSR_G5jRJz5iG5mA + test-windows10-64/debug-mochitest-chrome-1proc-2: XbkEoyFdQ2SiKkJahNBSUA + test-windows10-64/debug-mochitest-chrome-1proc-3: T7J2BnusTi64tmzPqnXWjQ + test-windows10-64/debug-mochitest-chrome-gpu-e10s: IGbnNE8mRvypYWpvVpXxMw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: TI9wZ60tQ0WCb546l1oBxQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: KPml1tOORzi5fvYOxaArHA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: ddS8nlE4SJSNnS-WrPz-mw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: GLmdnFQAToiZvbYdNGIpuw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: b48mC9-ySQqNgssyz1682g + test-windows10-64/debug-mochitest-media-e10s: OaC2HNJaTJSc-Qzs1oCEPA + test-windows10-64/debug-mochitest-media-spi-e10s: Di8wr1hdTjWbAzPCni43JQ + test-windows10-64/debug-mochitest-plain-e10s-1: fKIGgZd2QRSyA0iAipi6dw + test-windows10-64/debug-mochitest-plain-e10s-2: CGfFJ6X4TBiskfXkWiJDWg + test-windows10-64/debug-mochitest-plain-e10s-3: UJcLxDlZT3OfN75N_Kf9HQ + test-windows10-64/debug-mochitest-plain-e10s-4: RLgqxXL9R8eSSXoHcMiXqQ + test-windows10-64/debug-mochitest-plain-e10s-5: L5pVIpgwRQ2cDtc37Q29rg + test-windows10-64/debug-mochitest-plain-gpu-e10s: GmpJ1copSguDsBn2T-C-dw + test-windows10-64/debug-mochitest-webgl1-core-e10s: LbLtJVGYSVyD2VBVAwg29A + test-windows10-64/debug-mochitest-webgl1-ext-e10s: ZWrT1DBKRtaZbmH7VeHRpA + test-windows10-64/debug-mochitest-webgl2-core-e10s: dl_rG8G0RryVOvkb9szYXw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: dJ2Mm0mFTq-TcGpmDHMrRQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: ZieEvAoMQ3ixQ8T0H0KxBQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: exjV5n1eRt6caP0NRviCTA + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: BaeRYI6hQTOmx37HRtBWSg + test-windows10-64/debug-reftest-e10s-1: aQ1KwtMcSW2X1-5akLb8wA + test-windows10-64/debug-reftest-e10s-2: QLjuuNGrSXqIeOr8ar9y3A + test-windows10-64/debug-reftest-e10s-3: fwUghV7qQRi55Rr_K86Pxw + test-windows10-64/debug-reftest-e10s-4: E7PdChtXRgmH3I9bfjNuzg + test-windows10-64/debug-telemetry-tests-client-e10s: Lre1x9jtReyO1c-KqAeJyg + test-windows10-64/debug-web-platform-tests-crashtest-e10s: aKts4uikSMmXN_m7EDmYMw + test-windows10-64/debug-web-platform-tests-e10s-1: VQiYXfx9Q3KrtG-8lyOalQ + test-windows10-64/debug-web-platform-tests-e10s-10: At0H0hTuRDOnsF6FW-lG-A + test-windows10-64/debug-web-platform-tests-e10s-11: V-h4LlrUQXyonz7S17Aemw + test-windows10-64/debug-web-platform-tests-e10s-12: F9Uu-4orTBeTFK6pcNXJ0w + test-windows10-64/debug-web-platform-tests-e10s-13: eeQUrbzCRb2aFYfD5PlZhw + test-windows10-64/debug-web-platform-tests-e10s-14: SWHD0HsoQ02gwsofQQtLJQ + test-windows10-64/debug-web-platform-tests-e10s-2: aR0OhFxOQu2bggCmJo0lKw + test-windows10-64/debug-web-platform-tests-e10s-3: HtxwMWYbR-uD9yokFSYwzQ + test-windows10-64/debug-web-platform-tests-e10s-4: G66tGRSXTASYILHIOSsXmQ + test-windows10-64/debug-web-platform-tests-e10s-5: KC6cjG8jRGCJMeSda9TRiQ + test-windows10-64/debug-web-platform-tests-e10s-6: d5pDghWES_aEUj61VL_o7Q + test-windows10-64/debug-web-platform-tests-e10s-7: SBDqsDZCQxKD5ahzITbdqQ + test-windows10-64/debug-web-platform-tests-e10s-8: A_bMjplOQMqkhXBT4FkOjw + test-windows10-64/debug-web-platform-tests-e10s-9: TdSpV8V3RmCdRomJnihySQ + test-windows10-64/debug-web-platform-tests-reftest-e10s-1: aXoJgoSNSau5BoX6nYgGKQ + test-windows10-64/debug-web-platform-tests-reftest-e10s-2: YBIl-JrDQy2mCNZQkC0UEQ + test-windows10-64/debug-web-platform-tests-reftest-e10s-3: eCK-oBSRTVC4UTlH3GakFQ + test-windows10-64/debug-web-platform-tests-reftest-e10s-4: Bz7IUifIQ7mD9ySWAiWj7Q + test-windows10-64/debug-web-platform-tests-reftest-e10s-5: Zr5yTBOFRnO5NlJ2j7gcZQ + test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: dFNCl-8VSq6mIPdaqFGrfQ + test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: A4L7KEuFTWikrwSaFmaTLw + test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: Taofh42QT4KJzqApkR_d-A + test-windows10-64/debug-xpcshell-e10s-1: Iuo98Mc_SsmnoQgFtBuHjQ + test-windows10-64/debug-xpcshell-e10s-2: WFqyplWCS36q0tRe0OhKzA + test-windows10-aarch64/opt-crashtest-e10s: BreHkxZKS1CXXOMgu2yWgg + test-windows10-aarch64/opt-mochitest-media-e10s: L64_LU7EQQWXBSpXy64dmA + test-windows10-aarch64/opt-mochitest-media-spi-e10s: dWRls29iSfe9DgVd1ecT7Q + test-windows10-aarch64/opt-reftest-e10s-1: cRBZs3ksTm6sDrudBR17OQ + test-windows10-aarch64/opt-reftest-e10s-2: ZMen6TkKRTK_rhlvDg5zFw + test-windows7-32-devedition/opt-cppunit-1proc: WzdxaH6URVyfFcDApCYAPQ + test-windows7-32-devedition/opt-crashtest-e10s: LnWLcYacSeib-Ct_6i8f7Q + test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: QJ1iytKvQeaSc99wdQVBzQ + test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: WuNT1nj-QmGhcn9bxtBLRg + test-windows7-32-devedition/opt-marionette-e10s: P45d-_j0Ttu8832xS0mM5g + test-windows7-32-devedition/opt-mochitest-a11y-1proc: bsnqmMnVQ5q7SgYyZiwuWQ + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: auw1CMpdTjCAkVW__9o8CQ + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: LVwfGCqaSH25CCXdPbYtBw + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: Fx4XO_B_QlO7_4YdiJbmLg + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: ceHUZGDQSRi8JCXvY33sGA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: DjqTxi8aQsuBZThpBUStOg + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: bzplY_tlRi23VpQX_Fm_Pw + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: HZoZBJesRW-FFLem7EWIqg + test-windows7-32-devedition/opt-mochitest-chrome-1proc-1: VmNuY9ZUSpSfa5ytDN0-Mg + test-windows7-32-devedition/opt-mochitest-chrome-1proc-2: KG7wYXtvT6i042g-72p8IA + test-windows7-32-devedition/opt-mochitest-chrome-gpu-e10s: DLztPR0XRquJEjEQmNGzaA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: LMHNBvDsTPi2jpehJqC_-g + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: JQQt2d-QTKGMMMH5t296eg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: M-ZlYhvwRfSpcz8KRT5qDg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: U0wD3fiyRpqVyx_M-J_JNg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: Wlp5wFvaT6aA4zWzKDq3KA + test-windows7-32-devedition/opt-mochitest-media-e10s-1: U-Df86QISHKEUIhLQUatIg + test-windows7-32-devedition/opt-mochitest-media-e10s-2: WxTLsBIESqW7xAO8pLqbjA + test-windows7-32-devedition/opt-mochitest-media-e10s-3: VqbJqZS4S8OE1yTQnBaAPQ + test-windows7-32-devedition/opt-mochitest-media-spi-e10s-1: d2LiIjyHQjK30X8gSEQ-NA + test-windows7-32-devedition/opt-mochitest-media-spi-e10s-2: cxiCRWajQQ2nV7TL8F8KAg + test-windows7-32-devedition/opt-mochitest-media-spi-e10s-3: IR-d736-SYOa75fQBet1aw + test-windows7-32-devedition/opt-mochitest-plain-e10s-1: Y79U0lUlT-Cp3ruQ5QT-lQ + test-windows7-32-devedition/opt-mochitest-plain-e10s-2: ENsCg6WhTr2vZAGxB538Fw + test-windows7-32-devedition/opt-mochitest-plain-e10s-3: QYRvy3PTR-SYer6lPxOBJQ + test-windows7-32-devedition/opt-mochitest-plain-e10s-4: bxihiYItRCqcIn3dHyPsAg + test-windows7-32-devedition/opt-mochitest-plain-e10s-5: WPRP0QfqRsWHbFijzKRJNw + test-windows7-32-devedition/opt-mochitest-plain-gpu-e10s: Q1OqiOPYRe2CQ0P4e6rDIA + test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: K93FzJfUQ_mkTx93aW6SZQ + test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: BbKUudmQROqpIhcq6pjo8Q + test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: CQWXw0w8S_-I1pBAsca1wQ + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: CYZD9znVTyGUZLZ3k50prA + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: K9EuKzlDSa-JSw1LZAZ2ng + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: BAiRgI1lSvWCddq0gZUk0Q + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: AB2LALzsTSSDpItTdLpQkg + test-windows7-32-devedition/opt-reftest-e10s-1: KsNFthcySm6VhSGigRRj_w + test-windows7-32-devedition/opt-reftest-e10s-2: OFpUuPCtTBSHianAEzvHDQ + test-windows7-32-devedition/opt-reftest-gpu-e10s-1: KFyHLIvsTFKPmF3z2OdSJQ + test-windows7-32-devedition/opt-reftest-gpu-e10s-2: WgFeWja1RDm_EOabpO_TDg + test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: II96LR0NQuCTMN37Izk0cA + test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: f3BDnVpdRTyHxLuja-Re5A + test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: EkpI-OIRRD26t6GZBaiT0w + test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: WlItS-V-Rgij_h31Hf04GQ + test-windows7-32-devedition/opt-telemetry-tests-client-e10s: H7IFtmDJRf2O-DQuj9cKtQ + test-windows7-32-devedition/opt-web-platform-tests-crashtest-e10s: aLe5F9M6SnOBR6Lea0dFcA + test-windows7-32-devedition/opt-web-platform-tests-e10s-1: I773kIYVRxmlq93_zuAMiw + test-windows7-32-devedition/opt-web-platform-tests-e10s-10: UJQdMv9NS8W4AIuFRmXArQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-11: HqUJiW3hQTaXtoSHW6k7AA + test-windows7-32-devedition/opt-web-platform-tests-e10s-12: F7vf-j5aSRq-pv-v1KQ5Rg + test-windows7-32-devedition/opt-web-platform-tests-e10s-2: BecyFqgrRL-wkSZ4p6-56w + test-windows7-32-devedition/opt-web-platform-tests-e10s-3: RcQafNQxTjWbGR5U52fDFA + test-windows7-32-devedition/opt-web-platform-tests-e10s-4: b7cBTtUzQtevhcSV3jOotA + test-windows7-32-devedition/opt-web-platform-tests-e10s-5: CiGXtygeRTGVbr1SYVRdPw + test-windows7-32-devedition/opt-web-platform-tests-e10s-6: drBcN2-8QD65Nen-Jee1QQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-7: RqyqaW1_T0WE049RMCdtjQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-8: YNdeirnyTxCyXcmhTe1dlw + test-windows7-32-devedition/opt-web-platform-tests-e10s-9: aCyoc2r6SKCjj6YkJkzAzw + test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-1: fbcs9IgaSRuUkqAE9jYsqg + test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-2: OoWcr7HVS-GT4dD7kZ9KGQ + test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-3: Tp9lHXVPQd-DcMfkgotDzg + test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-4: WYEin87GR76x_bOvyRds7A + test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-1: VpS496_tT0Wu26FgO4Prdg + test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-2: cvx2mDe4QKKgl5AJWntjdA + test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-3: FoaxzdFjT6yHEJuK0QFQuQ + test-windows7-32-devedition/opt-xpcshell-e10s-1: Am5JOp_oQDSvZ-bNaHx4ew + test-windows7-32-devedition/opt-xpcshell-e10s-2: WcsPpdJES9WDB4wYx1EdGA + test-windows7-32-mingwclang/debug-cppunit-1proc: PLwVeevJRlyYsnTc69oaDA + test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BW4dog9sQySqMnptEegOjg + test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: LJdQnykbSMqBA-RbdDapgg + test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: IvTwxni7QYepQJzb-mrCuA + test-windows7-32-mingwclang/debug-mochitest-chrome-gpu-e10s: D6HIFsJRQjK-sAaCfWrmrQ + test-windows7-32-mingwclang/debug-mochitest-plain-gpu-e10s: IK9C31YnSu6fhg227XUtxg + test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: VCrAXgvgRpafKrml66Zsjw + test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: azeBR06uRpixXgPSMYECxw + test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: NgLmje5SSkup1FO4ojb1tw + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: abDBsgnMSOuRwUTeOvgMFw + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: TJBeBMqTTIKKr0lm81uV7Q + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: YEm64Y4yT4G-0tVenT7lIw + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: fLjKa-upTn-9WIHqSQGbnw + test-windows7-32-mingwclang/debug-reftest-e10s-1: KVngIkQyTLeA_WVhX9cfMQ + test-windows7-32-mingwclang/debug-reftest-e10s-2: X-mak9jdQ2WLwN6hxa3N_A + test-windows7-32-mingwclang/debug-reftest-e10s-3: L7DHH2SsShmw-hYS2c0OjA + test-windows7-32-mingwclang/debug-reftest-e10s-4: eS9KMIwtTgiEadrWCCv1mA + test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: EDL-VxDpRr-kPvqKtBhLGg + test-windows7-32-mingwclang/opt-cppunit-1proc: UjJvAb0JRGu9OMBr5zycrQ + test-windows7-32-mingwclang/opt-mochitest-chrome-gpu-e10s: HpaphwCWSf-CAQEGhQAhrQ + test-windows7-32-mingwclang/opt-mochitest-plain-gpu-e10s: fDbQGwpJQk6oEomnyBXSIg + test-windows7-32-shippable/opt-awsy-base-e10s: Xiis4PAaTw2AZr2v5U0-Iw + test-windows7-32-shippable/opt-awsy-e10s: fXYbGAaCRC-UyUGLkmW4KA + test-windows7-32-shippable/opt-awsy-tp6-e10s: SvanE1EKRIm_MkfJHD_8SQ + test-windows7-32-shippable/opt-cppunit-1proc: HTlC4Z-2Q7SlZ_wthW7Zhw + test-windows7-32-shippable/opt-crashtest-e10s: e0PyN3HDQOKUPRktB0rDvA + test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: Uzb2dLaVTPGc18SpN4YdLg + test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: Z_Ft1HfBSdi9UjTvwpDU3g + test-windows7-32-shippable/opt-marionette-e10s: IXDPQeaCT7iCfLPi-ilbEQ + test-windows7-32-shippable/opt-mochitest-a11y-1proc: PUyjaNWmRGyIDtm-BszQUA + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: VEZjsxivQpKJ1662_8YyXw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: W_Li23PlRfG9WyrXMwEe7w + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: e6yZmMn5SIyGDZImCZRF6A + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: EsoPcLaYSQ-RXDUdHgA5kw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: acc1bIECTAquJ_BqWmn7yQ + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: N_LoCHuFQ3WyU3o8EtqA1w + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: ff-cL7qvT9yQ0uCh2bmwlw + test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: ZcpkI7DOT2281UfD8IKH0w + test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: ecD_rQ59Sv-4EfUwIod4kg + test-windows7-32-shippable/opt-mochitest-chrome-gpu-e10s: bIR9T7fYQBqepHJIqhhdLA + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: WQ6WU30UQ2WMKT3LNWMHZg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: Ws25QitoSbyPYJYMbRrSTg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: Gm7fsTPVRgSUZ_QShjQGDA + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: aGVEC5WIS2amZEWNvO7Nfg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: K1zBb-UITmOeb-HmOHhHRg + test-windows7-32-shippable/opt-mochitest-media-e10s-1: ZDnZA1slSQmiHzKohJHaOg + test-windows7-32-shippable/opt-mochitest-media-e10s-2: TNhBlT0kT6-zg0ViHX-wSQ + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: J-bozeN1RGaBhn_TtleFHA + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: YxD62qrfRNyU7fkLdWRkyg + test-windows7-32-shippable/opt-mochitest-plain-e10s-1: CkNWJj8uS7iKQ8z_xf6_vw + test-windows7-32-shippable/opt-mochitest-plain-e10s-2: DoWrXV2sR4yA_xFXx2EkfA + test-windows7-32-shippable/opt-mochitest-plain-e10s-3: SbYrDu-wQqikIRBuK2FyFQ + test-windows7-32-shippable/opt-mochitest-plain-e10s-4: SgpEopNGROyO50349RmLzw + test-windows7-32-shippable/opt-mochitest-plain-e10s-5: ansO0Cm5ROi-qcP98MOixw + test-windows7-32-shippable/opt-mochitest-plain-gpu-e10s: dnkMTAzCSPaahlDwesSV7g + test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: WzNIyFlWSee2HpBAr3Va9A + test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: Fjc05ovDRTWmjrDg9780WQ + test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: OwP-daRQS-itSONekj-Wvg + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: O57K2itjSeyvsVYr-n7Mgg + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: Ypd8_b35R1yx_qVLFBLUUw + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: PvqoyF3rRUeN5TDaLUYjog + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: buV-jqsjSTykoFiu9r51EA + test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: EBFf3YfNTSe26c5VbeiHmA + test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: L1ywfQmzSbysAyOIsbuOWQ + test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: LXrL_G24QmKBgtEcWVmqsA + test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: ZuDH5pMrRMWG3zjsLx4QsQ + test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: NIcZMKG5Qfm918M9-QiHmQ + test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZlBYe4o4QiO9xvjQyYV4hw + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: dP47glhgRL6FlK7rdGIhig + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: H9039fErQOamwR2PmIZ7mA + test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: bC2ybxelRwGB8EXi00fRnA + test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: WIVGkbB5TW2rAsL414BKXg + test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: bx9H5SBQSairStMYjyroSQ + test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: bFR77EM6R26OIby958qbwA + test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: RLG6X-vdRmGWdsBWysL5xQ + test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IY2JDzKHSqS_Eh9G7r28bA + test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: HleHrKjyRjS3rqqWFCHYWA + test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: a_xa10sxSuuvm047pXHd2g + test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: XAxyyh3iRPKRJ7pflNgDXw + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: SZ_mO03ASyWC5qq5YQtDsw + test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: RPfGTbi9Qb-qmrDPibSXZw + test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Q1ZZsi4jQ8ew2d0Xq87T_A + test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: QQl5XpKHRaGSDn4Mn_Vkng + test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: Vh2_RLmxRyGonbYP-NBd9Q + test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: Q91GqYYUTfyIuTCQe9geOQ + test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: R3YB1RaPRBK3LcCpAkyUaw + test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: exXqO8B4QS-TNteQS7TSTg + test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: PIyoZunNSt6Bi63AW1iZ-g + test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: RxTBr_L2Tr6SshBBz9dZ_Q + test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: bK44ABsVTzO1qGHEXptigA + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: KzyyNkacROSqd3FNywcmlw + test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: bDvi8K2iSp-uvcd8-FnOxg + test-windows7-32-shippable/opt-raptor-tp6-31-firefox-cold-e10s: WXpo4Bz8QkeIoiuKC0DXaA + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: JJuCr98lTGK4BMCJMcT6iA + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: DCeXMr32QlWOpRa2uoHzvg + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: LhICxmbGRJGxPVtuzFmh8Q + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: SFuzXgPITBSIxbjJ5xSzfg + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: ITd9B6_YQEiTZfydOQqk_A + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: Vrk6_WhnRBOid3NBefjb9g + test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: elsXEyQsRb6z8ynEWac-zA + test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: MOrpeQb3QZuHwlCWrVE-wA + test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: FzqSNiD0QveLb0wzSIk3Cg + test-windows7-32-shippable/opt-reftest-e10s-1: fuxznwI5S32W93AWThNmAg + test-windows7-32-shippable/opt-reftest-e10s-2: Uj4emlBcQL6SEwNWXg2oGg + test-windows7-32-shippable/opt-reftest-gpu-e10s-1: Gy6cN9GUSzGt5rKRr-V97Q + test-windows7-32-shippable/opt-reftest-gpu-e10s-2: ZytoBH3jT0yEOjcKvnIOEA + test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: HaeYjdBTT1SvPwDcaCJxJA + test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: excmNnCtQmONRgNcqjyRqQ + test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: XQf1EXZfTCaMxjZOoJbg6Q + test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: fVQ5CVkQQ1eDTBN0HZvDtA + test-windows7-32-shippable/opt-talos-bcv-e10s: Hyc9Pbm8SQSw-aH9HFgIOA + test-windows7-32-shippable/opt-talos-chrome-e10s: IfduGmLITPm5GJ2UCm5jsA + test-windows7-32-shippable/opt-talos-dromaeojs-e10s: NhT1AfidTJ-84pncFdlUDw + test-windows7-32-shippable/opt-talos-g1-e10s: GCW3wPHrRQ6B4v26k-CAmQ + test-windows7-32-shippable/opt-talos-g4-e10s: OajNAqEPQ_aXiIfYzjTN-A + test-windows7-32-shippable/opt-talos-g5-e10s: Bug1FpXSSBu5kX1fgVPYNQ + test-windows7-32-shippable/opt-talos-other-e10s: AT80uBcaSdy8aiD3KlN69A + test-windows7-32-shippable/opt-talos-perf-reftest-e10s: CexDsXacSrygffHtc4esVw + test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: MKosNQEXSAGDHeyGol80TA + test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N5rvY_fJQEW1S1sDxBSCDg + test-windows7-32-shippable/opt-talos-svgr-e10s: b66HGXv0TOOPsEorEXcBHA + test-windows7-32-shippable/opt-talos-tabswitch-e10s: Gs2waHS5SqWZXaqyVYNjnA + test-windows7-32-shippable/opt-talos-tp5o-e10s: AfrcSNrZThuHkG08rVDL_g + test-windows7-32-shippable/opt-talos-webgl-e10s: Ae64ATIZSfmFGPXPaeWHVQ + test-windows7-32-shippable/opt-talos-xperf-e10s: JJpjyjweSKCm0-cagvDCOA + test-windows7-32-shippable/opt-telemetry-tests-client-e10s: aLpml-2LRMaPbCPxkvY-hw + test-windows7-32-shippable/opt-web-platform-tests-crashtest-e10s: ZIk5yGESSxyV6P7Uq6C-9w + test-windows7-32-shippable/opt-web-platform-tests-e10s-1: WTk53OyJT8SZtc9KywjHvg + test-windows7-32-shippable/opt-web-platform-tests-e10s-10: eLkZUWBGTpGQC6V6wOX4sQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-11: UVtFLc5dTNmBaKgjLtA5-A + test-windows7-32-shippable/opt-web-platform-tests-e10s-12: cgiY7rGiQuCI-QAL9v2q-g + test-windows7-32-shippable/opt-web-platform-tests-e10s-2: SjmjHl_sS-iaTlPz8IQcxw + test-windows7-32-shippable/opt-web-platform-tests-e10s-3: Gnna6lDqSIy6C0R4a1XUAA + test-windows7-32-shippable/opt-web-platform-tests-e10s-4: Ao8uPLVoTP6-AbEi6kaFeg + test-windows7-32-shippable/opt-web-platform-tests-e10s-5: NepIyYVSSUe_EA6fgr-dCg + test-windows7-32-shippable/opt-web-platform-tests-e10s-6: ee1jIvBMSim6YyyChOVdRQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-7: UK5Ie7TCQtC_WtSfY4d5EQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-8: DhqfjblVQeCSl3_C0ovCTQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-9: a27FYbDpTXa_eJ3H4KkcBQ + test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-1: O4RKWU5gQUm8nrO6KurSAg + test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-2: EOrKTdQHTE-TGf-GoTyGfg + test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-3: WN3SOExgQUOBhd_h7bOz0A + test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-4: b9pVzxXESq-V-gxP2Rq4fg + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: ZQ8CQRshT5iNfSnQMQ7BBg + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: bQIQJOhoSiSDhzF-pHsQRg + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: RTgb4k-LQDOeFJO1l-tWXA + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: fOL77J7nTkGueWoeZt3Mqw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: OZQpwmBUSTWFlB_rUZuyUQ + test-windows7-32-shippable/opt-xpcshell-e10s-1: cO_cxXJPRoSLfGUlu6xGCA + test-windows7-32-shippable/opt-xpcshell-e10s-2: DSdL2HIJRk-kaVFT0iVmgg + test-windows7-32/debug-cppunit-1proc: E5QnMJ3PRjC43blKVYtqdQ + test-windows7-32/debug-crashtest-e10s: VOWniXbQQrq6v7oXwqp05w + test-windows7-32/debug-firefox-ui-functional-local-e10s: XG4winfXQeWqu5g35F2zHw + test-windows7-32/debug-firefox-ui-functional-remote-e10s: DOe87PAARbWz9vkyNRyAcQ + test-windows7-32/debug-gtest-1proc: ITr5uXlSTuO5h4Zh0EaHqA + test-windows7-32/debug-marionette-e10s: AFFZ4tFBTgivLivO2ITKLg + test-windows7-32/debug-mochitest-a11y-1proc: OWAsLiWrRjapqAPH5hm26A + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: AOeVMZHGQzSRcVys3KZ0FQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: blFqx8TfS9inUdKRptzRsg + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: efTqoEqhT3qlAtxeqebYgg + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: e0rnQ0ePRta1G8ahjNt2Kg + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: YjutLB02TFOwwYhZb3byYA + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: OQvIWSeeSbK2dkjV0ZOS-Q + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: P14TObT5SC-0niZ8xfLuQw + test-windows7-32/debug-mochitest-chrome-1proc-1: LokcG5P7Q1Wd4Yh6GkErTg + test-windows7-32/debug-mochitest-chrome-1proc-2: cYur3yVqT2-ED7bflXl6WA + test-windows7-32/debug-mochitest-chrome-1proc-3: Jbz6A-wAQEGfNzn3SwmOvA + test-windows7-32/debug-mochitest-chrome-gpu-e10s: UX7Td8F1QLS4RicQuEDlXA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: Unjrl-psQXGgjtQ2JqxHSA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: bvO4yrCtSvKHTCnPpRalMQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: ePTvdbOpRE65bViZrnBiYQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: LjWMOGK8QRK0ShcAKl0CEA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: d3G8Tl1RRcq7lEnVtVLUNw + test-windows7-32/debug-mochitest-media-e10s-1: ZkMgn9DcTDmfByrp5hl2Sw + test-windows7-32/debug-mochitest-media-e10s-2: S9ndv4XoSu2w3ZQl2ZW7Cw + test-windows7-32/debug-mochitest-media-e10s-3: EbQUJKnaTROKxvo1yFz-_g + test-windows7-32/debug-mochitest-media-spi-e10s-1: XJvh9QFMSweOaNnm70ib2A + test-windows7-32/debug-mochitest-media-spi-e10s-2: VWHhGIFFTMCXdtChYnw0bA + test-windows7-32/debug-mochitest-media-spi-e10s-3: BDcHuuDQQ-6yz-jju8n9Uw + test-windows7-32/debug-mochitest-plain-e10s-1: CsL0jMzFQb-FgDBqYg4fMw + test-windows7-32/debug-mochitest-plain-e10s-2: NoWg6fsOTayY6PUlbZytsQ + test-windows7-32/debug-mochitest-plain-e10s-3: QzcR9tZiRWOV8LigMOPqLA + test-windows7-32/debug-mochitest-plain-e10s-4: FuqpfgznSH6wFFR3VSoznA + test-windows7-32/debug-mochitest-plain-e10s-5: aUtbZD2aRMyFS5DgRbjYVA + test-windows7-32/debug-mochitest-plain-gpu-e10s: Wn_OgzFZQFm0VyJ7P2JR5g + test-windows7-32/debug-mochitest-webgl1-core-e10s: bsJEx-bJTAmUoTCttGccJA + test-windows7-32/debug-mochitest-webgl1-ext-e10s: TP8_8WLsSKWpx3iLzD7BJQ + test-windows7-32/debug-mochitest-webgl2-core-e10s: QV5matHARSSXFdq4MJ4yGA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: RkfqbTDzQi29hjN0X4HpPg + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: Z5r4MxsIQNOLezuX37_sEw + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: E2rQuFMdT-ymi8ouaCsQbw + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: LGMkW2TNTQ2XKtiz4cj1bg + test-windows7-32/debug-reftest-e10s-1: KAF2NhTNQ4eQN-CMxhTXWQ + test-windows7-32/debug-reftest-e10s-2: MxryLWHqTEuIlyx05JU9ag + test-windows7-32/debug-reftest-e10s-3: djGgx9b8QQms618zjGRcwQ + test-windows7-32/debug-reftest-e10s-4: AI-wJvBUSl-LkMZV5-e-BQ + test-windows7-32/debug-reftest-gpu-e10s-1: N3UOv8ZvS2W1ggr_RL7OMw + test-windows7-32/debug-reftest-gpu-e10s-2: XLh-MV62Th6LELeGRBbaDg + test-windows7-32/debug-reftest-gpu-e10s-3: IQD8Ydb1TO6ROBVmpkPn_Q + test-windows7-32/debug-reftest-gpu-e10s-4: ZLvKM1xlSdWxxHfCLrw9-w + test-windows7-32/debug-reftest-no-accel-e10s-1: X85totgXRn-LNztQQSQD3A + test-windows7-32/debug-reftest-no-accel-e10s-2: JopEHFSfS2yL65hpL0BiVQ + test-windows7-32/debug-reftest-no-accel-e10s-3: Sju3UVkvQiC1LJ7S3dd-ow + test-windows7-32/debug-reftest-no-accel-e10s-4: DTbnr-aPTCi9QxelWIB2mg + test-windows7-32/debug-telemetry-tests-client-e10s: EYlusSiERO6oZnbOXBUTVg + test-windows7-32/debug-web-platform-tests-crashtest-e10s: NK9YQK-FRbOrGduMemIhRw + test-windows7-32/debug-web-platform-tests-e10s-1: baCXjDsFQJatwT3W2uD_uA + test-windows7-32/debug-web-platform-tests-e10s-10: OfHFWBw-QRyOj2WV-xYrXg + test-windows7-32/debug-web-platform-tests-e10s-11: HbPtRSgCTY-q46Os1HEjGA + test-windows7-32/debug-web-platform-tests-e10s-12: cUA_13iRRziaLQdG8gTBiA + test-windows7-32/debug-web-platform-tests-e10s-13: fWLDF1ukTs2PP-QQ9frlpg + test-windows7-32/debug-web-platform-tests-e10s-14: b3N1p27mRVed7X0jXp1Ihw + test-windows7-32/debug-web-platform-tests-e10s-2: JaZt-HGNRACgJM9XD7t6XQ + test-windows7-32/debug-web-platform-tests-e10s-3: V5U4jTfKTjW7mF9Z1q0zxQ + test-windows7-32/debug-web-platform-tests-e10s-4: ZV4SqDKdQr6urMGpYy3-pg + test-windows7-32/debug-web-platform-tests-e10s-5: NTkjcIXZRj-670RPKNWUvg + test-windows7-32/debug-web-platform-tests-e10s-6: eEnqca0yRLOv_WZoIDGXnw + test-windows7-32/debug-web-platform-tests-e10s-7: CFdpozu1SIa1XwwKAf4GUA + test-windows7-32/debug-web-platform-tests-e10s-8: DhaYo-r6RNiimSA45VcHkA + test-windows7-32/debug-web-platform-tests-e10s-9: TfKO6_wXS2yxgvN-tkEq0A + test-windows7-32/debug-web-platform-tests-reftest-e10s-1: SQrKz6Q4QveD1HgoxMAXmA + test-windows7-32/debug-web-platform-tests-reftest-e10s-2: A0n3sUFERDO78UfA2SmOIQ + test-windows7-32/debug-web-platform-tests-reftest-e10s-3: axdkwef8QEqashf8xKpncQ + test-windows7-32/debug-web-platform-tests-reftest-e10s-4: ULh5hbt4S2aqlSjTKo_vwQ + test-windows7-32/debug-web-platform-tests-reftest-e10s-5: cQOzf2DcT-iinJg2TpHpCQ + test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: QReEuEP2S0mFS913AblG4w + test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: Og7Ncbk9TwSV3kE9ylj4TQ + test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: GfrF4sa9S12AFrRGqBaLPg + test-windows7-32/debug-xpcshell-e10s-1: Sw1zu1yWTSCRAXw2bhZSWA + test-windows7-32/debug-xpcshell-e10s-2: DEOdGiZpR6yDJGX77kUb8A + toolchain-linux32-geckodriver: O5aa4Vo-Qgm7grMWX9xCGg + toolchain-linux64-android-gradle-dependencies: Sjcz1fh9RBKqXAMmeFc17Q + toolchain-linux64-android-ndk-linux-repack: RgemDKGMSiy_lxQOHA65Gg + toolchain-linux64-android-sdk-linux-repack: PnOQ44ZhTpS96RW8g5G0vg + toolchain-linux64-binutils: C9jhFZNhTYe7-OdPRuPV2w + toolchain-linux64-cbindgen: J4LHXqS3RMG4PZewQ18p_w + toolchain-linux64-cctools-port: HBUtFKgSSPSSv_Uo5R9k3g + toolchain-linux64-clang-5.0: LsFuBgELTw-0p49CyA5uJg + toolchain-linux64-clang-7: CdvgKHfcTtO3cv6UPHlP2g + toolchain-linux64-clang-9: UFEQ0Xc8R2Gw-Trm4o9r-Q + toolchain-linux64-clang-9-aarch64-cross: avmhLG3STbqKqY53m_UyhA + toolchain-linux64-clang-9-android-cross: GVpLUbXhSHK1Pe9m-D0uCw + toolchain-linux64-clang-9-macosx-cross: O9yf1sO5TDGFL6GDK4UV6w + toolchain-linux64-clang-9-mingw-x64: bHwj_FpERxKZrXU7lkJLOw + toolchain-linux64-clang-9-mingw-x86: BJD-oHuyRiaYBkpA6iYyXA + toolchain-linux64-clang-9-win-cross: Ivg3escjSpiaRrT8PmiAgg + toolchain-linux64-clang-tidy: Tn51Rf3WSj2Lwc5JWR0w1g + toolchain-linux64-dump-syms: CjHKJQ71TUmsq9meHj1WHA + toolchain-linux64-fix-stacks: VkhAJZTSRSmvH2JJtF1SFQ + toolchain-linux64-gcc-7: Us6Or8A8QJWsh_Pe6MRZ6A + toolchain-linux64-gcc-9: Wg_-b_DiSkOKyrDfqlaquw + toolchain-linux64-gcc-sixgill: emCtGyOrTd-b23udwFTJzg + toolchain-linux64-hfsplus: f-prnfa0TW6w1Z_UbsQ5Iw + toolchain-linux64-libdmg: bZUASW5dQTS0tHK0scMc3g + toolchain-linux64-liblowercase: PbowiRmvT8uBEO7LAsx8zg + toolchain-linux64-llvm-dsymutil: JnfVvP8aTyu-lrlY_-KOcw + toolchain-linux64-lucetc: fUI9ydruQsSjEaMf1FxJOA + toolchain-linux64-mar-tools: V8a-933KQPWJHzd-Da4mAA + toolchain-linux64-mingw-fxc2-x86: QbDBvQHYRwCGL_Pfo_75HQ + toolchain-linux64-mingw32-gcc: PKrD1YfXTKSTURj62OREew + toolchain-linux64-mingw32-nsis: SR688ICqQsK12J4XEWGxSQ + toolchain-linux64-minidump-stackwalk: IyrN9jDaQQ26lIKrSzI6gg + toolchain-linux64-nasm: KrkFJqn1T2OjVnRtm2qM6w + toolchain-linux64-nasm-2.14.02: JhZoysJ9TumgtoW9eL0YcA + toolchain-linux64-node-10: BQitXXixTISLA6w1SktTkA + toolchain-linux64-rust-1.41: Gt43yxx-T_C1R-dEsyDqDg + toolchain-linux64-rust-android-1.41: SzvPmPt2Sd6K736CMqHpxA + toolchain-linux64-rust-cross-1.41: TIDe7BAMTdauHN7ElH7joQ + toolchain-linux64-rust-macos-1.41: D_k7nEyXS-yOt3Jdut03Qw + toolchain-linux64-rust-nightly: WAj_HUdQQI-uiR-q9Yb9-A + toolchain-linux64-rust-size: Eev8gPWvQjypkyVNC7Wk-A + toolchain-linux64-rust-windows-1.41: Cw8w3FBoStKKu7HsovS_uw + toolchain-linux64-sccache: KFHNf8okTgaqJEHhVYWMUw + toolchain-linux64-upx: FgQzZqEhRvKrj_6j2WHfsw + toolchain-linux64-wine: C06xm1OKQhyVoPYG7u_57Q + toolchain-macosx64-clang: Kb8VMnWoQM2AE-D3bMVCVA + toolchain-macosx64-fix-stacks: cU4ViKzuQxmpwYNkUJ4nxA + toolchain-macosx64-minidump-stackwalk: T5sxC_QhQCK9F2s_RKw2tA + toolchain-macosx64-node-10: EsieUrzPSpem7aY04w1YGg + toolchain-mingw32-rust-1.41: SW2RZ7ddRy6VK_ynpHD4wQ + toolchain-wasi-sysroot: YlBrXsswSe-nhsefa-xaLA + toolchain-wgpu-deps: XlHpylppQOKK_O-_30efQA + toolchain-win32-fix-stacks: EPiKX1t4TCesIxUq2haysQ + toolchain-win32-minidump-stackwalk: OCO_kt0lS2OMcDwzN0T4uQ + toolchain-win32-node-10: E616WCYcSwinDuMXEbSaXg + toolchain-win64-cbindgen: Lyaxqyq_SdadgLCoNBNXrQ + toolchain-win64-clang-cl: EkrlmVmIRJqGhOQqQJkJGQ + toolchain-win64-clang-cl-2stage: PHAqGCNUTACHygnrM4jHSA + toolchain-win64-dump-syms: McEtXy2DQqGdYNz2Px19ug + toolchain-win64-nasm: VdJeb9ejTTWKjUS2GoWpow + toolchain-win64-node-10: O0WjKpw4TcWpXoC94V-AKw + toolchain-win64-pdbstr: bJq4BIxzSlOlLhofIXnQzQ + toolchain-win64-rust-1.41: NznWFC7_T1GzHOPQjxy25w + toolchain-win64-rust-size: B6mEOKFUTxaRwmiLH2ucjg + toolchain-win64-sccache: VI0B_T81S0CbvywgjFtWXw + toolchain-win64-winchecksec: OJ_CDfrSQ_6sSNCotXnXNQ + toolchain-wrench-deps: MbUjBn4gQLS58w-KTJUrjA + upload-generated-sources-android-aarch64-nightly/opt: BaXv-MniR7eQ55fBYILmww + upload-generated-sources-android-api-16-nightly/opt: UWY0PUskQ1O7rbC5cDJSnw + upload-generated-sources-android-x86-nightly/opt: V1KemMKIRJG3pWgbt4dvig + upload-generated-sources-android-x86_64-nightly/opt: DNsbssTSTl-Ig59Q68AEsg + upload-generated-sources-linux-devedition/opt: FapKLleFRGiwgSO5VOht0Q + upload-generated-sources-linux-shippable/opt: XlxLYEeJThWTtf0J3XTVyg + upload-generated-sources-linux64-devedition/opt: TQr82wapTx6rM_6GWujyOA + upload-generated-sources-linux64-shippable/opt: NutkeslVQiSIsdviitgvDw + upload-generated-sources-macosx64-devedition/opt: Bc1hwMEFQMi7KSYLbibkzQ + upload-generated-sources-macosx64-shippable/opt: RxcoJXL7SYGu3chLAXRNig + upload-generated-sources-win32-devedition/opt: StynD6uxRlaFlNSdMcvWRg + upload-generated-sources-win32-shippable/opt: LqwW9XDpTgi9ZbsnY3Ttlw + upload-generated-sources-win64-aarch64-devedition/opt: cPKqaK-7QwKeA6THbPoIlg + upload-generated-sources-win64-aarch64-shippable/opt: VmHS7tOKSTmOTkzJY1dYig + upload-generated-sources-win64-devedition/opt: UugsVmLZSXqmH5WYkGwyJg + upload-generated-sources-win64-shippable/opt: Mg_Sbzg-QuCMiROVx7e5JQ +filters: + - target_tasks_method +head_ref: eae58b7bc5654f7cac80985dd647c7558bb88895 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: eae58b7bc5654f7cac80985dd647c7558bb88895 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20200504174616" +next_version: 77.0b2 +optimize_target_tasks: true +owner: ryanvm@gmail.com +phabricator_diff: null +project: mozilla-beta +pushdate: 1588614376 +pushlog_id: "13075" +release_enable_emefree: false +release_enable_partners: false +release_eta: null +release_history: + Darwin_x86_64-gcc3-u-i386-x86_64: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja-JP-mac: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ja-JP-mac/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ja-JP-mac/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ja-JP-mac/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + Linux_x86-gcc3: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ja/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ja/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ja/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + Linux_x86_64-gcc3: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ja/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ja/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ja/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + WINNT_aarch64-msvc-aarch64: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ja/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ja/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ja/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + WINNT_x86-msvc: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ja/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ja/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ja/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + WINNT_x86_64-msvc: + ach: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ach/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ach/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ach/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + af: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/af/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/af/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/af/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + an: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/an/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/an/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/an/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ar: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ar/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ar/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ar/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ast: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ast/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ast/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ast/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + az: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/az/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/az/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/az/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + be: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/be/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/be/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/be/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bg: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bg/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bg/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bg/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + br: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/br/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/br/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/br/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + bs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ca/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ca/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ca/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ca-valencia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ca-valencia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ca-valencia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ca-valencia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cak: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cak/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cak/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cak/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + cy: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cy/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cy/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cy/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + da: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/da/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/da/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/da/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + de: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/de/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/de/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/de/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + dsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/dsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/dsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/dsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + el: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/el/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/el/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/el/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-CA: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-CA/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-CA/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-CA/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-GB: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-GB/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-GB/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-GB/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + en-US: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-US/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-US/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-US/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eo: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/eo/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/eo/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/eo/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-AR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-AR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-AR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-AR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-CL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-CL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-CL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-CL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-ES: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-ES/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-ES/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-ES/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + es-MX: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-MX/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-MX/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-MX/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + et: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/et/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/et/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/et/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + eu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/eu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/eu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/eu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fa: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fa/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fa/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fa/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ff: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ff/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ff/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ff/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + fy-NL: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fy-NL/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fy-NL/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fy-NL/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ga-IE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ga-IE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ga-IE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ga-IE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gd: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gd/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gd/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gd/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + gu-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gu-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gu-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gu-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + he: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/he/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/he/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/he/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hi-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hi-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hi-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hi-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hsb: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hsb/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hsb/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hsb/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hu: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hu/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hu/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hu/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + hy-AM: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hy-AM/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hy-AM/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hy-AM/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ia: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ia/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ia/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ia/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + id: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/id/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/id/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/id/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + is: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/is/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/is/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/is/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + it: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/it/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/it/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/it/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ja: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ja/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ja/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ja/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ka: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ka/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ka/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ka/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kab: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kab/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kab/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kab/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + km: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/km/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/km/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/km/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + kn: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kn/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kn/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kn/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ko: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ko/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ko/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ko/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lij: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lij/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lij/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lij/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lt: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lt/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lt/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lt/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + lv: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lv/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lv/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lv/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/mk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/mk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/mk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + mr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/mr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/mr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/mr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ms: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ms/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ms/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ms/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + my: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/my/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/my/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/my/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nb-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nb-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nb-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nb-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ne-NP: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ne-NP/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ne-NP/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ne-NP/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + nn-NO: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nn-NO/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nn-NO/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nn-NO/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + oc: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/oc/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/oc/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/oc/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pa-IN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pa-IN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pa-IN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pa-IN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-BR: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pt-BR/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pt-BR/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pt-BR/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + pt-PT: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pt-PT/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pt-PT/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pt-PT/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + rm: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/rm/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/rm/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/rm/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ro: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ro/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ro/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ro/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ru: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ru/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ru/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ru/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + si: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/si/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/si/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/si/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + son: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/son/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/son/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/son/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sq: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sq/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sq/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sq/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + sv-SE: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sv-SE/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sv-SE/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sv-SE/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ta: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ta/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ta/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ta/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + te: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/te/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/te/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/te/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + th: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/th/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/th/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/th/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tl: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/tl/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/tl/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/tl/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + tr: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/tr/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/tr/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/tr/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + trs: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/trs/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/trs/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/trs/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uk: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/uk/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/uk/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/uk/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + ur: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ur/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ur/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ur/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + uz: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/uz/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/uz/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/uz/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + vi: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/vi/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/vi/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/vi/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + xh: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/xh/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/xh/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/xh/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-CN: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/zh-CN/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/zh-CN/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/zh-CN/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition + zh-TW: + target-76.0b6.partial.mar: + buildid: "20200420031429" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/zh-TW/firefox-76.0b6.complete.mar + previousBuildNumber: 2 + previousVersion: 76.0b6 + product: Devedition + target-76.0b7.partial.mar: + buildid: "20200421231527" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/zh-TW/firefox-76.0b7.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b7 + product: Devedition + target-76.0b8.partial.mar: + buildid: "20200424000239" + mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/zh-TW/firefox-76.0b8.complete.mar + previousBuildNumber: 1 + previousVersion: 76.0b8 + product: Devedition +release_partner_build_number: 1 +release_partner_config: {} +release_partners: null +release_product: devedition +release_type: beta +required_signoffs: [] +signoff_urls: {} +target_tasks_method: promote_desktop +tasks_for: action +try_mode: null +try_options: null +try_task_config: {} +version: 77.0b1 diff --git a/taskcluster/test/params/mb-promote-devedition.yml b/taskcluster/test/params/mb-promote-devedition.yml new file mode 100644 index 0000000000..5bba5b4a85 --- /dev/null +++ b/taskcluster/test/params/mb-promote-devedition.yml @@ -0,0 +1,42 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b1 +version: 60.0b1 +next_version: null +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +# target_task_labels: [] +target_tasks_method: promote_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: devedition +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-promote-firefox-partials.yml b/taskcluster/test/params/mb-promote-firefox-partials.yml new file mode 100644 index 0000000000..e375c4355e --- /dev/null +++ b/taskcluster/test/params/mb-promote-firefox-partials.yml @@ -0,0 +1,12103 @@ +--- +app_version: "63.0" +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1539288078 +build_number: 1 +do_not_optimize: [] +existing_tasks: + build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg + build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ + build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og + build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw + build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA + build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ + build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA + build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA + build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg + build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg + build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ + build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g + build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ + build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ + build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ + build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA + build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w + build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw + build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg + build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg + build-docker-image-lint: XGNAECEES72AEPxwbO4jKw + build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg + build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ + build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw + build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ + build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q + build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw + build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q + build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw + build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ + build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w + build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ + build-linux/debug: LhIiq80ZSRyJh5nWgkakaA + build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw + build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw + build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw + build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA + build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA + build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w + build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw + build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg + build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w + build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw + build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg + build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw + build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg + build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w + build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA + build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ + build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw + build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA + build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA + build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A + build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ + build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA + build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA + build-macosx64/debug: CibCdzr9QLODly5buEeBvw + build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg + build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA + build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw + build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw + build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg + build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng + build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ + build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg + build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA + build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA + build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw + build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA + build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w + build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA + build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA + build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ + build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q + build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA + build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig + build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw + build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ + build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ + build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA + build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw + build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ + build-win32/opt: YKC_SzyIQy2y83trQ49WQg + build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw + build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g + build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA + build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg + build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA + build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ + build-win64/debug: EDHK4shfRKyhAv5cIZihew + build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw + fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ + fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA + fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ + fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q + fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og + fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q + fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg + fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ + fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ + fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g + fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q + hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A + packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA + packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA + packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg + packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ + packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA + packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ + packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg + packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw + packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw + packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A + packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA + packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw + packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg + packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ + packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w + packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg + packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ + packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg + repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw + repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw + repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg + repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A + repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw + repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg + repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ + repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA + repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w + repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g + repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg + repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA + repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg + repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ + repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ + repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg + repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw + repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng + repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ + repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ + repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew + repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA + repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA + repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg + repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g + source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA + source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA + source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A + static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ + static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ + static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ + static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg + static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g + static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A + test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A + test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ + test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A + test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA + test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA + test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA + test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog + test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A + test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg + test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w + test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ + test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA + test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ + test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw + test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ + test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w + test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A + test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg + test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA + test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA + test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g + test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow + test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ + test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q + test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ + test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w + test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ + test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w + test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA + test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA + test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q + test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA + test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw + test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA + test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA + test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA + test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig + test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw + test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw + test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA + test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ + test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g + test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw + test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA + test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA + test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ + test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw + test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw + test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow + test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA + test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw + test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w + test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg + test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig + test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw + test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA + test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg + test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA + test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg + test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA + test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q + test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA + test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg + test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw + test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA + test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ + test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw + test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg + test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg + test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ + test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g + test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g + test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg + test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A + test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew + test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw + test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ + test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg + test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg + test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg + test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A + test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA + test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ + test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw + test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg + test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw + test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg + test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg + test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA + test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg + test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg + test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA + test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ + test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA + test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag + test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg + test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg + test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg + test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q + test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg + test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw + test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw + test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q + test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA + test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q + test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg + test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ + test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A + test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw + test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg + test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g + test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA + test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg + test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA + test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw + test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg + test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w + test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q + test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA + test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw + test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA + test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA + test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A + test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw + test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA + test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g + test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ + test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ + test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg + test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw + test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw + test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA + test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg + test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg + test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg + test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ + test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw + test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw + test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg + test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw + test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw + test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw + test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w + test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA + test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA + test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ + test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg + test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA + test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ + test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA + test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ + test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A + test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A + test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g + test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg + test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg + test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ + test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ + test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw + test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg + test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew + test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg + test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA + test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw + test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg + test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg + test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug + test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q + test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ + test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ + test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q + test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q + test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw + test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA + test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA + test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw + test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg + test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA + test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w + test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw + test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw + test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA + test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ + test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg + test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA + test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g + test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA + test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ + test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw + test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w + test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g + test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA + test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg + test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg + test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA + test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg + test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig + test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ + test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A + test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ + test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA + test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA + test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg + test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow + test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww + test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA + test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ + test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug + test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ + test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw + test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw + test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg + test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg + test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A + test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw + test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA + test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ + test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA + test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g + test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw + test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ + test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg + test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg + test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g + test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw + test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A + test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A + test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A + test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ + test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ + test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ + test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ + test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg + test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA + test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw + test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w + test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ + test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ + test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw + test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ + test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA + test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q + test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw + test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww + test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA + test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw + test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw + test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ + test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q + test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg + test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ + test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q + test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA + test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ + test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA + test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw + test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ + test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A + test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw + test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA + test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ + test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg + test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA + test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g + test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg + test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig + test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA + test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg + test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ + test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw + test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w + test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q + test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ + test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg + test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ + test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ + test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg + test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ + test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA + test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg + test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw + test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w + test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg + test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg + test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg + test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ + test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q + test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow + test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A + test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw + test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw + test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw + test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg + test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ + test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ + test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ + test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA + test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ + test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw + test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA + test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg + test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw + test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw + test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA + test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ + test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ + test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q + test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g + test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ + test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw + test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw + test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A + test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ + test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA + test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA + test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w + test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw + test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg + test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw + test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw + test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w + test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q + test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A + test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ + test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA + test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A + test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg + test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q + test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw + test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA + test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ + test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg + test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA + test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ + test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA + test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg + test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ + test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw + test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw + test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA + test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ + test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg + test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw + test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig + test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA + test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A + test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q + test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ + test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q + test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ + test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg + test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg + test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g + test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw + test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ + test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A + test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g + test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg + test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA + test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ + test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ + test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A + test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug + test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw + test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw + test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A + test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA + test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ + test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw + test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw + test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw + test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ + test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w + test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg + test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g + test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg + test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA + test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A + test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w + test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA + test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg + test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg + test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ + test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA + test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA + test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g + test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg + test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw + test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg + test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw + test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw + test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA + test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A + test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ + test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g + test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A + test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q + test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg + test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA + test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg + test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g + test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw + test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg + test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g + test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg + test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA + test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg + test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ + test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA + test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg + test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ + test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ + test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA + test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A + test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w + test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg + test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ + test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA + test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag + test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ + test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA + test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ + test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ + test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q + test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg + test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA + test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw + test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA + test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw + test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g + test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg + test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w + test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA + test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w + test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw + test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ + test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw + test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw + test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q + test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg + test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A + test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ + test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag + test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg + test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg + test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ + test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q + test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g + test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA + test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ + test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg + test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw + test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q + test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA + test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg + test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw + test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A + test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg + test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog + test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw + test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ + test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA + test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw + test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA + test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ + test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw + test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw + test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw + test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA + test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog + test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA + test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA + test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw + test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w + test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w + test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ + test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw + test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ + test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ + test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA + test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A + test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw + test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw + test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw + test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A + test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w + test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g + test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q + test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg + test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg + test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA + test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag + test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA + test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA + test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q + test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w + test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ + test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg + test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q + test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA + test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg + test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw + test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A + test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q + test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ + test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA + test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw + test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw + test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw + test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ + test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ + test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA + test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ + test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA + test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g + test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g + test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw + test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw + test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw + test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w + test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA + test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg + test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ + test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ + test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ + test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw + test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA + test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg + test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w + test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg + test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ + test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw + test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ + test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg + test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA + test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ + test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg + test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA + test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g + test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw + test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ + test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw + test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw + test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg + test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw + test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw + test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A + test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A + test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ + test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg + test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg + test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw + test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg + test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA + test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow + test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ + test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g + test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA + test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA + test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw + test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg + test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg + test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ + test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw + test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A + test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ + test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg + test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw + test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw + test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ + test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ + test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA + test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA + test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g + test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA + test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg + test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA + test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ + test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw + test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A + test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg + test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag + test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw + test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw + test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ + test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q + test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg + test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA + test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g + test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw + test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA + test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g + test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg + test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw + test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA + test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w + test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw + test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA + test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw + test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ + test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ + test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ + test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA + test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg + test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg + test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A + test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A + test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg + test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw + test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w + test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g + test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ + test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA + test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A + test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA + test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw + test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA + test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA + test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A + test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w + test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw + test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA + test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg + test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA + test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q + test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w + test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q + test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA + test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw + test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg + test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug + test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g + test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw + test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg + test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w + test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw + test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg + test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg + test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA + test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ + test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg + test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA + test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ + test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw + test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg + test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w + test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw + test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w + test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg + test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q + test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA + test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw + test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ + test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q + test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg + test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ + test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA + test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw + test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA + test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ + test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw + test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ + test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q + test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA + test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ + test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ + test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw + test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA + test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ + test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A + test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw + test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ + test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg + test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw + test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg + test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg + test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ + test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ + test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ + test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg + test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA + test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A + test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ + test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w + test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw + test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg + test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg + test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ + test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw + test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA + test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A + test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg + test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w + test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw + test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw + test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw + test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ + test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q + test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w + test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg + test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA + test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ + test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg + test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ + test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ + test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA + test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ + test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw + test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w + test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA + test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg + test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw + test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw + test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ + test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw + test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w + test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g + test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg + test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA + test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA + test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA + test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA + test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng + test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw + test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg + test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw + test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow + test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ + test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A + test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg + test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw + test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q + test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw + test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA + test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw + test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ + test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw + test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw + test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q + test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ + test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw + test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w + test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g + test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw + test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg + test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA + test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A + test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ + test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA + test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA + test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w + test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA + test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA + test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg + test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g + test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog + test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew + test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg + test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw + test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w + test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g + test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug + test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw + test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w + test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ + test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w + test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA + test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ + test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ + test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q + test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q + test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA + test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ + test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw + test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg + test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w + test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ + test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg + test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw + test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ + test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw + test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA + test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw + test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q + test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA + test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw + test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA + test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g + test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q + test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA + test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng + test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA + test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ + test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg + test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ + test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg + test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ + test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw + test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ + test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ + test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ + test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg + test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw + test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg + test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw + test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g + test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg + test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g + test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ + test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA + test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg + test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg + test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg + test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ + test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg + test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ + test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw + test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw + test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g + test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA + test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg + test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA + test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg + test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA + test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q + test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ + test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw + test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA + test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA + test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ + test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q + test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w + test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug + test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw + test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ + test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ + test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg + test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw + test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg + test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ + test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w + test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g + test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg + test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ + test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA + test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig + test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ + test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg + test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw + test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg + test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A + test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ + test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A + test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg + test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg + test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA + test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw + test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g + test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q + test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A + test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg + test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ + test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og + test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg + test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA + test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA + test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w + test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA + test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw + test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w + test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ + test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw + test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow + test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ + test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA + test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw + test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ + test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ + test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw + test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g + test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg + test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw + test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A + test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw + test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA + test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ + test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ + test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ + test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A + test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ + test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g + test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA + test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ + test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog + test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q + test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ + test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg + test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q + test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw + test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA + test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ + test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw + test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg + test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA + test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw + test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ + test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ + test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q + test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw + test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ + test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w + test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg + test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw + test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA + test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw + test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ + test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w + test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g + test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew + test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA + test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q + test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ + test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA + test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg + test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug + test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA + test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg + test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ + test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA + test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ + test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg + test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg + test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w + test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA + test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA + test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA + test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q + test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ + test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ + test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA + test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ + test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g + test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA + test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ + test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw + test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw + test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A + test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ + test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA + test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw + test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw + test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ + test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w + test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA + test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ + test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw + test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg + test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw + test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA + test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA + test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q + test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q + test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg + test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA + test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A + test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg + test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A + test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ + test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q + test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w + test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw + test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA + test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw + test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ + test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ + test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ + test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w + test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w + test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ + test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ + test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg + test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw + test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ + test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ + test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w + test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg + test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA + test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA + test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ + test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg + test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA + test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA + test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA + test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ + test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ + test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA + test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ + test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA + test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw + test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg + test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw + test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA + test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw + test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA + test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A + test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg + test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA + test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg + test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA + test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w + test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw + test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA + test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA + test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA + test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA + test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ + test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA + test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw + test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw + test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg + test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ + test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ + test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA + test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA + test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ + test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA + test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg + test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg + test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w + test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA + test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg + test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw + test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw + test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ + test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g + test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw + test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA + test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA + test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw + test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg + test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg + test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q + test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg + test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q + test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A + test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw + test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q + test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw + test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg + test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A + test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA + test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q + test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg + test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA + test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og + test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg + test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ + test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw + test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg + test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg + test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA + test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q + test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA + test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg + test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ + test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw + test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA + test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q + test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg + test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w + test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA + test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ + test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w + test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A + test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg + test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg + test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg + test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q + test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw + test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg + test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw + test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA + test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg + test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg + test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ + test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg + test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg + test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w + test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw + test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA + test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w + test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw + test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q + test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA + test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ + test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg + test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ + test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg + test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g + test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g + test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w + test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw + test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw + test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g + test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw + test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw + test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg + test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ + test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A + test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg + test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ + test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw + test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw + test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw + test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g + test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ + test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA + test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw + test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw + test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww + test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w + test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A + test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA + test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg + test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg + test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg + test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA + test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg + test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw + test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw + test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ + test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA + test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA + test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA + test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A + test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w + test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA + test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA + test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA + test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ + test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw + test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ + test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ + test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q + test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA + test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw + test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA + test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw + test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg + test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg + test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg + test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog + test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ + test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A + test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg + test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng + test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA + test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA + test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw + test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw + test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg + test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw + test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg + test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw + test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw + test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA + test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA + test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw + test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg + test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ + test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw + test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg + test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w + test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA + test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ + test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA + test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ + test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA + test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q + test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q + test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw + test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ + test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg + test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ + test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ + test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA + test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA + test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg + test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ + test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw + test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA + test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w + test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA + test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA + test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw + test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ + test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA + test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ + test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A + test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw + test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ + test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ + test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA + test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw + test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ + test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA + test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng + test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg + test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg + test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw + test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw + test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g + test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA + test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg + test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA + test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew + test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA + test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ + test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ + test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ + test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng + test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q + test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA + test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw + test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ + test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g + test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw + test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag + test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw + test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ + test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w + test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ + test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w + test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ + test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg + test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ + test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg + test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA + test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w + test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw + test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA + test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA + test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA + test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA + test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A + test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA + test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q + test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g + test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA + test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ + test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A + test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA + test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ + test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw + test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w + test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw + test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg + test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A + test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA + test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw + test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A + test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ + test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q + test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg + test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q + test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA + test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw + test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg + test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA + test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg + test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA + test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ + test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw + test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q + test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA + test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ + test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA + test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw + test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew + test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ + test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w + test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw + test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q + test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA + test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g + test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg + test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ + test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ + test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg + test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg + test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg + test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA + test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg + test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA + test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g + test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg + test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g + test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg + test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg + test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw + test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw + test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA + test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ + test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA + test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ + test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA + test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA + test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA + test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q + test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ + test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA + test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q + test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw + test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw + test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg + test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ + test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA + test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q + test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw + test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg + test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ + test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg + test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ + test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA + test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg + test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w + test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ + test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g + test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg + test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA + test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w + test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw + test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w + test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg + test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw + test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g + test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w + test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw + test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ + test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q + test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w + test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ + test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A + test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w + test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg + test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ + test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q + test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg + test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g + test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ + test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg + test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ + test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg + test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg + test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw + test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig + test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ + test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q + test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg + test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg + test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w + test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg + test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og + toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w + toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw + toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA + toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ + toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA + toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw + toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA + toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA + toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q + toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w + toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw + toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw + toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA + toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ + toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w + toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg + toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ + toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w + toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw + toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ + toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw + toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ + toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w + toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA + toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ + toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA + toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw + toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA + toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA + toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg + toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg + toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ + toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A + toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA + toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg + upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg + upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg + upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA + upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA + upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA + upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg + upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ + upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA + upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA + upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w + valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg +filters: + - target_tasks_method +head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91 +hg_branch: default +level: "3" +message: " " +moz_build_date: "20181011200118" +next_version: 63.0b15 +optimize_target_tasks: true +owner: ryanvm@gmail.com +project: mozilla-beta +pushdate: 1539288078 +pushlog_id: "9972" +release_enable_emefree: true +release_enable_partners: true +release_eta: null +release_history: + Darwin_x86_64-gcc3-u-i386-x86_64: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja-JP-mac: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86_64-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86_64-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox +release_partner_build_number: 1 +release_partner_config: + release-eme-free-repack: + mozilla-EME-free: + mozilla-EME-free: + locales: + - ach + - af + - an + - ar + - as + - ast + - az + - be + - bg + - bn-BD + - bn-IN + - br + - bs + - ca + - cak + - cs + - cy + - da + - de + - dsb + - el + - en-GB + - en-US + - en-ZA + - eo + - es-AR + - es-CL + - es-ES + - es-MX + - et + - eu + - fa + - ff + - fi + - fr + - fy-NL + - ga-IE + - gd + - gl + - gn + - gu-IN + - he + - hi-IN + - hr + - hsb + - hu + - hy-AM + - id + - is + - it + - ja + - ja-JP-mac + - ka + - kab + - kk + - km + - kn + - ko + - lij + - lt + - lv + - mai + - mk + - ml + - mr + - ms + - my + - nb-NO + - nl + - nn-NO + - or + - pa-IN + - pl + - pt-BR + - pt-PT + - rm + - ro + - ru + - si + - sk + - sl + - son + - sq + - sr + - sv-SE + - ta + - te + - th + - tr + - uk + - ur + - uz + - vi + - xh + - zh-CN + - zh-TW + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + release-partner-repack: + acer: + acer-002: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + aol: + aol: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_de: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_desktop: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_huffington: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_uk: + locales: + - en-GB + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + chipde: + chipde: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-003: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-004: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-005: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-006: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-007: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-008: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-control: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + firefox: + firefox-election-edition: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake: + funnelcake134: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake137: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource: + ironsource-google: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-google-aura: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo-aura: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yandex: + locales: + - en-US + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mailru: + mailru: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + okru: + locales: + - az + - en-US + - hy-AM + - kk + - ro + - ru + - tr + - uk + - uz + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mozillaonline: + baidu: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + kingsoft: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + mainOther: + locales: + - en-US + - zh-CN + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + upload_to_candidates: "true" + mainWinFull: + locales: + - en-US + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mainWinStubFallback: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + others: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qihoo: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + tencent: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + xbsafe: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + zol: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + ntt: + ntt: + locales: + - en-US + - ja + - ja-JP-mac + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + playanext: + playanext-wt: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - it + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + playanext-wt-us: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qwant: + qwant-001: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + qwant-002: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + seznam: + seznam: + locales: + - cs + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + softonic: + softonic: + locales: + - de + - en-US + - es-ES + - fr + - it + - pl + - pt-BR + - ru + platforms: + - win32-shippable + - win64-shippable + sweetlabs: + sweetlabs-b-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + toshiba: + toshiba-001-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-001-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-b2b-JP: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-B-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-download-US: + locales: + - en-US + platforms: + - win32-shippable + unitedinternet: + 1und1: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + 1und1_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + wildtangent: + wildtangent: + locales: + - en-US + platforms: + - win32-shippable + upload_to_candidates: "true" + yandex: + yandex-drp: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-planB: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-portals: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru-mz: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-gezginler: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-tamindir: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ua: + locales: + - ru + - uk + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable +release_partners: null +release_product: firefox +release_type: "beta" +target_tasks_method: promote_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 63.0b14 +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-promote-firefox.yml b/taskcluster/test/params/mb-promote-firefox.yml new file mode 100644 index 0000000000..e74c42eeec --- /dev/null +++ b/taskcluster/test/params/mb-promote-firefox.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b1 +version: 60.0b1 +next_version: null +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: promote_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-push-devedition.yml b/taskcluster/test/params/mb-push-devedition.yml new file mode 100644 index 0000000000..66a663db8d --- /dev/null +++ b/taskcluster/test/params/mb-push-devedition.yml @@ -0,0 +1,43 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b1 +version: 60.0b1 +next_version: 60.0b2 +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +# target_task_labels: [] +target_tasks_method: push_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: devedition +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/mb-push-firefox-partials.yml b/taskcluster/test/params/mb-push-firefox-partials.yml new file mode 100644 index 0000000000..d37d8b8d95 --- /dev/null +++ b/taskcluster/test/params/mb-push-firefox-partials.yml @@ -0,0 +1,19467 @@ +--- +app_version: "63.0" +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1539288078 +build_number: 1 +do_not_optimize: [] +existing_tasks: + balrog-ach-linux-nightly/opt: LNu8vTKaTkKUatSKqg53NA + balrog-ach-linux64-nightly/opt: H83upk1ETAyGy8uE9ayNvw + balrog-ach-macosx64-nightly/opt: EqWdtWjrQ3WLtXaRdCcK0Q + balrog-ach-win32-nightly/opt: J_4r79LoQ6e3Zi3jhHxDtw + balrog-ach-win64-nightly/opt: Paz-PNUPRe-yyUVHIAMaXA + balrog-af-linux-nightly/opt: AKSL7IXKSSCsC2wN0jkLmA + balrog-af-linux64-nightly/opt: FSxFwou4RQeY9gr8jdp_3w + balrog-af-macosx64-nightly/opt: Vyf1IDm1RomRG1w5kM5hgQ + balrog-af-win32-nightly/opt: XDT728xmSQ64Eesq22G4pA + balrog-af-win64-nightly/opt: Q-z62n9CSSOsKR8sE9Iz1w + balrog-an-linux-nightly/opt: f0VD7y1XRQGuj9PcZPVZPw + balrog-an-linux64-nightly/opt: EWancfiiRTGLLDVE9oKA6g + balrog-an-macosx64-nightly/opt: TpTprr9dTkeGfsq2b5hAbQ + balrog-an-win32-nightly/opt: ALxjom0AS4uvyPkw8UiS4g + balrog-an-win64-nightly/opt: IFDW7L3rSUK3Zfb8s0nU3g + balrog-ar-linux-nightly/opt: VkAkpaMpQ1GQtlv5n1r9Xg + balrog-ar-linux64-nightly/opt: CquH6b-EQF-xVOBC_Gqt5A + balrog-ar-macosx64-nightly/opt: SiMe9VVESC65Ucqq-MwExQ + balrog-ar-win32-nightly/opt: MeLiWiReRQuKjp5jF3rGAg + balrog-ar-win64-nightly/opt: YzmxtIzXS4qxsATVDaxAtA + balrog-as-linux-nightly/opt: IGEIPjCJTLOr_THPNR2Vvw + balrog-as-linux64-nightly/opt: DdxNngoyQ0OSG3h-f-mk1Q + balrog-as-macosx64-nightly/opt: RSDIkXkhQIuLCdbKBIfFDA + balrog-as-win32-nightly/opt: cmK5-_iFT7uw2Bnb-pwVFQ + balrog-as-win64-nightly/opt: Mh7pso2FRTCLhrc5cVS8EA + balrog-ast-linux-nightly/opt: VPbd1rVGS0Cr817TSB2Acw + balrog-ast-linux64-nightly/opt: F_vbFztATk6NuYvthS9K9A + balrog-ast-macosx64-nightly/opt: flHMUHuLQ5uWSgkI7k3K6g + balrog-ast-win32-nightly/opt: fbJBTQtsQBSaJbDfQRlG3A + balrog-ast-win64-nightly/opt: XweFIjNoTjCtyfXTDYxYkA + balrog-az-linux-nightly/opt: ObVS45xdQTyxyKEknUUDhA + balrog-az-linux64-nightly/opt: DG7FdjiyRMe4cAmeKuLmAA + balrog-az-macosx64-nightly/opt: KJuebq7PSICEWKHVue0H6Q + balrog-az-win32-nightly/opt: FM3iGtxURLimBnIiz7omfA + balrog-az-win64-nightly/opt: YPByA5A6S-SQ3TPmILT46g + balrog-be-linux-nightly/opt: YUe8sQFITAyiN3F4BJW6RQ + balrog-be-linux64-nightly/opt: ZZ6Am6JGQdG03V-EB85-Lw + balrog-be-macosx64-nightly/opt: dQ2P6Z03SleRSBV8rcBftQ + balrog-be-win32-nightly/opt: MsMQavymTX-i_9YMohoYag + balrog-be-win64-nightly/opt: P3OQ2WFGTBWtJLTKczYoCA + balrog-bg-linux-nightly/opt: YL9BKVHySkaa7SvXlYw_Lw + balrog-bg-linux64-nightly/opt: Bem4Y-8_S3qUXLRwNu9Ccw + balrog-bg-macosx64-nightly/opt: eSTZG7ojQpib4GJvCMCavA + balrog-bg-win32-nightly/opt: A1dr5Wb_R-e2LS0djhbyzQ + balrog-bg-win64-nightly/opt: BBzti7rVTdKbbaXpRWdzjw + balrog-bn-BD-linux-nightly/opt: KnBPYSVoQK2EwMNjb9sqeQ + balrog-bn-BD-linux64-nightly/opt: LXQuY8qtSZm6lBhPiCFcuw + balrog-bn-BD-macosx64-nightly/opt: R9fLrVpWQQK17HZ5NKZ9sg + balrog-bn-BD-win32-nightly/opt: bVHZylUUSkWzAnUHjbe1FA + balrog-bn-BD-win64-nightly/opt: JsgRNaPFRPy40Eupo-2_pQ + balrog-bn-IN-linux-nightly/opt: cohWquwSQw20CdTgYKmayA + balrog-bn-IN-linux64-nightly/opt: LwMy_AYtTEmtnr4MBHcqnA + balrog-bn-IN-macosx64-nightly/opt: ZEHDtLoNSR2RUaMgdqM-Iw + balrog-bn-IN-win32-nightly/opt: XlqZ5qJESqmAXSAP5ndFzg + balrog-bn-IN-win64-nightly/opt: EIqkzRycQnmJVPAlqPjKfg + balrog-br-linux-nightly/opt: EACM_yd7Tvy2UgZ33Bhkmw + balrog-br-linux64-nightly/opt: PEGdJRfeQ3SG-I5--Ci7kA + balrog-br-macosx64-nightly/opt: CDokRQg5QW20_IaDncQt4w + balrog-br-win32-nightly/opt: VTecy8LPSOKkj8SZPeX6Uw + balrog-br-win64-nightly/opt: aT2uXgFpR2GMq-L6A_ID2w + balrog-bs-linux-nightly/opt: ca0zOLgvQgyRxE906ipgPw + balrog-bs-linux64-nightly/opt: WfH9fnOUQ2SQZerXtrmXtg + balrog-bs-macosx64-nightly/opt: Ge2QCJcSSQ29HvsOsPWM6w + balrog-bs-win32-nightly/opt: Gad56wRWRkyhcQHmXpgA6A + balrog-bs-win64-nightly/opt: X1EslU07Ra-nqayV6MARIg + balrog-ca-linux-nightly/opt: QuSV13-5TW6dPtdgBDblZQ + balrog-ca-linux64-nightly/opt: I5T_wzfUQsaJh7qT8O9nLg + balrog-ca-macosx64-nightly/opt: L24Qfi_KQk2U9GLh7ZPZXQ + balrog-ca-win32-nightly/opt: Ie3kChlxS02kkzqNKRl_5A + balrog-ca-win64-nightly/opt: SaM70u6ZRISa5zgrxOZo6A + balrog-cak-linux-nightly/opt: ETkl62U1Thq7wymrNDvC9g + balrog-cak-linux64-nightly/opt: cH_wjyyzTbyIpD72qWidqw + balrog-cak-macosx64-nightly/opt: CXXAbGNqQVa5sbxwweIy0Q + balrog-cak-win32-nightly/opt: eOMC4uR8RyyP3Qgjlxr6yA + balrog-cak-win64-nightly/opt: EaBvqI--Sq6UD5OGEWgvRA + balrog-cs-linux-nightly/opt: GgCpw1LWRiSHKB_DJLkhPA + balrog-cs-linux64-nightly/opt: RvMZTkPASqqvppFEZJkzVg + balrog-cs-macosx64-nightly/opt: FixtzW-FSXiE0Tk5gJ-Zyg + balrog-cs-win32-nightly/opt: BrwLoSEyRWq-rqEGSJkp2g + balrog-cs-win64-nightly/opt: RfPXY-eZTjSm9AhxcgZqlw + balrog-cy-linux-nightly/opt: aUP97k8aTIi9-_uLeyyY2g + balrog-cy-linux64-nightly/opt: DqTNzWbOSROhUbTeaxI2Sg + balrog-cy-macosx64-nightly/opt: Kd4bsYbAS9yLQShsxazOzA + balrog-cy-win32-nightly/opt: CDVmpXGzQSugetx3bfXR8w + balrog-cy-win64-nightly/opt: HMsQi4gXQe2pbEHYi4pIQg + balrog-da-linux-nightly/opt: R54GtA5ATum4jPwHajt7Wg + balrog-da-linux64-nightly/opt: AxWVb6etQDC1FrIbiER_9A + balrog-da-macosx64-nightly/opt: VFEctmKZTS2UPdbPcA__Ew + balrog-da-win32-nightly/opt: MhZvnQQOTvePrBarcWhWFQ + balrog-da-win64-nightly/opt: GOMIlCmJTnajjrbpSpcZPA + balrog-de-linux-nightly/opt: C0Y1ar60QCiuRwcbGlHHnw + balrog-de-linux64-nightly/opt: HZfJSWPoRuKFt36bZkjAAQ + balrog-de-macosx64-nightly/opt: J0WDms3lTuWjDqFnldqAmg + balrog-de-win32-nightly/opt: Kj6QgdLpSUGwIzBDtJl8Zw + balrog-de-win64-nightly/opt: CCae-gd5RuG74Oj9fBk-Uw + balrog-dsb-linux-nightly/opt: B0wRzBfrQLajgojlwqxEtg + balrog-dsb-linux64-nightly/opt: V_pSajCqTxipeKYgyIxtZw + balrog-dsb-macosx64-nightly/opt: e3HnIbstR5GuaPYJN3HsYA + balrog-dsb-win32-nightly/opt: VDYz1P3-TwCJ5FbmZGGSmQ + balrog-dsb-win64-nightly/opt: evTxKmQmQ3m_10PrwCNvvg + balrog-el-linux-nightly/opt: fQN4Rw7yQsqA7zp2ywjNJw + balrog-el-linux64-nightly/opt: ZyScFNVzSsqlqVI-2wGgOw + balrog-el-macosx64-nightly/opt: IhVX9pc7Q8S7fx2oQzfZ5g + balrog-el-win32-nightly/opt: XM9cVhanRFiLq4GpnqRSYQ + balrog-el-win64-nightly/opt: BajV0YAqTL2olkt3T0bOBg + balrog-en-CA-linux-nightly/opt: FZMvRYHwQFebWNiBkndh2A + balrog-en-CA-linux64-nightly/opt: IAKEd6a8RPaDp8bxidMkdQ + balrog-en-CA-macosx64-nightly/opt: IvnQeCNmSZm7fJacBliPLg + balrog-en-CA-win32-nightly/opt: QF5raq-BQd6GGMrwY2IETA + balrog-en-CA-win64-nightly/opt: UyhND3nXQryoxqtKHI9ocg + balrog-en-GB-linux-nightly/opt: WRf-D5d1QXWk6Bu1C1u1Vg + balrog-en-GB-linux64-nightly/opt: RZVoMOVxTgaS3XUME3rlcw + balrog-en-GB-macosx64-nightly/opt: cGjVSJK4RC224sTO1PwL_g + balrog-en-GB-win32-nightly/opt: D38Setq0QmuqvoDv07bNEg + balrog-en-GB-win64-nightly/opt: MKqShCLtSrSaax_djziJBA + balrog-en-ZA-linux-nightly/opt: eEjgBWukQTCRp0zATpfZQg + balrog-en-ZA-linux64-nightly/opt: Ac5DSI5URxeiPPDSH1LQ_Q + balrog-en-ZA-macosx64-nightly/opt: COJXme0NTICngxAXu5cktA + balrog-en-ZA-win32-nightly/opt: LEKve5JnQHCevcIWKZvLCw + balrog-en-ZA-win64-nightly/opt: N9QcgCiCSK-C2_NuieuBLA + balrog-eo-linux-nightly/opt: YG0sGdp4TL-Sb_QvqHhN1w + balrog-eo-linux64-nightly/opt: WCHg0D4IRXeaqGbVYJGhhQ + balrog-eo-macosx64-nightly/opt: AJ7Cv5vtT0itcmh6M-lpNA + balrog-eo-win32-nightly/opt: Gg3aJ5VtSZyQdHeeMh9lDw + balrog-eo-win64-nightly/opt: BQzA-kueQ6uxoRSIWMgsSw + balrog-es-AR-linux-nightly/opt: DmB0MaynQ2i3PpEnr3ra-g + balrog-es-AR-linux64-nightly/opt: XZcsg0wLQnOtH0Ji1ePecQ + balrog-es-AR-macosx64-nightly/opt: TAkHOCy6Qayo7dbmts5_8A + balrog-es-AR-win32-nightly/opt: MghAacD_RzGU6QhlOEZlkg + balrog-es-AR-win64-nightly/opt: HmB-XrGZQm-UzagIwjWKCA + balrog-es-CL-linux-nightly/opt: SUnea6TnSH2sPSWuOG9xyA + balrog-es-CL-linux64-nightly/opt: WdBM7GOERy2cuCd8mVEYwg + balrog-es-CL-macosx64-nightly/opt: QUOwx1kQSNqwaP9MnDXSYw + balrog-es-CL-win32-nightly/opt: VFP_l4KBQ1etaRa8jCbRew + balrog-es-CL-win64-nightly/opt: Ap7jtdA6ScmzRe7z8yFpQw + balrog-es-ES-linux-nightly/opt: PW5Ig7r9ScW9o7NKsRO15A + balrog-es-ES-linux64-nightly/opt: GeqeAlM8SvyxkcqVCEBARg + balrog-es-ES-macosx64-nightly/opt: Onz1Hs84RMC48pRuYj9u2w + balrog-es-ES-win32-nightly/opt: Tiji7cExTz28_xmJseh4zw + balrog-es-ES-win64-nightly/opt: B4bXyftST7quXiqBa1h1-Q + balrog-es-MX-linux-nightly/opt: UjPDUIrUSxGfYeOxuOZ5cg + balrog-es-MX-linux64-nightly/opt: E5wcwfqlQ0GpxW1gzB9r7w + balrog-es-MX-macosx64-nightly/opt: bThYGEcnSrCfWOCjXoMCNA + balrog-es-MX-win32-nightly/opt: ZD6h9Qf8TtaiQ7ZqgZrd2w + balrog-es-MX-win64-nightly/opt: cmsYsgvIRsCzDtgdU4y5Dg + balrog-et-linux-nightly/opt: GiBqDlohSnuy6vbY4DwJ5A + balrog-et-linux64-nightly/opt: VVNXqBWvRgS8J5NcNfUhrQ + balrog-et-macosx64-nightly/opt: Lh-BJgZ0Q5iKOb0t3VtTHA + balrog-et-win32-nightly/opt: JDZ1DFwkQzW_Tr9ETbrPUg + balrog-et-win64-nightly/opt: cY07Rbh2RIibOrQuKnFwhg + balrog-eu-linux-nightly/opt: asIAvkZIRqiXwceEQiTYKg + balrog-eu-linux64-nightly/opt: cTJw1iD-SMiSv-dWD3vShQ + balrog-eu-macosx64-nightly/opt: BJDdvsUMToKkBpjuzrhBYQ + balrog-eu-win32-nightly/opt: aVTtsJwfQLqSz-p9HjMu-g + balrog-eu-win64-nightly/opt: NjRzHWQ6SPaABcPV0DXpUg + balrog-fa-linux-nightly/opt: RF3DpgiwTiOsA8Rg3OVRUw + balrog-fa-linux64-nightly/opt: aWQhSTDzS2OjPb3mMWGTGw + balrog-fa-macosx64-nightly/opt: DbDj6S-lTe-xjb8URM6odA + balrog-fa-win32-nightly/opt: FqmkVZMYTM2xC162PLx5Qw + balrog-fa-win64-nightly/opt: HH1Aki6VQWuOkF6xXgmavQ + balrog-ff-linux-nightly/opt: Gjv6dKOXREay6g4LqVTxUw + balrog-ff-linux64-nightly/opt: D-DZF90JQti2H-bCq6LNog + balrog-ff-macosx64-nightly/opt: ZUMYn_kERtiU4Q7v0ycmOA + balrog-ff-win32-nightly/opt: c0qhfQsdR0eroFir2VUdLQ + balrog-ff-win64-nightly/opt: JYS-UWkWSeqWps-XvDBK-A + balrog-fi-linux-nightly/opt: De4wh-d9ShylGSFDl7jabQ + balrog-fi-linux64-nightly/opt: UAxfptrKTRiJSJFKnECUnw + balrog-fi-macosx64-nightly/opt: NFQt7gsPTUGHOeFjki6zow + balrog-fi-win32-nightly/opt: RBl8SSJUTv-XxVwe_jXOiA + balrog-fi-win64-nightly/opt: N7V6EZ34TJeNP7LnO8FthA + balrog-fr-linux-nightly/opt: GkqdEEwgRfuxfZsjQOAMxA + balrog-fr-linux64-nightly/opt: Rcs4CQ6AQ4qZsElkbugfDg + balrog-fr-macosx64-nightly/opt: fPSCu0rmTxm-UyqZBeMelA + balrog-fr-win32-nightly/opt: KAkKkgYwTp2x3YlTC-D6nA + balrog-fr-win64-nightly/opt: NklDIW2BSnKOhCaMUq86Ww + balrog-fy-NL-linux-nightly/opt: CPxDa7ZDShe1_QXFUyy8pw + balrog-fy-NL-linux64-nightly/opt: B5ObfqGgQk6FG33KrmW-pA + balrog-fy-NL-macosx64-nightly/opt: ISaigasVRZmsfy9T2UOAHw + balrog-fy-NL-win32-nightly/opt: UYLXRFg4RgmvgcLLjHUy8w + balrog-fy-NL-win64-nightly/opt: frqOilM3SOK5d3JxBvQ2NQ + balrog-ga-IE-linux-nightly/opt: QIkcfnFCRCGEyocToe4DxA + balrog-ga-IE-linux64-nightly/opt: Ow-J3HdWTBWsJz_HsPi6eQ + balrog-ga-IE-macosx64-nightly/opt: IyiOcyUWRgunk0lbRZPuKg + balrog-ga-IE-win32-nightly/opt: RwbMzT_nQk26spNhR31ZHQ + balrog-ga-IE-win64-nightly/opt: ZzIODxRsS9Otj5_VQHdF4w + balrog-gd-linux-nightly/opt: KNge0B5nQeKJKmLDBZiQqg + balrog-gd-linux64-nightly/opt: Vk0TF3qwSfm9OcyqKEpMIg + balrog-gd-macosx64-nightly/opt: BtBAOrOJT-yx9a7ORzQeXw + balrog-gd-win32-nightly/opt: Sv9POXLcSGSmYQrjYLciVw + balrog-gd-win64-nightly/opt: c84wOr5fSp6NNZ_kyxnMeg + balrog-gl-linux-nightly/opt: b0swLaoBTVabLW5cjt5MzA + balrog-gl-linux64-nightly/opt: e0K9tiKERc-6HVF5TjOurg + balrog-gl-macosx64-nightly/opt: Az4bqSkCQJWjXk5D_ZBY3g + balrog-gl-win32-nightly/opt: U8f-p2jQQdCkvkmd_8XJ0w + balrog-gl-win64-nightly/opt: NVKHRVQCQAC3uXWx5KeCaA + balrog-gn-linux-nightly/opt: J2BqPR40R2-Re_WZvnEffA + balrog-gn-linux64-nightly/opt: ZqdcKPn4QOa6tdr6vbmYPA + balrog-gn-macosx64-nightly/opt: RQEoALq7T9OBsBEwuilnXw + balrog-gn-win32-nightly/opt: KCXCgOh2Rg23AT1c3rS5oA + balrog-gn-win64-nightly/opt: CdayaYyARE2wzSPoUb0FsQ + balrog-gu-IN-linux-nightly/opt: BeNmlUPvSRaRNhaK2C3kwQ + balrog-gu-IN-linux64-nightly/opt: OIDrOtJlRCe6GiyhVk3-ZQ + balrog-gu-IN-macosx64-nightly/opt: DNZuiDw6Stu2XtyIfx5H5A + balrog-gu-IN-win32-nightly/opt: Rz7IRp-2RR-jq3LAnJbCIw + balrog-gu-IN-win64-nightly/opt: DBzqsYEnTReTInyBlrJi4Q + balrog-he-linux-nightly/opt: N1dunI4kRQ-3giVlqNR4nw + balrog-he-linux64-nightly/opt: OuT4p4NmSw62FRxk3tsm5g + balrog-he-macosx64-nightly/opt: eQupL_WmT6OZcQ1IULqAvg + balrog-he-win32-nightly/opt: aJQt5kWdQC6Kc9-giUWpxQ + balrog-he-win64-nightly/opt: UFyWo1RITImQ_lLyFg8OMg + balrog-hi-IN-linux-nightly/opt: YzVty1J-SK6v0UAD3hH6Cw + balrog-hi-IN-linux64-nightly/opt: TT0JMIm9QYeBNWQgHP70xA + balrog-hi-IN-macosx64-nightly/opt: Kc8_9xuMQoCEcGVLNGiR4g + balrog-hi-IN-win32-nightly/opt: fdtUXfONRnK1xbvEa3aZoQ + balrog-hi-IN-win64-nightly/opt: PXgkdoYJQ6KgMTc62BPrZw + balrog-hr-linux-nightly/opt: Oq-BK2wOTHq8fJnQIRde_Q + balrog-hr-linux64-nightly/opt: NpDY6lIgQqaBBFp9hUosKg + balrog-hr-macosx64-nightly/opt: Ubj_rLxOTTuKFkn0tq6RkQ + balrog-hr-win32-nightly/opt: TjQpP_ORTI2t1-_CsZHF0Q + balrog-hr-win64-nightly/opt: MtGCGicqRcmQRpenIOaUow + balrog-hsb-linux-nightly/opt: JBoKxM7qTpmEliqXhjQl_A + balrog-hsb-linux64-nightly/opt: YJIi4S1nRcCH2DXdv54vMg + balrog-hsb-macosx64-nightly/opt: EXEOULv6RWemVnTOhZBu0w + balrog-hsb-win32-nightly/opt: CxNuqN1gT8KGxOIINyQ4RQ + balrog-hsb-win64-nightly/opt: BA6EJQnrQfuZOsF4IX_r1g + balrog-hu-linux-nightly/opt: GEYFOcFlSiipgLgcI6e_9w + balrog-hu-linux64-nightly/opt: X3LSUfqxSBKALAokIPwz_w + balrog-hu-macosx64-nightly/opt: QdZ0p1KISNKv_jE-IqEqZg + balrog-hu-win32-nightly/opt: WQJhsaZQTU-zI43-kDkinA + balrog-hu-win64-nightly/opt: EZIP0vFsTs-YVG2_PIfm7w + balrog-hy-AM-linux-nightly/opt: HItXaxfzTyiyr2tfg3uGPQ + balrog-hy-AM-linux64-nightly/opt: NkygKTfER8qSPA0nSefknA + balrog-hy-AM-macosx64-nightly/opt: c3Qi1PFEQLuyCPtR2UOfdg + balrog-hy-AM-win32-nightly/opt: K_jYlugwQ_uC_E09u8YFBQ + balrog-hy-AM-win64-nightly/opt: bYtD2x_0TomGvDaKe0Mrmw + balrog-ia-linux-nightly/opt: fe_frGwKSrm1Hc8WrMnfUQ + balrog-ia-linux64-nightly/opt: eCnoshQdRBSNseG2sGPkCQ + balrog-ia-macosx64-nightly/opt: AkGi2sIXR6y0LNkdKszjGw + balrog-ia-win32-nightly/opt: a-8FTNniQxCEFToRTDGzcg + balrog-ia-win64-nightly/opt: MncyyVJmTtqqLtPSPCablg + balrog-id-linux-nightly/opt: Sjr8ZZEATk6UKK9UYH_7ew + balrog-id-linux64-nightly/opt: JZ2K9gQ1TMe5jin2zyKr0g + balrog-id-macosx64-nightly/opt: X-dCLpigSkCY8S2wtmd7Kg + balrog-id-win32-nightly/opt: a6KrTDMJQg2-MntEL_NBFw + balrog-id-win64-nightly/opt: VpCJJxaCS3-3mWwSKBFWYw + balrog-is-linux-nightly/opt: aaLY4HnwTZaWO_DLwmOXMg + balrog-is-linux64-nightly/opt: MMOxvk69RtSlWz4XxvdmTQ + balrog-is-macosx64-nightly/opt: RT_gH966TGupSCK_Vv0YsA + balrog-is-win32-nightly/opt: XSSN6HHuSsiUxY6lnBellw + balrog-is-win64-nightly/opt: DCmPWBkXQriolP6NCUftnQ + balrog-it-linux-nightly/opt: O4znVj5xR920jovBZ9wL1A + balrog-it-linux64-nightly/opt: eUkNd9i4Ql2gQgM2U1nV3A + balrog-it-macosx64-nightly/opt: AhlO8ePHRkC50Rs4k9Fj7A + balrog-it-win32-nightly/opt: XGRfcDyITkGpO7mF3ewvKA + balrog-it-win64-nightly/opt: deerkNVjQp2tnmM9N25Ghg + balrog-ja-JP-mac-macosx64-nightly/opt: dWB6HzFfRs6cMempzZX9AQ + balrog-ja-linux-nightly/opt: XEbsI4QKQ_GhjP5_Xkx5ew + balrog-ja-linux64-nightly/opt: UvaLW53jS2OCpWnE2zfcqQ + balrog-ja-win32-nightly/opt: VIJJXTayQty8ZEna8ovBNw + balrog-ja-win64-nightly/opt: Kg50j4_PRzqk3P-nSdW59g + balrog-ka-linux-nightly/opt: ZcCN01QaR0muKW54W9izTw + balrog-ka-linux64-nightly/opt: TMUUZ_MASB6VSjPME6O1rA + balrog-ka-macosx64-nightly/opt: Ck2BGdtaRRuzGBh-cmcnqg + balrog-ka-win32-nightly/opt: GNZb24KDR_m4xMae0Bip7w + balrog-ka-win64-nightly/opt: DuDYSn2vQ0eJVcB7Bsfhhg + balrog-kab-linux-nightly/opt: CFSR5aiaTbqFCG5Yo2-waA + balrog-kab-linux64-nightly/opt: FehZS7G2Qjm5QyUZE1UPxQ + balrog-kab-macosx64-nightly/opt: fXXJGoVVSFWpwoEJHzAG3A + balrog-kab-win32-nightly/opt: ADIAa2bOQ-qJl1NH1m408g + balrog-kab-win64-nightly/opt: cKGLyEwCQiqOmnmLyunJDw + balrog-kk-linux-nightly/opt: Yb85sYu4SwGoJ4KUd6YwbQ + balrog-kk-linux64-nightly/opt: EU9V0GRYQwS4SLxg7mewNg + balrog-kk-macosx64-nightly/opt: NXF_GaIbQ3qDVm87vLGOZQ + balrog-kk-win32-nightly/opt: b9JwmBEBSruDv6PC2bitfQ + balrog-kk-win64-nightly/opt: aGPZndJ5QlisO2kVEPpAnw + balrog-km-linux-nightly/opt: cBW_p5DrSUGTbPv0lQ0JvQ + balrog-km-linux64-nightly/opt: EkElRlnkQj2LZXwxi8oGvQ + balrog-km-macosx64-nightly/opt: B_qE5wKjSpW5oEywKmrn2A + balrog-km-win32-nightly/opt: TRuqUDeJQS2-kL0cXvNu2A + balrog-km-win64-nightly/opt: F7hyOErTR42Js9uMF1vYwA + balrog-kn-linux-nightly/opt: UlVAm9s5R7uqbzuQHYaxSw + balrog-kn-linux64-nightly/opt: cDcO-DovST22BmCFd8LUTw + balrog-kn-macosx64-nightly/opt: DKe7AR13R6C2Q54m_G7-hg + balrog-kn-win32-nightly/opt: G0s1XzBZRmeVd4KEN9lYFg + balrog-kn-win64-nightly/opt: RSnbnXhqQMisHbsLtSFdHA + balrog-ko-linux-nightly/opt: LAPKLGDxTG62gLRsP3iUSg + balrog-ko-linux64-nightly/opt: W1PpJkNdT-e5O2rw_SU1eA + balrog-ko-macosx64-nightly/opt: DRwmnyjdT4qHPZUdKsfquA + balrog-ko-win32-nightly/opt: OOl9RHViQP2QtceyDP_P8w + balrog-ko-win64-nightly/opt: Mk1n6ck2RSCeTY4el5a9FA + balrog-lij-linux-nightly/opt: MdE9C56aQqaSmQ37AKeIow + balrog-lij-linux64-nightly/opt: Bii84tpVSdG_8u5nQr5MSQ + balrog-lij-macosx64-nightly/opt: BWsAOK6dT22n6reG0QVmqw + balrog-lij-win32-nightly/opt: dJwWH8bXSxWCNEHdItPlJQ + balrog-lij-win64-nightly/opt: MHvj25UaSvmI8AVYkd9Isg + balrog-linux-nightly/opt: ekJMhrTOSFmX6YN6Mn2QvA + balrog-linux64-nightly/opt: CMZ7-v5IRNmr5LaemE0pEg + balrog-lt-linux-nightly/opt: DXMiFxCuSHawkAOq9RFH5w + balrog-lt-linux64-nightly/opt: efHE3thYR4unpV5-eP4Ytg + balrog-lt-macosx64-nightly/opt: PTfSgjsxRDWDjjYy_ur7gg + balrog-lt-win32-nightly/opt: G50N-KBRRH-N2Hp9VQU3nQ + balrog-lt-win64-nightly/opt: UGPJO2cdRVCkQUPBPZN8aw + balrog-lv-linux-nightly/opt: UVSiri0LRgyO0FQyZwLtng + balrog-lv-linux64-nightly/opt: c-cMqOAYRySx4i3c6iEhbg + balrog-lv-macosx64-nightly/opt: X9MQa3wiQ-G-bt6YRafkHg + balrog-lv-win32-nightly/opt: bGpJWUzsSny9gw4B6UNm7Q + balrog-lv-win64-nightly/opt: QcHSzAguSzunClTujUTJAg + balrog-macosx64-nightly/opt: KlkVOKDRRmyWotmvlxZdDA + balrog-mai-linux-nightly/opt: bLHhHvFESe2akVZEqApiHw + balrog-mai-linux64-nightly/opt: GZxuK9pbRxucfZLvq4lHMQ + balrog-mai-macosx64-nightly/opt: d3cN9eojT0Kt9DXRHeZYOg + balrog-mai-win32-nightly/opt: dCs26597RpiwLvASHzdDBw + balrog-mai-win64-nightly/opt: b5c4BZ8FSB6ebJ_DzOZBzA + balrog-mk-linux-nightly/opt: Ok_6_DqeRhSd7dJkhx3CIg + balrog-mk-linux64-nightly/opt: NoqSdqQ8RfS2QdBMnFAJrw + balrog-mk-macosx64-nightly/opt: X2th-6daR0u7lhKOrwJLLg + balrog-mk-win32-nightly/opt: Or1wDZbATY2jV1ta1GiAaQ + balrog-mk-win64-nightly/opt: SNX98XyfRO6bKfeIbGfAYg + balrog-ml-linux-nightly/opt: Zg2yy09NQf-SgWXwwBbBhQ + balrog-ml-linux64-nightly/opt: NtIjWgU4RyyuEnLUW6gccw + balrog-ml-macosx64-nightly/opt: AlkeoLiuQBKnchgZQeHnpw + balrog-ml-win32-nightly/opt: HdDWaHXeR7Slu9eiBWJepw + balrog-ml-win64-nightly/opt: NAf9qvylR4ahRLsFTF_8Fg + balrog-mr-linux-nightly/opt: WqNbg4SPRzOLt_-IoGDYrA + balrog-mr-linux64-nightly/opt: aeCfu6CMT9O6JBrJwY7_FA + balrog-mr-macosx64-nightly/opt: J7W_f1cvQDyWS97PbzKkCw + balrog-mr-win32-nightly/opt: U6wsLveESKGOOQOB9VdthA + balrog-mr-win64-nightly/opt: awF2b-b9TxekOPsrfaIZpQ + balrog-ms-linux-nightly/opt: PYXICZ7UTGWVzYmfk67r_w + balrog-ms-linux64-nightly/opt: CDuq21JARd2a0xEoxvznog + balrog-ms-macosx64-nightly/opt: WPXzWN8kRx6STb49ksnJqQ + balrog-ms-win32-nightly/opt: XxotqxMkTwq4PQXsQz-3NQ + balrog-ms-win64-nightly/opt: U8F1h9NQSuiN8uPnFqkBYg + balrog-my-linux-nightly/opt: H6saTKAgTLyQztqxJOUb3Q + balrog-my-linux64-nightly/opt: Tp4aFWdnRsu9b1ZSYggt1g + balrog-my-macosx64-nightly/opt: BFE6X54tRkuARy3GHyvw2A + balrog-my-win32-nightly/opt: KYXQB8VWSwWr9ia939m8kw + balrog-my-win64-nightly/opt: GGflOQw6S9SYtk7k8LB9iA + balrog-nb-NO-linux-nightly/opt: YxCzeXZLSWSCj6pOT1IqHw + balrog-nb-NO-linux64-nightly/opt: Nw9zHzikScO0ypkdfdCCoQ + balrog-nb-NO-macosx64-nightly/opt: WYAdKM0ST7y5wYf71acd1g + balrog-nb-NO-win32-nightly/opt: f10oG1qIRpGLm5uuCHsMMg + balrog-nb-NO-win64-nightly/opt: bWJmXZEbRlun5yWwOPoXig + balrog-ne-NP-linux-nightly/opt: P_Vb58pJRWKL3vjG0lrQdQ + balrog-ne-NP-linux64-nightly/opt: F_cFXNvQQXiMRKXOiFSKgQ + balrog-ne-NP-macosx64-nightly/opt: RPhoUjfRRxCG4FtJ7of3Ng + balrog-ne-NP-win32-nightly/opt: InSCvI2hTWuCPL0Ok76vKg + balrog-ne-NP-win64-nightly/opt: JLTndBMdSOyQb3jVa07zSg + balrog-nl-linux-nightly/opt: ACVJZ8hxSE6QBZLqhlxHnQ + balrog-nl-linux64-nightly/opt: eIzexzIlQumJBaPOaIgkZg + balrog-nl-macosx64-nightly/opt: Ccp-kyKFQzasGtChnv5sgA + balrog-nl-win32-nightly/opt: Jv6GNwlpQwyFZTFulfyNEQ + balrog-nl-win64-nightly/opt: Mq_ElD-lSwSCo1QvpKnhSQ + balrog-nn-NO-linux-nightly/opt: DKvg91LCTL2yLUzRXtR5mg + balrog-nn-NO-linux64-nightly/opt: CVUYiU3gSpuDlhgS384Ahw + balrog-nn-NO-macosx64-nightly/opt: NWFLTukcTSmpopm7SCGv4g + balrog-nn-NO-win32-nightly/opt: D-Cnozf6Q7ugdITQhDKrcA + balrog-nn-NO-win64-nightly/opt: LrRTNf4oS16r0ZEP_z97IQ + balrog-oc-linux-nightly/opt: KJ-Nur8JRyOO7OzOqHM3Qw + balrog-oc-linux64-nightly/opt: Pguw6navS3SCoUQJsZnQ7w + balrog-oc-macosx64-nightly/opt: MBZJRarrSwmyHxheywr5rg + balrog-oc-win32-nightly/opt: W5eLcQ7YQJG1e-PViQ2nOg + balrog-oc-win64-nightly/opt: BWj7X42SQaafAzmMd4W3Kg + balrog-or-linux-nightly/opt: WJYiK8muQFS0Nye767bQbg + balrog-or-linux64-nightly/opt: E90kkjMsRwK75_87LHlRFg + balrog-or-macosx64-nightly/opt: WDwOpQgHTdylL1Hknz3_WA + balrog-or-win32-nightly/opt: Kf6QNA5aTq-2ZDn56XWXMw + balrog-or-win64-nightly/opt: YgVQwvbJS8a0QXCHBsTmlw + balrog-pa-IN-linux-nightly/opt: CHg-cEZVTYqe6S9cu3X8eA + balrog-pa-IN-linux64-nightly/opt: MuEcWiN3SyypQWeRPteKUg + balrog-pa-IN-macosx64-nightly/opt: OoNdw9ikQiWBSeXf6YUkfg + balrog-pa-IN-win32-nightly/opt: F2H_siTdT6mddR8Lh2dEOw + balrog-pa-IN-win64-nightly/opt: do2_GMiaRC26EXyysNRCUw + balrog-pl-linux-nightly/opt: e4gszrZSROuS4F98EhoswA + balrog-pl-linux64-nightly/opt: A8dwNOqAQwmkuxsJn1qYdA + balrog-pl-macosx64-nightly/opt: MIM481ukQlq4r2fTfIy4Fg + balrog-pl-win32-nightly/opt: KgFtivHCQ_WIvna7CTdGdg + balrog-pl-win64-nightly/opt: R3p5M73FSdC7BlxYrCJvnw + balrog-pt-BR-linux-nightly/opt: OEAyq4tQSFKNKn-GYaH4GQ + balrog-pt-BR-linux64-nightly/opt: JTuOo598Rt2ViGlKO33fOQ + balrog-pt-BR-macosx64-nightly/opt: BXiTQOYHR7yliUCB3B_rwg + balrog-pt-BR-win32-nightly/opt: dVAAOKEQT1WeaItVAHJhbA + balrog-pt-BR-win64-nightly/opt: VYsr8HYNQueTAuzhFYPqdw + balrog-pt-PT-linux-nightly/opt: e9rATKmXRIyGNEB1eFn0gg + balrog-pt-PT-linux64-nightly/opt: AHIkHgmhQy2W4P5Fp_ifKQ + balrog-pt-PT-macosx64-nightly/opt: ImZeQ-QaQziQN-WNFY1KiA + balrog-pt-PT-win32-nightly/opt: F_GswQh9QxOMZCruIsTXOg + balrog-pt-PT-win64-nightly/opt: LCuDACU_RPe-99MTATT4Ew + balrog-rm-linux-nightly/opt: VU9c3QhsQWyNvuhtFT2NGg + balrog-rm-linux64-nightly/opt: Nwq0bb_hS1WBQqstzXIHwg + balrog-rm-macosx64-nightly/opt: TA8lYeGySBCFRsQ3XF8I5Q + balrog-rm-win32-nightly/opt: QK3o93rMTkaFTIIoxaHKqA + balrog-rm-win64-nightly/opt: AnsIfJWZSryW3cQt1sjE8Q + balrog-ro-linux-nightly/opt: TJARjkz9TR-CvkhRvFDUQA + balrog-ro-linux64-nightly/opt: DpKjAmBNQ7uwAUsBmGHiAA + balrog-ro-macosx64-nightly/opt: F-GoOgIgQBmtTiSANF9MbQ + balrog-ro-win32-nightly/opt: H3U18uOVQaGRz7DbnN8JnQ + balrog-ro-win64-nightly/opt: HJNhsJkxRNOJhvtm_KXUDg + balrog-ru-linux-nightly/opt: aC-pm8lGQdODftkNeY-QNQ + balrog-ru-linux64-nightly/opt: ct8Rip9EQoiyhGDFJ_4z1g + balrog-ru-macosx64-nightly/opt: DaMom17iT9-oBTKaMsE5Zw + balrog-ru-win32-nightly/opt: U8-kh1cQSfqBUqUo8thaFQ + balrog-ru-win64-nightly/opt: DdPGAC7qRLSGGE6njzissg + balrog-si-linux-nightly/opt: anexiubEQk-ODvWf39L-zw + balrog-si-linux64-nightly/opt: WeRZXk4BSXiypE_yjfSogQ + balrog-si-macosx64-nightly/opt: O_orFFu7T9erZjjjKMTsDQ + balrog-si-win32-nightly/opt: QsRbwTurToS3fXaEWfAhOw + balrog-si-win64-nightly/opt: YZR4qyjUTXyhSmWKBdpaZQ + balrog-sk-linux-nightly/opt: OFzREkPFT6qwXGam8ZigTQ + balrog-sk-linux64-nightly/opt: PE60PAv3TeyhZaLAr3D4OA + balrog-sk-macosx64-nightly/opt: UT7WU0v0S_CDqCaLALj8GQ + balrog-sk-win32-nightly/opt: HTD-6kxNQX-YN_KcaYfdLQ + balrog-sk-win64-nightly/opt: WEoV-Sa0QPWUmiWqTtc7Kw + balrog-sl-linux-nightly/opt: CbFzDyuVRre0ZrXouip9UA + balrog-sl-linux64-nightly/opt: exCUCPAjTzyBjO2O0_0pzA + balrog-sl-macosx64-nightly/opt: YI8FFWlzRxOdJR_-FO4eAg + balrog-sl-win32-nightly/opt: GiqhTaLXQh2Bpzd271qCjw + balrog-sl-win64-nightly/opt: A5GTLUiGT42cOdyivUtDuw + balrog-son-linux-nightly/opt: NhvIhV1tTrySeTVpzgtEyA + balrog-son-linux64-nightly/opt: bduSzICCQLu6WvHiMaxdzg + balrog-son-macosx64-nightly/opt: EJJHjzkDThiwDuAeAh5VNg + balrog-son-win32-nightly/opt: ZNbK3a5sTSSbiOECgLNsag + balrog-son-win64-nightly/opt: T0oiVwdCTlefGOZVihuwrA + balrog-sq-linux-nightly/opt: DoYxWv6QQiGNaCHDNXAthg + balrog-sq-linux64-nightly/opt: P0YdE6xwTRiz0UR4uvlW5w + balrog-sq-macosx64-nightly/opt: Pkw1ppUyQ-yz5_jTsCenpA + balrog-sq-win32-nightly/opt: VBheud2aSnmNL63IUMRCoA + balrog-sq-win64-nightly/opt: O2cbWiNuT2SquJ78LQGyCA + balrog-sr-linux-nightly/opt: LTKkqyy2RYikeBLCLO5CCQ + balrog-sr-linux64-nightly/opt: GZOmoFaeRcKHA254J0zteQ + balrog-sr-macosx64-nightly/opt: IXfrYq81Q-OlksTHB-ezew + balrog-sr-win32-nightly/opt: Dm5ymAflQPmek-2h3wiijQ + balrog-sr-win64-nightly/opt: WxXrmEfMR-qigrDsT7wY9A + balrog-sv-SE-linux-nightly/opt: GtXUw4T4TxSD25JOud3DkQ + balrog-sv-SE-linux64-nightly/opt: WZG8gd56Q4KM2JudfaUfpQ + balrog-sv-SE-macosx64-nightly/opt: XQInyRcFR8y1q37EMxldhw + balrog-sv-SE-win32-nightly/opt: X4Uk9hxdQ9GAu0v-lV2R8g + balrog-sv-SE-win64-nightly/opt: TkIcSo7-SX2uuNNoathAdg + balrog-ta-linux-nightly/opt: FAjXOxsZQXmQ93dLXXjOXA + balrog-ta-linux64-nightly/opt: J0__eZNMRC-PH0NM59lyFQ + balrog-ta-macosx64-nightly/opt: IHJ451xSQmSZKa_GXDATOQ + balrog-ta-win32-nightly/opt: GX4f1vlFRaOz_cvFJWywMw + balrog-ta-win64-nightly/opt: GZw1C4GzQh2Y1kNzWkJF-w + balrog-te-linux-nightly/opt: JyWAxz81T1aVuTCTPraTTQ + balrog-te-linux64-nightly/opt: Aqnb5gDPSuKCBnLs9GmsAA + balrog-te-macosx64-nightly/opt: eSQHKhqYSj2JZWUB5UlYiA + balrog-te-win32-nightly/opt: GCEyKTkATlKzMJFMUsTtsg + balrog-te-win64-nightly/opt: VUnJzuysTlmBghOUoBfdDg + balrog-th-linux-nightly/opt: LNCaGGgcR62D27NUFhpBaA + balrog-th-linux64-nightly/opt: W1463aBOS_WTNnQB4jghww + balrog-th-macosx64-nightly/opt: HY-y8hBzSYGuC2ItQf4eSg + balrog-th-win32-nightly/opt: IG_H5nl1Sf64KmhYSu8C8g + balrog-th-win64-nightly/opt: YiaKcNTITg2sGu5t4l7-mw + balrog-tr-linux-nightly/opt: Z-8L5ROiSJieeQE5G-C7Kw + balrog-tr-linux64-nightly/opt: KqmVNY16RLCnPKH1SmCeyQ + balrog-tr-macosx64-nightly/opt: GJtwPGGvS1qW60rk_GjCSA + balrog-tr-win32-nightly/opt: GFH1dz1xThy5eIVXDM_KZw + balrog-tr-win64-nightly/opt: NsRoFsdHSkWt6J_Jx_Co9w + balrog-uk-linux-nightly/opt: PVyiC-LLRCOXAaPNaGn5SQ + balrog-uk-linux64-nightly/opt: WH8KxoR_TmGjymDYTrX3eg + balrog-uk-macosx64-nightly/opt: E-hccrgUQHKEuh1TKVSB3g + balrog-uk-win32-nightly/opt: MkKd5DJrRdyiHgBcXb-9kw + balrog-uk-win64-nightly/opt: RMRXqKHCSvyk1RHgqaBRkg + balrog-ur-linux-nightly/opt: bw7BR_2NQUC3nlqVGXKpYA + balrog-ur-linux64-nightly/opt: GeSV-OR6QR6lGarVoxLFqQ + balrog-ur-macosx64-nightly/opt: TTXju9kVQvmuDTuiek9gCA + balrog-ur-win32-nightly/opt: AAg7nufwTSWtfgw7YQFE3g + balrog-ur-win64-nightly/opt: Fnmf4iRzTUu4J7USj_Y5TA + balrog-uz-linux-nightly/opt: NBp0rjZMS0CSQJVVJzV8VA + balrog-uz-linux64-nightly/opt: Q4lhcQn2T_-qs_ywhmuh-w + balrog-uz-macosx64-nightly/opt: N1Pqi9TGQU6PsQtQzof2FA + balrog-uz-win32-nightly/opt: JweAJDkeRg6wZm5IRVTN6w + balrog-uz-win64-nightly/opt: X9iG8SpxThutsg2EeffXAA + balrog-vi-linux-nightly/opt: D8g_QbiWTxy5xtiSL5d-Ow + balrog-vi-linux64-nightly/opt: XVmMaUfMQOq-OmgXzVPj3w + balrog-vi-macosx64-nightly/opt: b8aKXuFOSP2NDCLn3v_woQ + balrog-vi-win32-nightly/opt: PEO78e-ZQmGc2bAyvK1uxA + balrog-vi-win64-nightly/opt: ZinD5shzQKetCc0YaZexrQ + balrog-win32-nightly/opt: QfNtoSw9Q3CdhbLg4q2-rA + balrog-win64-nightly/opt: Mn220ZDRTvWqh866Y9KUoA + balrog-xh-linux-nightly/opt: HHOKDOlZS0u9fAcyHF3skA + balrog-xh-linux64-nightly/opt: O8eFrG61TQS5JPolPW1Jeg + balrog-xh-macosx64-nightly/opt: AfCJ7rbbT9eQS195BdLEfw + balrog-xh-win32-nightly/opt: RY6gI8H3R7iRhZTvhB_mMw + balrog-xh-win64-nightly/opt: enayoJcnRmqCzPZi325Vew + balrog-zh-CN-linux-nightly/opt: fDKXIeHhTP-DRXkrXn2fxQ + balrog-zh-CN-linux64-nightly/opt: HFxVAcyISeCGv0bBGpCDxg + balrog-zh-CN-macosx64-nightly/opt: PVkmmfRnSaSs9dW36DpKBw + balrog-zh-CN-win32-nightly/opt: RE6erpBkRyuVu-1HcymHfQ + balrog-zh-CN-win64-nightly/opt: If36cKEUQTSixHdvbW1mHw + balrog-zh-TW-linux-nightly/opt: C_U96UTuS1GJZPJs-375Lg + balrog-zh-TW-linux64-nightly/opt: Zz78FXZCS8KL6I1fV6qsBw + balrog-zh-TW-macosx64-nightly/opt: KkrfoCfpRkm9TxY6swSUgA + balrog-zh-TW-win32-nightly/opt: Qu7-dbj-Sey4GagGqYPDiQ + balrog-zh-TW-win64-nightly/opt: bb-JQkJtSFOnSKd8rSGavA + beetmover-checksums-ach-linux-nightly/opt: Nm77rmLDRtKdJ1DK7nUViw + beetmover-checksums-ach-linux64-nightly/opt: Ewvg93KWTde_mINvQYEVxg + beetmover-checksums-ach-macosx64-nightly/opt: BrASrufAQoCGrVceWOp2ww + beetmover-checksums-ach-win32-nightly/opt: VFIbxagjQ8-fxIiG6gk7SA + beetmover-checksums-ach-win64-nightly/opt: Hqa0AToLTbqsoPCwjnB8Gg + beetmover-checksums-af-linux-nightly/opt: dBQKDFOURk-zkLUGzv1fzw + beetmover-checksums-af-linux64-nightly/opt: EM557doETCGVO5SI19q5xQ + beetmover-checksums-af-macosx64-nightly/opt: dCoFnXreSSGnR7C-R6EeVQ + beetmover-checksums-af-win32-nightly/opt: FOkd8j87Sa6LpIwLpw6-aw + beetmover-checksums-af-win64-nightly/opt: UWdNdNIlQ9emKSiXYnNW7A + beetmover-checksums-an-linux-nightly/opt: dMbVvcIAROuIFabxkQw87A + beetmover-checksums-an-linux64-nightly/opt: Mn2wYcr2QZyap4FIpkxQ3A + beetmover-checksums-an-macosx64-nightly/opt: bubZe4CRSHSlT7CCiE3EIg + beetmover-checksums-an-win32-nightly/opt: eJpnZMHdTyeSHAFUCfryJw + beetmover-checksums-an-win64-nightly/opt: WxnW8WnGSaal_ClOcRsb7A + beetmover-checksums-ar-linux-nightly/opt: M_hdbIIUQUO1pD5ThpNJYA + beetmover-checksums-ar-linux64-nightly/opt: S2kNm9viS8Gk0cJ__0NVYQ + beetmover-checksums-ar-macosx64-nightly/opt: X72-BB9mQr2bfT89SKBV-w + beetmover-checksums-ar-win32-nightly/opt: DoJyePIQTci03-uA2lnR5w + beetmover-checksums-ar-win64-nightly/opt: UjYvy2c8TPayNO8KUzwd7Q + beetmover-checksums-as-linux-nightly/opt: FUlJZHbCRGOd0hJiVdf79w + beetmover-checksums-as-linux64-nightly/opt: QPQ9PAcFRiSFlkJdq8CHwA + beetmover-checksums-as-macosx64-nightly/opt: NZck94GQQAG-tJ_T70PO4g + beetmover-checksums-as-win32-nightly/opt: e9zDJV97Rcyai-c7h8OqnA + beetmover-checksums-as-win64-nightly/opt: azTM5UFQQH2ZagUvGmMT_Q + beetmover-checksums-ast-linux-nightly/opt: Qv5nrScaRpSpEe-StlmreQ + beetmover-checksums-ast-linux64-nightly/opt: SC-TRDRYRki8tgoVK5IBgg + beetmover-checksums-ast-macosx64-nightly/opt: Ysby0MfuTEqcribSYUdJqA + beetmover-checksums-ast-win32-nightly/opt: fHYSestFTHiaoVvh9Txw0Q + beetmover-checksums-ast-win64-nightly/opt: VhvIBnu0R1W84EpD88n5-w + beetmover-checksums-az-linux-nightly/opt: Piw8kRTUQQ-BGPWUNClj7Q + beetmover-checksums-az-linux64-nightly/opt: NIG3NecCQVem_N_zNKobLQ + beetmover-checksums-az-macosx64-nightly/opt: K5jy73BqTW2MqpNeuIb9EA + beetmover-checksums-az-win32-nightly/opt: cqQtCEMQTjGB81T0Yj3yFQ + beetmover-checksums-az-win64-nightly/opt: eb_iWnJ7ReKDSKtlv0PdrQ + beetmover-checksums-be-linux-nightly/opt: KfV89hg8RHOzZFieuD1CMA + beetmover-checksums-be-linux64-nightly/opt: adNuYfN9SyeWy130IVa7ag + beetmover-checksums-be-macosx64-nightly/opt: IdjkMmtyTE2BN6YCW3tqDg + beetmover-checksums-be-win32-nightly/opt: ZQrM5f1HQWa8u1JRr8v_Cw + beetmover-checksums-be-win64-nightly/opt: CAAP0uGgSQCtcUi_K2nhQA + beetmover-checksums-bg-linux-nightly/opt: V6Vprr22Rga-y7JbwGfYyw + beetmover-checksums-bg-linux64-nightly/opt: eLr9jTfXQlOJwwwzMCW0-w + beetmover-checksums-bg-macosx64-nightly/opt: cJpzfQeYSJ6KNx6M8LkJVg + beetmover-checksums-bg-win32-nightly/opt: HhFhVmscRISeG5uEz5MsbA + beetmover-checksums-bg-win64-nightly/opt: CB8WHIb8QqOncRc7Sk7C3g + beetmover-checksums-bn-BD-linux-nightly/opt: RVSDsC5oQU-LNl9puGt9PA + beetmover-checksums-bn-BD-linux64-nightly/opt: TF5xEcncQQ6CprQ8DimG7g + beetmover-checksums-bn-BD-macosx64-nightly/opt: MV0bw7APSAKMWQuBPPtsVg + beetmover-checksums-bn-BD-win32-nightly/opt: eGhCubkWT62hRMH9Z_5W8g + beetmover-checksums-bn-BD-win64-nightly/opt: HIcP8OHdQgOVu3e85j8lMg + beetmover-checksums-bn-IN-linux-nightly/opt: Pclq36-MS5qxtGAbx9DsaQ + beetmover-checksums-bn-IN-linux64-nightly/opt: BeC2_UQyQGqYsn8brBTiig + beetmover-checksums-bn-IN-macosx64-nightly/opt: dTSirGwDQxG-nvQIS0s0ZQ + beetmover-checksums-bn-IN-win32-nightly/opt: bBV65gB9QEaQrh_woxSFmg + beetmover-checksums-bn-IN-win64-nightly/opt: cmFqMMwLTsKG4QdP_VH4qA + beetmover-checksums-br-linux-nightly/opt: FUufxAT_T6Cy9iPdNOlb7Q + beetmover-checksums-br-linux64-nightly/opt: EcuiwfP6Te2qSoTdK4pGVA + beetmover-checksums-br-macosx64-nightly/opt: aomoy8wFSUqDBuBPpTjmdQ + beetmover-checksums-br-win32-nightly/opt: FDKQgMO1RnCsrEczXc10EQ + beetmover-checksums-br-win64-nightly/opt: caZ8J9FNQ5qz8d0RKf0gxA + beetmover-checksums-bs-linux-nightly/opt: axgAa6R_SiSJ0bN71F26Qg + beetmover-checksums-bs-linux64-nightly/opt: Z6dozKJLTV6BeQK9DRNVlw + beetmover-checksums-bs-macosx64-nightly/opt: egafsI2XQUKqQtMQxGEpVg + beetmover-checksums-bs-win32-nightly/opt: ZQMoSL4-T7Wk0y9cZaaHAQ + beetmover-checksums-bs-win64-nightly/opt: JVEcuwhMTpicCVp-yy4Mcw + beetmover-checksums-ca-linux-nightly/opt: GGuCB7CGT0OyuSGBVYB7Pg + beetmover-checksums-ca-linux64-nightly/opt: b7mTJV4FSAyRsyRqaf-xhg + beetmover-checksums-ca-macosx64-nightly/opt: czVRc1t2QEG_aJPrjsmicw + beetmover-checksums-ca-win32-nightly/opt: d0DtFAVCRqe24Nc7fT5Wfw + beetmover-checksums-ca-win64-nightly/opt: ebWkzgYZTB2F473XTVrm-A + beetmover-checksums-cak-linux-nightly/opt: UtdW8lTHRAi3qDM7QABriA + beetmover-checksums-cak-linux64-nightly/opt: TcyTYs72TjuXWTomFhuwAA + beetmover-checksums-cak-macosx64-nightly/opt: dKoeHGwFSUWepI1_KIA9Ow + beetmover-checksums-cak-win32-nightly/opt: BtUiXrQuQo6Qpj92h8rXhA + beetmover-checksums-cak-win64-nightly/opt: Ahj6tcIRReSgCgUs4UBE8A + beetmover-checksums-cs-linux-nightly/opt: KMgZiSI4S_-JjmRiLLoXQA + beetmover-checksums-cs-linux64-nightly/opt: DnMF7gDLT0GKPoMpxYMT4g + beetmover-checksums-cs-macosx64-nightly/opt: MSuc0dbtR4u7rcHgv5AFCg + beetmover-checksums-cs-win32-nightly/opt: Sqx5cpbzRe68prg3cWiUnw + beetmover-checksums-cs-win64-nightly/opt: BXfraByPSZG_Wu2-YN6LvA + beetmover-checksums-cy-linux-nightly/opt: dGXDKQJcRlegjfwU80X2nw + beetmover-checksums-cy-linux64-nightly/opt: ZFe9EnZOQhyFnwrbHCP_fw + beetmover-checksums-cy-macosx64-nightly/opt: IN_KS6b3QY-lIOwjjoHWgg + beetmover-checksums-cy-win32-nightly/opt: WLA3m7LFSH-keWUFGnFdcA + beetmover-checksums-cy-win64-nightly/opt: Czu9cYg_T7-i4k6iqNCpRQ + beetmover-checksums-da-linux-nightly/opt: SOnlCCQ2Qd-mhH48tpHHxQ + beetmover-checksums-da-linux64-nightly/opt: S14qPsReSHaoZlTriz8xOw + beetmover-checksums-da-macosx64-nightly/opt: UkAG7VzdRUOywv5lzPhq-g + beetmover-checksums-da-win32-nightly/opt: M8r-01E5RSaYUrPx9mq_Bw + beetmover-checksums-da-win64-nightly/opt: Ad4tLGFoRLiuk-ljvxXngw + beetmover-checksums-de-linux-nightly/opt: TyLF1xfYRIy1viFXUyLMYg + beetmover-checksums-de-linux64-nightly/opt: LabrhGhsRzOF7zk_Zbg4DA + beetmover-checksums-de-macosx64-nightly/opt: TrGHw3mRSfO3ERL5p20_Pg + beetmover-checksums-de-win32-nightly/opt: anCv6HObS6iopiMPAT1ffg + beetmover-checksums-de-win64-nightly/opt: GS0-Xue5T6SibQfgVVZeuw + beetmover-checksums-dsb-linux-nightly/opt: IxAlW_OFSuOjvmftjcJoEg + beetmover-checksums-dsb-linux64-nightly/opt: aIz3KOIpRbuoTfUGSoUBwQ + beetmover-checksums-dsb-macosx64-nightly/opt: To8aqz9aSYus1z5veSKozA + beetmover-checksums-dsb-win32-nightly/opt: A482lLazQk698rF3CNIcLw + beetmover-checksums-dsb-win64-nightly/opt: HPC7_pxJTre73mZj1ePRwQ + beetmover-checksums-el-linux-nightly/opt: Xctf0DGJQJakgCSgxIOd7g + beetmover-checksums-el-linux64-nightly/opt: KD9WI3MZReWseDE9goxzVg + beetmover-checksums-el-macosx64-nightly/opt: GnMMcu_8SR2FyKUpkuCW7g + beetmover-checksums-el-win32-nightly/opt: e2WQfzHmSdicHmnMjsAang + beetmover-checksums-el-win64-nightly/opt: GAnsNPTwQ3WnYGVbB9bMlA + beetmover-checksums-en-CA-linux-nightly/opt: O0_V5kW2S765-gJPE4gtXw + beetmover-checksums-en-CA-linux64-nightly/opt: XphQJtyMTYmlzdtuHru04Q + beetmover-checksums-en-CA-macosx64-nightly/opt: FGfCetXRRbO-I1Uqh2THtQ + beetmover-checksums-en-CA-win32-nightly/opt: YO7ehwrNSmCEf_FJYjMXeg + beetmover-checksums-en-CA-win64-nightly/opt: HTSb1GJLROCRTVZY1-nKbw + beetmover-checksums-en-GB-linux-nightly/opt: YAeqw2-TSOCGKuwaQJRp-g + beetmover-checksums-en-GB-linux64-nightly/opt: DKps9psqS4qIBszhhT2ulw + beetmover-checksums-en-GB-macosx64-nightly/opt: PVsgLnZ1RPmDQt5PXq9taA + beetmover-checksums-en-GB-win32-nightly/opt: b6YFSmueRoGVK9n9Zh6pGw + beetmover-checksums-en-GB-win64-nightly/opt: Lb9nwud4QGGBg9tCcFlHlA + beetmover-checksums-en-ZA-linux-nightly/opt: GB8GdFdFQ0yv2yK5aJOj_g + beetmover-checksums-en-ZA-linux64-nightly/opt: VfQC7y1xQu-aT2-JQYo0vg + beetmover-checksums-en-ZA-macosx64-nightly/opt: KQ-gEpF3RxSaiT3OUkOW3A + beetmover-checksums-en-ZA-win32-nightly/opt: Dp6lw_HhQzq4_LmboyIaeg + beetmover-checksums-en-ZA-win64-nightly/opt: HGWHMPqnR1S7s0Awn2nVZQ + beetmover-checksums-eo-linux-nightly/opt: bfXI_I27RWGB3SRIJIBLog + beetmover-checksums-eo-linux64-nightly/opt: FTljcZryR9ST8IshCDW3hA + beetmover-checksums-eo-macosx64-nightly/opt: H5O4Co0PR9CKxRcJkyQnzA + beetmover-checksums-eo-win32-nightly/opt: RrayaUjDSrq9arSjXsgBqQ + beetmover-checksums-eo-win64-nightly/opt: Kxc15D3-TOingp1QE_H6-A + beetmover-checksums-es-AR-linux-nightly/opt: dD62g8ldQESJ8vGXODN9hQ + beetmover-checksums-es-AR-linux64-nightly/opt: QnVtkz3HSzuX8MA9rFRNLQ + beetmover-checksums-es-AR-macosx64-nightly/opt: KLoO0EeeRZ-Q8LtpMXgcAw + beetmover-checksums-es-AR-win32-nightly/opt: Z7PizvEnRj-Cmu34vaGLZw + beetmover-checksums-es-AR-win64-nightly/opt: TLBuXY8HTHioaigITtU4GQ + beetmover-checksums-es-CL-linux-nightly/opt: Q_a59wkKST-r-RqqzjdVpQ + beetmover-checksums-es-CL-linux64-nightly/opt: H7_qpWp6RAq-reqzrmEJRQ + beetmover-checksums-es-CL-macosx64-nightly/opt: dQs2yYnHRii8gXIte5L9qA + beetmover-checksums-es-CL-win32-nightly/opt: HIX1rHyqTs6A87JYswB6aQ + beetmover-checksums-es-CL-win64-nightly/opt: RNlCY5jbRA-jZ0PYdUPHuw + beetmover-checksums-es-ES-linux-nightly/opt: eoYR5olxQTWya9ZAB-0imw + beetmover-checksums-es-ES-linux64-nightly/opt: Ba1QxagaQtiUszGA_Gsvjw + beetmover-checksums-es-ES-macosx64-nightly/opt: Eav7RX_MRHGml-1RzvJB6A + beetmover-checksums-es-ES-win32-nightly/opt: FSuk2fMGQHO8xXslSZoTDg + beetmover-checksums-es-ES-win64-nightly/opt: JfuhdAEGTneMstmVanAkbg + beetmover-checksums-es-MX-linux-nightly/opt: LFjDTFQcST6zT7iWLBkisQ + beetmover-checksums-es-MX-linux64-nightly/opt: fk1DtpX1SG2FA5ifaN0G0Q + beetmover-checksums-es-MX-macosx64-nightly/opt: UhPsEfkGT2SpEfJK7vz-3w + beetmover-checksums-es-MX-win32-nightly/opt: KLvxsF9HQ3KFKIVBpKunSg + beetmover-checksums-es-MX-win64-nightly/opt: EMzGQFNcQ8KF2BkmITSwTA + beetmover-checksums-et-linux-nightly/opt: E9KbQUChTwOFPfjYGe6LqA + beetmover-checksums-et-linux64-nightly/opt: dwT2D3LxQfqpp3FxycQbOA + beetmover-checksums-et-macosx64-nightly/opt: EULErNoJShW6vOuqWWIC_g + beetmover-checksums-et-win32-nightly/opt: GUjDf_vBSOWQKW8uHwzfbg + beetmover-checksums-et-win64-nightly/opt: JssKqMtwTxW35Cv3KlOgWg + beetmover-checksums-eu-linux-nightly/opt: T69OKNYERP2ScTb2XdEqVg + beetmover-checksums-eu-linux64-nightly/opt: EbPazO7wToGBYNZF2hJV0g + beetmover-checksums-eu-macosx64-nightly/opt: UhEnHR4_TNyNCjnT_A7hWg + beetmover-checksums-eu-win32-nightly/opt: AfY_TBHCTe-sF0z2HWcYPQ + beetmover-checksums-eu-win64-nightly/opt: foZcxPnDTU-BGqyvqR1hpA + beetmover-checksums-fa-linux-nightly/opt: SxDnBQJ8TS2gzAP61pVNvQ + beetmover-checksums-fa-linux64-nightly/opt: K4nn95fwR0KC5D2vXGDiLQ + beetmover-checksums-fa-macosx64-nightly/opt: G5oN9p0GTCmW5Hw0jDmv1w + beetmover-checksums-fa-win32-nightly/opt: Otav9wlWQpu7V-8rEP4sMw + beetmover-checksums-fa-win64-nightly/opt: YNPl_BOlQNGgUZvQhVUerA + beetmover-checksums-ff-linux-nightly/opt: JBplRl6STRa1NPDB45eo3g + beetmover-checksums-ff-linux64-nightly/opt: Po_e5diWRAKUPP-ZUjhshQ + beetmover-checksums-ff-macosx64-nightly/opt: QbW3IJETRduW8BrRKBNIVA + beetmover-checksums-ff-win32-nightly/opt: S_gNEp32TD6ctP0Cs2Vvqw + beetmover-checksums-ff-win64-nightly/opt: ZgZ_xEWHQieqnIn67oviRg + beetmover-checksums-fi-linux-nightly/opt: Ch_AgOPtTueF5u-YUVEOvw + beetmover-checksums-fi-linux64-nightly/opt: YLlcoXARQX2Pqq7h4ikPEg + beetmover-checksums-fi-macosx64-nightly/opt: cWTtTVYHQEGPnONEkqPLCw + beetmover-checksums-fi-win32-nightly/opt: cfmrujGCSPmFi744h6VF1g + beetmover-checksums-fi-win64-nightly/opt: d1xnluF2QS6vgBFYCeOr-g + beetmover-checksums-fr-linux-nightly/opt: QP08dXwsRTqr8YbD3gNBBg + beetmover-checksums-fr-linux64-nightly/opt: cn6PErvwSp607gwy_cdSdQ + beetmover-checksums-fr-macosx64-nightly/opt: dof-HPqaRUe3fI6KWy8RoA + beetmover-checksums-fr-win32-nightly/opt: Veuha6J8Rmmedmv69rOBdw + beetmover-checksums-fr-win64-nightly/opt: fAT1BQ3gTSGTnn_oD48ABQ + beetmover-checksums-fy-NL-linux-nightly/opt: Xcs70OaIQz-4uGFSMoUNNA + beetmover-checksums-fy-NL-linux64-nightly/opt: KtWqVk7yTGWrak9v2Klqzg + beetmover-checksums-fy-NL-macosx64-nightly/opt: GB43wtxeR1u3YT1lKx75ZA + beetmover-checksums-fy-NL-win32-nightly/opt: PfDDhNDTSUWmbKXW_VBweA + beetmover-checksums-fy-NL-win64-nightly/opt: LbxGYtsdTmuU1QEuzfDx7Q + beetmover-checksums-ga-IE-linux-nightly/opt: Ens_bKhXR0WS3GL4ih2rRA + beetmover-checksums-ga-IE-linux64-nightly/opt: IcBq4LQ2TLqKb98vMpupwQ + beetmover-checksums-ga-IE-macosx64-nightly/opt: DMG-1b62SEavx8aRbwnGjQ + beetmover-checksums-ga-IE-win32-nightly/opt: Pkd2V2X9QHCoIEV3xgfLTQ + beetmover-checksums-ga-IE-win64-nightly/opt: L6qPpg4OQH-AhwxqorD5lw + beetmover-checksums-gd-linux-nightly/opt: P-RH_2QmRD6EeD0ULDpB5Q + beetmover-checksums-gd-linux64-nightly/opt: LRo3UVt0RjOjuKuDaLitRg + beetmover-checksums-gd-macosx64-nightly/opt: UKsfemS2TdqR86JQYahxcg + beetmover-checksums-gd-win32-nightly/opt: Wde6eQfdSeyaFHowdnY9jw + beetmover-checksums-gd-win64-nightly/opt: Aa3dz32zQnebN_7ChjTUyg + beetmover-checksums-gl-linux-nightly/opt: eIGXfsiOSo-98xfYN7JsDA + beetmover-checksums-gl-linux64-nightly/opt: bBgAcvzaTHWoOr5Y33T4Vw + beetmover-checksums-gl-macosx64-nightly/opt: FYnAh5PzTM6ZHdBRxLlFYQ + beetmover-checksums-gl-win32-nightly/opt: KfCGyXXbQRqWVXHWv8xW-g + beetmover-checksums-gl-win64-nightly/opt: Nn2KSAsNT3aBwYAVuZFbmg + beetmover-checksums-gn-linux-nightly/opt: WMTGheiPTsKUf4but2H8Uw + beetmover-checksums-gn-linux64-nightly/opt: MjB_ibNYQmGKUfKfsRGezA + beetmover-checksums-gn-macosx64-nightly/opt: PZ4WPdq9QxeiQNh37GNK7Q + beetmover-checksums-gn-win32-nightly/opt: fJ_vt-oURm6aS7keqPD4tg + beetmover-checksums-gn-win64-nightly/opt: ZCHVdjEfT9S1H1wssBSXbg + beetmover-checksums-gu-IN-linux-nightly/opt: LDPCYKo_Q_6SVU0pNQCWUA + beetmover-checksums-gu-IN-linux64-nightly/opt: QaSWJ0nbS_a-CBlzWAP-KQ + beetmover-checksums-gu-IN-macosx64-nightly/opt: EnU25H80S_2pFv0abXUmyQ + beetmover-checksums-gu-IN-win32-nightly/opt: c0wBz2qpTqCkDNZIxNfapA + beetmover-checksums-gu-IN-win64-nightly/opt: HuQ4lyUSSTOEB3lIjfEaSg + beetmover-checksums-he-linux-nightly/opt: MSiprEk_Quq8mNXihdP9Zg + beetmover-checksums-he-linux64-nightly/opt: DJTQqojgTNarZ1Id-UoM8Q + beetmover-checksums-he-macosx64-nightly/opt: dHMTQZJNRqi43gm56YaM6g + beetmover-checksums-he-win32-nightly/opt: KSgUA9-MSIqdjhtihsjPPg + beetmover-checksums-he-win64-nightly/opt: Zcr19iEuTFSu57KgLant3Q + beetmover-checksums-hi-IN-linux-nightly/opt: IKXkqv__S26xXT-TRd4xhA + beetmover-checksums-hi-IN-linux64-nightly/opt: ANDVLYxYQ0mmIySDSsazow + beetmover-checksums-hi-IN-macosx64-nightly/opt: f301R4HeRReM54bONFAxhg + beetmover-checksums-hi-IN-win32-nightly/opt: ZQPNI3mJRmamJhjx7fxE_w + beetmover-checksums-hi-IN-win64-nightly/opt: cWT3RkDfQbGRnA-MCNB0aA + beetmover-checksums-hr-linux-nightly/opt: atQj5TemT42EONHc37AUug + beetmover-checksums-hr-linux64-nightly/opt: D9k4jq0ZQsSE84BdserxTg + beetmover-checksums-hr-macosx64-nightly/opt: OYQQbOVIQJ-NcnuN4F0AKg + beetmover-checksums-hr-win32-nightly/opt: QI6qKgnGQNeA3SeceIowzg + beetmover-checksums-hr-win64-nightly/opt: Yq51Xx7iS-Cswg3aluf_Iw + beetmover-checksums-hsb-linux-nightly/opt: ew_fUB1cT8O2xLB5Y0HI6A + beetmover-checksums-hsb-linux64-nightly/opt: J_ixcONuQumY32726MpFqA + beetmover-checksums-hsb-macosx64-nightly/opt: PXwc__ERR9uN2coM7PgOeg + beetmover-checksums-hsb-win32-nightly/opt: S_-K4FzYQo6fnmrqYC-rnQ + beetmover-checksums-hsb-win64-nightly/opt: XoBSMLDTScqmB3EkQw5pOw + beetmover-checksums-hu-linux-nightly/opt: QrCrviqnSte1eSupJXD_5Q + beetmover-checksums-hu-linux64-nightly/opt: Qo9tRXMNQXK-eyl22RhNHA + beetmover-checksums-hu-macosx64-nightly/opt: J0Bud1DTS6q43I3KIw2Dgg + beetmover-checksums-hu-win32-nightly/opt: eef34q_PRpG1nXsaV9Jb7g + beetmover-checksums-hu-win64-nightly/opt: ADSujkS2R12gFVA4TRWT6w + beetmover-checksums-hy-AM-linux-nightly/opt: ZMitjcBrQ2SoBooaOGc0DA + beetmover-checksums-hy-AM-linux64-nightly/opt: GI2gMoM7SZy6IZzeorFRAg + beetmover-checksums-hy-AM-macosx64-nightly/opt: Vj9ZsK_ZRoWCFJgUVEpy3w + beetmover-checksums-hy-AM-win32-nightly/opt: AD5VkOAsQC-AcGt33PHjMQ + beetmover-checksums-hy-AM-win64-nightly/opt: Ecr5zOi6T5i3CaUu3qrc1A + beetmover-checksums-ia-linux-nightly/opt: fFhNnkAXS3eUurg1CnXcMA + beetmover-checksums-ia-linux64-nightly/opt: ZfscRLTrQl2LqzqrfEKF_Q + beetmover-checksums-ia-macosx64-nightly/opt: AO2Rw4cRTCGN6I1zwiGfiA + beetmover-checksums-ia-win32-nightly/opt: YUcXPDCuQQ6xKOW3wqFEBw + beetmover-checksums-ia-win64-nightly/opt: DYT0Oav_RsCZVe2ShGmzKw + beetmover-checksums-id-linux-nightly/opt: J0zM9_CaSBuoO1Ly54E13Q + beetmover-checksums-id-linux64-nightly/opt: FL_3VwtLRcSRNzptPDowtA + beetmover-checksums-id-macosx64-nightly/opt: S55c9Fo6T6qqAmMWQKz6cw + beetmover-checksums-id-win32-nightly/opt: fEgFOQg8R4mwNIxvgzTHdg + beetmover-checksums-id-win64-nightly/opt: NEKR1q2jRqmRcvzPvDtKUA + beetmover-checksums-is-linux-nightly/opt: LAnwBVUFSw2Nm88pGtxfBw + beetmover-checksums-is-linux64-nightly/opt: bvIwlitwTZuHq5Swas-1Yw + beetmover-checksums-is-macosx64-nightly/opt: WH2QA3SyRQyc5W9ru7hSmw + beetmover-checksums-is-win32-nightly/opt: ESvuEizXQBOGaMy-oh8VxA + beetmover-checksums-is-win64-nightly/opt: WWhRWIdTSlWbVDl4dm111A + beetmover-checksums-it-linux-nightly/opt: Xzc1mk5GS_2kOB7FqRdUmw + beetmover-checksums-it-linux64-nightly/opt: OaUkA9qWTNOOIVj3k_5NxA + beetmover-checksums-it-macosx64-nightly/opt: EQtXkYjnTuilID94IDqSSw + beetmover-checksums-it-win32-nightly/opt: eFu5lXoSRT6b4rJwUGo90Q + beetmover-checksums-it-win64-nightly/opt: aAxxxMSDSlaTnyrrpHp_DQ + beetmover-checksums-ja-JP-mac-macosx64-nightly/opt: aPpSDgJPS8-Ok5lpHBMkdQ + beetmover-checksums-ja-linux-nightly/opt: f_3u2HkbSJqIUSL_KrNIvg + beetmover-checksums-ja-linux64-nightly/opt: EYVvTuoJTpuSeiYAMi6Mzg + beetmover-checksums-ja-win32-nightly/opt: LffLFKZCQOOtFOW33zmPTA + beetmover-checksums-ja-win64-nightly/opt: L-KKZzvrTv-ZpqzUNdz90Q + beetmover-checksums-ka-linux-nightly/opt: PhZzwBO1Qeq0zVU9mh6SgA + beetmover-checksums-ka-linux64-nightly/opt: OxgxgU3IQeq1wwUi-71g6w + beetmover-checksums-ka-macosx64-nightly/opt: El1LiBVbTzCAuJm2aqk7Rw + beetmover-checksums-ka-win32-nightly/opt: TNevl5qNQpSInb7nyR9cyw + beetmover-checksums-ka-win64-nightly/opt: NFOOrvj7Q6CAoeUjfbZCXQ + beetmover-checksums-kab-linux-nightly/opt: VqB6ABwbQtCVxiyU_qyipA + beetmover-checksums-kab-linux64-nightly/opt: cIE2mOs1SVuQp61UJLfgdA + beetmover-checksums-kab-macosx64-nightly/opt: VJK8DlicTfWbA8pCXSX8mQ + beetmover-checksums-kab-win32-nightly/opt: Ky1bhHu1TfuBbyKPdddVew + beetmover-checksums-kab-win64-nightly/opt: LIFWFoWpR_qcZH7o8Z3O2A + beetmover-checksums-kk-linux-nightly/opt: cgj2dPMfRCGV3B6xfrIQtQ + beetmover-checksums-kk-linux64-nightly/opt: Y4w23QNDQxyzCzlczSlpuA + beetmover-checksums-kk-macosx64-nightly/opt: LIb-bTMPRDuAzdPpnQ9wgg + beetmover-checksums-kk-win32-nightly/opt: MbeDxhK1SW6Fbdz5PryDOg + beetmover-checksums-kk-win64-nightly/opt: L-hFoancRGqJQI3IvKJXbA + beetmover-checksums-km-linux-nightly/opt: YdXakrj5TGaS8GOeqVVb6A + beetmover-checksums-km-linux64-nightly/opt: a2wBMftDRUy7RlHIlWmNRw + beetmover-checksums-km-macosx64-nightly/opt: bBvgbPQDREKgGaHru8PCzA + beetmover-checksums-km-win32-nightly/opt: NXl1hecrTte5dpobtgR-Bw + beetmover-checksums-km-win64-nightly/opt: R9RaUwV9TOqboWIQZIOvkg + beetmover-checksums-kn-linux-nightly/opt: YuutwsHTQs-HDu7ni7eoqA + beetmover-checksums-kn-linux64-nightly/opt: A6305Sn0S2iI60t1436oqQ + beetmover-checksums-kn-macosx64-nightly/opt: GFDDI_yVSvyFN8Zhnz-_RQ + beetmover-checksums-kn-win32-nightly/opt: JIBZ9IpQTyGjf2fjm1kt4g + beetmover-checksums-kn-win64-nightly/opt: JopKMw75QKOuwGg68c50QA + beetmover-checksums-ko-linux-nightly/opt: ZZLCpWhMQ-OyHDz3zJOxsg + beetmover-checksums-ko-linux64-nightly/opt: AdWwweuoTZat97HNsmshQg + beetmover-checksums-ko-macosx64-nightly/opt: HBWu21ygQjCD7SJEFMTXHA + beetmover-checksums-ko-win32-nightly/opt: NTxgSD5KTpK14fmx6rQdQw + beetmover-checksums-ko-win64-nightly/opt: DpRbkPBiR0K8MTHu0iqoQA + beetmover-checksums-lij-linux-nightly/opt: PBoNb8VBT_mS7Xbkcs0lVg + beetmover-checksums-lij-linux64-nightly/opt: avLo4niqS9aPDjdT1VBMIQ + beetmover-checksums-lij-macosx64-nightly/opt: Gw8h7VZDTQWlquuhQOd1pA + beetmover-checksums-lij-win32-nightly/opt: fg36wu-BQKureYwMHbbLgw + beetmover-checksums-lij-win64-nightly/opt: aLneMYsMT6S28RoQ0B3kCQ + beetmover-checksums-linux-nightly/opt: RalqpuKoQaag_waj26qobA + beetmover-checksums-linux64-nightly/opt: NzVF7Rd7TyK2W7KW8-kQPw + beetmover-checksums-lt-linux-nightly/opt: NW3n0F33SUSJBRvElbBGmg + beetmover-checksums-lt-linux64-nightly/opt: YpOnNaQ7Tni1hSnMDAD_yQ + beetmover-checksums-lt-macosx64-nightly/opt: GPlDN60ZR9KRxRs4dtrQvA + beetmover-checksums-lt-win32-nightly/opt: bFvWSy_vTRiZQxQMCnGQYw + beetmover-checksums-lt-win64-nightly/opt: SyaijOw-SzKetWRTwHjA_g + beetmover-checksums-lv-linux-nightly/opt: Mt0z14esTrqEkbCk_2cNlw + beetmover-checksums-lv-linux64-nightly/opt: Ozri4Qb4TsqpqQIgHxikLg + beetmover-checksums-lv-macosx64-nightly/opt: T3ymHX50SWSICIy97Y7xaQ + beetmover-checksums-lv-win32-nightly/opt: NPD0KN-5TgauFqreOWShlQ + beetmover-checksums-lv-win64-nightly/opt: Ps1RtpP_SBSq7p9Jinq05Q + beetmover-checksums-macosx64-nightly/opt: alxxs9UWSxW6q5ahE-z3-A + beetmover-checksums-mai-linux-nightly/opt: UGjyl7vrTU2Xhc6lCFCEog + beetmover-checksums-mai-linux64-nightly/opt: cZMSlN2TT-O8thUURE9IRQ + beetmover-checksums-mai-macosx64-nightly/opt: WL8-eXOyS3iVT8r6GUMnAA + beetmover-checksums-mai-win32-nightly/opt: NpRjmcbqSYGciAN5BEdrog + beetmover-checksums-mai-win64-nightly/opt: ECQs2zHLQreOdXKFl3cRJw + beetmover-checksums-mk-linux-nightly/opt: c3PT1wNiRNWBVG4pA4XKtg + beetmover-checksums-mk-linux64-nightly/opt: NErtGCv6QTe3Cc1TJuimnw + beetmover-checksums-mk-macosx64-nightly/opt: HwtXtKoaTMenwkl6t1Jl_A + beetmover-checksums-mk-win32-nightly/opt: HyH2UMN6Sx2RpHUCw-_ryg + beetmover-checksums-mk-win64-nightly/opt: K5KJrqrGQ_a5FSr1qc3MyA + beetmover-checksums-ml-linux-nightly/opt: QrEsc4wsSvC5JrU71N_puw + beetmover-checksums-ml-linux64-nightly/opt: J9JcESfFSgO5-sMvL42JxQ + beetmover-checksums-ml-macosx64-nightly/opt: ab1YTx1UQ62pyA8-487Gkg + beetmover-checksums-ml-win32-nightly/opt: N3PiZyPzQa-uC3OPoVzg5g + beetmover-checksums-ml-win64-nightly/opt: flZgJp_vR_6J3BlKU_cMWQ + beetmover-checksums-mr-linux-nightly/opt: GpA3VC_mQAOy3mi0hlbdkQ + beetmover-checksums-mr-linux64-nightly/opt: JR6VkotdQ4WisoWd1iijRA + beetmover-checksums-mr-macosx64-nightly/opt: JdvTuwYGRJ-mpdoAqgxS8g + beetmover-checksums-mr-win32-nightly/opt: NIJzHfxgTqGZY0UO3NZ2DA + beetmover-checksums-mr-win64-nightly/opt: OAs5gJ_RQxK7uz4ojB5JEg + beetmover-checksums-ms-linux-nightly/opt: e75cs5p6TaCFPtm3-WFUQw + beetmover-checksums-ms-linux64-nightly/opt: RVRT648ATdW5PzL9hokfbA + beetmover-checksums-ms-macosx64-nightly/opt: Qb6kZ9a8TE-kj2VAQPnDfw + beetmover-checksums-ms-win32-nightly/opt: M8-K01oPToa2lMrZ0C29cg + beetmover-checksums-ms-win64-nightly/opt: XhwqDPPgTkK_2OjoXqKBQA + beetmover-checksums-my-linux-nightly/opt: QDVx5TX-SiGSNy3p7v_PWQ + beetmover-checksums-my-linux64-nightly/opt: WIUZFJYqSsu4GvtULLhKUQ + beetmover-checksums-my-macosx64-nightly/opt: ImueiT5aQzK5Wrg7Pl-nrw + beetmover-checksums-my-win32-nightly/opt: Z8YoKXCqSGCmjG0JcS6s1Q + beetmover-checksums-my-win64-nightly/opt: a_n7kem7RhyVHpdYeQLWNA + beetmover-checksums-nb-NO-linux-nightly/opt: We_KijuDQMWdYU7bzCrYvQ + beetmover-checksums-nb-NO-linux64-nightly/opt: bsgzIdtMSa2vJe0gQYuXmA + beetmover-checksums-nb-NO-macosx64-nightly/opt: ab3h2zrETQyCRUyAIa734A + beetmover-checksums-nb-NO-win32-nightly/opt: dXxOX8WgSBim0BULz1HM_w + beetmover-checksums-nb-NO-win64-nightly/opt: FBSYlXoQQnawTM5_C5OzPg + beetmover-checksums-ne-NP-linux-nightly/opt: S-_AVBieRs-GnzCEYwUJig + beetmover-checksums-ne-NP-linux64-nightly/opt: M7Vh5iyrSWCq37RioGfYgw + beetmover-checksums-ne-NP-macosx64-nightly/opt: NLuC7B6IRwq2WuaZ4hoZ7A + beetmover-checksums-ne-NP-win32-nightly/opt: F39VgsRURSeDqvbKWBVsAw + beetmover-checksums-ne-NP-win64-nightly/opt: flu-EUASQiKlgydWQegl4w + beetmover-checksums-nl-linux-nightly/opt: J-wWyn3UQQqy48zrf2MfVA + beetmover-checksums-nl-linux64-nightly/opt: OMooz00yTTKtW5IUjdxzHQ + beetmover-checksums-nl-macosx64-nightly/opt: Gm8rluB0QF2ly7aasfCBAQ + beetmover-checksums-nl-win32-nightly/opt: UGUmq3n3QpCDKs6y55bwnQ + beetmover-checksums-nl-win64-nightly/opt: asieBCuQTlmll6skT9DRAg + beetmover-checksums-nn-NO-linux-nightly/opt: QcMT-rCkSuSCBVIaF4fuxw + beetmover-checksums-nn-NO-linux64-nightly/opt: BlsUnDkMRHyEI4O50nZeTQ + beetmover-checksums-nn-NO-macosx64-nightly/opt: X382m5qURWegjeFyZJDh9A + beetmover-checksums-nn-NO-win32-nightly/opt: TAkkKyZBSg6FLMHIailLLA + beetmover-checksums-nn-NO-win64-nightly/opt: fi8EQaa3S8yddp0UTrbnnA + beetmover-checksums-oc-linux-nightly/opt: BWDg146RSZeKf_eY0UTwIA + beetmover-checksums-oc-linux64-nightly/opt: ayn27RK4SiSmplTl8ybC0Q + beetmover-checksums-oc-macosx64-nightly/opt: U6r6txoGSBSK8KZpbZDFRg + beetmover-checksums-oc-win32-nightly/opt: dggQe6jsQIezPvRWV2LowQ + beetmover-checksums-oc-win64-nightly/opt: Ir6vcTtiRUiiGMMx4vU1zw + beetmover-checksums-or-linux-nightly/opt: Udrp7McEQr-LFqn8IH4vBA + beetmover-checksums-or-linux64-nightly/opt: JMQuW5sXQhqsQ5oSnmvECg + beetmover-checksums-or-macosx64-nightly/opt: U70NqjA4S4qo8hhCc1--DA + beetmover-checksums-or-win32-nightly/opt: G3IKaFYqRhCMX8O4D50-JA + beetmover-checksums-or-win64-nightly/opt: c1lxOaNGT-K0bUmzTjb_7g + beetmover-checksums-pa-IN-linux-nightly/opt: WLDXv4ofTWm1z9pbuisjvQ + beetmover-checksums-pa-IN-linux64-nightly/opt: X1LMWI0DT_ie8JOat79YWg + beetmover-checksums-pa-IN-macosx64-nightly/opt: JdGeT1_BSY-i8OFHZXAHig + beetmover-checksums-pa-IN-win32-nightly/opt: Mr-JyAkZSm2adEI16y8wxw + beetmover-checksums-pa-IN-win64-nightly/opt: ICdXd_KATMueH846Dli1Cg + beetmover-checksums-pl-linux-nightly/opt: QzfNbwZgQ2-4fy44NzbJPQ + beetmover-checksums-pl-linux64-nightly/opt: Xki9V98nSwGtJXc7pgm9og + beetmover-checksums-pl-macosx64-nightly/opt: btw5e5e4RZi8oCIFOmHhNQ + beetmover-checksums-pl-win32-nightly/opt: PWrE9YtRTvmUhJxRf71SSA + beetmover-checksums-pl-win64-nightly/opt: TIpJuDT_QP6A6K-9AhKQnA + beetmover-checksums-pt-BR-linux-nightly/opt: JobU6RvyRvWd06OAxOCKKA + beetmover-checksums-pt-BR-linux64-nightly/opt: SzzgC2clRF-AN5GQF1oMhg + beetmover-checksums-pt-BR-macosx64-nightly/opt: RJ4WQokpT7K_8UzlfFaAjA + beetmover-checksums-pt-BR-win32-nightly/opt: JnFsjCeXQKG9GNhfYsyhPQ + beetmover-checksums-pt-BR-win64-nightly/opt: U5sgUsl7RdWKOR0i4d7Hig + beetmover-checksums-pt-PT-linux-nightly/opt: VHzTQo1hRlut1AL3LT0cJQ + beetmover-checksums-pt-PT-linux64-nightly/opt: W5sYMVC6QBijmuUd5gELKQ + beetmover-checksums-pt-PT-macosx64-nightly/opt: bqJdEOFiS1-KnEJT0E7Fkg + beetmover-checksums-pt-PT-win32-nightly/opt: LnCzhRTISr-E94NQnL38hQ + beetmover-checksums-pt-PT-win64-nightly/opt: GXeLufuKQem-nRgZMSIqLQ + beetmover-checksums-rm-linux-nightly/opt: dnXfRJJbQYinzS4IVFQa6w + beetmover-checksums-rm-linux64-nightly/opt: AUqpqHUARs-ww4aHntd7mg + beetmover-checksums-rm-macosx64-nightly/opt: XpJoxRgHT_Wof_FZsyxkjw + beetmover-checksums-rm-win32-nightly/opt: XIGmok7HTaeaX7jyJlZw8A + beetmover-checksums-rm-win64-nightly/opt: ekaNiGvyRxm8EroGgzQYWA + beetmover-checksums-ro-linux-nightly/opt: PiDd5SKMQCiH8Bw5Wwlbpw + beetmover-checksums-ro-linux64-nightly/opt: SpwqPu6xQvWHj_YEOj5iZw + beetmover-checksums-ro-macosx64-nightly/opt: SpuuEVRARWyB0cA9vHIM5A + beetmover-checksums-ro-win32-nightly/opt: c2kymHrqTq2Bo4WvKZvzGg + beetmover-checksums-ro-win64-nightly/opt: TGIAMuNLRLa9KeS6b7KY1w + beetmover-checksums-ru-linux-nightly/opt: F580ngfQRDyzVElHtPMaZg + beetmover-checksums-ru-linux64-nightly/opt: BSGQ9OXPT16Sf-8oCPsMVQ + beetmover-checksums-ru-macosx64-nightly/opt: EXxus861STe77mtdoSXIyA + beetmover-checksums-ru-win32-nightly/opt: D7Eg4kbsRS2GCHiIC2ipNw + beetmover-checksums-ru-win64-nightly/opt: b6E0mXbCSDKSBtCMXDakQw + beetmover-checksums-si-linux-nightly/opt: VRhmfcaITRalTHPHVxFrtA + beetmover-checksums-si-linux64-nightly/opt: HgGMtD7pRPWxPyOgGQAMxQ + beetmover-checksums-si-macosx64-nightly/opt: Ih4xJWITQsSXhqraNZG7Xw + beetmover-checksums-si-win32-nightly/opt: fBf5nJtnTM2pk3W2Dd665A + beetmover-checksums-si-win64-nightly/opt: H5fmbPvVQ9-F0-Ewqhwn2g + beetmover-checksums-sk-linux-nightly/opt: SlIiJnIgQGKkvDRrGarKOg + beetmover-checksums-sk-linux64-nightly/opt: HX_zSzbSTYWglsINdLmaoQ + beetmover-checksums-sk-macosx64-nightly/opt: TlZk49IfQ7CM5LM8K0TPzw + beetmover-checksums-sk-win32-nightly/opt: Xkhys5J4QwKuyoW0JShYsQ + beetmover-checksums-sk-win64-nightly/opt: X0ATm1G9QfKUX_jZbcDcUQ + beetmover-checksums-sl-linux-nightly/opt: W90N6V_hSAObL1HLcEsO0g + beetmover-checksums-sl-linux64-nightly/opt: I86kBbw_StC5-rtBf9kpow + beetmover-checksums-sl-macosx64-nightly/opt: Xo0PHWuGTA2TmqxL_uCYgA + beetmover-checksums-sl-win32-nightly/opt: ckyoUa7MTbCsmVtgLBzDEQ + beetmover-checksums-sl-win64-nightly/opt: PgepVp75SpSfrLZiLCTkYA + beetmover-checksums-son-linux-nightly/opt: Xu3RZrlASpKfAZbNyA5nXg + beetmover-checksums-son-linux64-nightly/opt: eC_jKJr8QRSFOs-OE6Xnug + beetmover-checksums-son-macosx64-nightly/opt: Ez8xfGuMSd-pKmUKSKLOCw + beetmover-checksums-son-win32-nightly/opt: DgakwJ6cS-OvcKD5PuSDnQ + beetmover-checksums-son-win64-nightly/opt: cyucWTfYRlGVHJaarLHTig + beetmover-checksums-sq-linux-nightly/opt: OAcCtRW2RbuXXJ_aZr_Jcw + beetmover-checksums-sq-linux64-nightly/opt: BQrohtsDS0ylvgYEg1cJQg + beetmover-checksums-sq-macosx64-nightly/opt: NStEIH7LQzOEYuJLOy2GMw + beetmover-checksums-sq-win32-nightly/opt: EU_L-tBhQtGi8kfPA90nmg + beetmover-checksums-sq-win64-nightly/opt: IhWzeRx-Sx6poyRDUoiAgA + beetmover-checksums-sr-linux-nightly/opt: YC6bSkjoQu2LgK5N5_mzaA + beetmover-checksums-sr-linux64-nightly/opt: Rz4qN5bFRpOxbmVYFwer3A + beetmover-checksums-sr-macosx64-nightly/opt: aDYBTl1uS5iBwEor1reCtg + beetmover-checksums-sr-win32-nightly/opt: IfrzG_Y8TRufFdVJI46NEg + beetmover-checksums-sr-win64-nightly/opt: MMnqcyicTbKWPHJ1d35pag + beetmover-checksums-sv-SE-linux-nightly/opt: CjhU50sFTJGo3ijxotALRA + beetmover-checksums-sv-SE-linux64-nightly/opt: GNN_AcmkQ2mQlKipVoNe3A + beetmover-checksums-sv-SE-macosx64-nightly/opt: CP3LwYY-TjKPm--_KGUQ2g + beetmover-checksums-sv-SE-win32-nightly/opt: TmpACjulQ4KyJsOWgzB7Yg + beetmover-checksums-sv-SE-win64-nightly/opt: CJKYk_dwSeKSVl082XHrRg + beetmover-checksums-ta-linux-nightly/opt: aATIxaO6Qd6uk9PqNub5Ig + beetmover-checksums-ta-linux64-nightly/opt: N8IMAik8SMmbWCAHac2nfw + beetmover-checksums-ta-macosx64-nightly/opt: IvxRSwvdSfuUXIVDCPTdfA + beetmover-checksums-ta-win32-nightly/opt: F9gsD2gEQ4SFNmHilqkhzA + beetmover-checksums-ta-win64-nightly/opt: S0W5hxc8S_2OHun1T7tuPg + beetmover-checksums-te-linux-nightly/opt: BIH5MAZwQhatXXCoX1kqgA + beetmover-checksums-te-linux64-nightly/opt: WpNg7fdyRaG8a8Nrtrbh4Q + beetmover-checksums-te-macosx64-nightly/opt: akaJVM2sSMi2OMn9T-fIZg + beetmover-checksums-te-win32-nightly/opt: D7MmLxLESjiwhw8rNl-tNw + beetmover-checksums-te-win64-nightly/opt: Iuc3v5qJTx-SOPRUxs5sTA + beetmover-checksums-th-linux-nightly/opt: HESyv6KnQc-lD1viq-Dnqg + beetmover-checksums-th-linux64-nightly/opt: WKPgyZRIQoiNkob7_ShzoA + beetmover-checksums-th-macosx64-nightly/opt: APisBl97Q_m3hGXCVrXLZA + beetmover-checksums-th-win32-nightly/opt: EOBT_yNbS1-GCsFqJumsrw + beetmover-checksums-th-win64-nightly/opt: Gxfkk6IwTVyZVDFR-Iu0LA + beetmover-checksums-tr-linux-nightly/opt: RjmBvEygR46UWg5LK7HOww + beetmover-checksums-tr-linux64-nightly/opt: PHF2N4ufSEeJS_DK1nB58A + beetmover-checksums-tr-macosx64-nightly/opt: UmnnaBvrT8Cfx8tUf9gFAQ + beetmover-checksums-tr-win32-nightly/opt: JlWE0TJZSROHq0hRb9kONQ + beetmover-checksums-tr-win64-nightly/opt: S-8_FKW5Th2ZnxHll8LQcQ + beetmover-checksums-uk-linux-nightly/opt: DbQ_SpIyTdOmfjxdJpBTqw + beetmover-checksums-uk-linux64-nightly/opt: OY_tSyxBSB2xXit8WB-HMA + beetmover-checksums-uk-macosx64-nightly/opt: R9XPW2J4R6yZ3lD7-i0B6Q + beetmover-checksums-uk-win32-nightly/opt: B-antu3qRqS3IYwcK606_g + beetmover-checksums-uk-win64-nightly/opt: VSwhFEQNTkW5t2Ldao_CHg + beetmover-checksums-ur-linux-nightly/opt: Utahe7OzSri-13cCZa6T9w + beetmover-checksums-ur-linux64-nightly/opt: YLjDWVOnSKWlziob_3JSbA + beetmover-checksums-ur-macosx64-nightly/opt: L9sUSNTnRiq3uAJUr-Nr_w + beetmover-checksums-ur-win32-nightly/opt: f2BfnoDYTDWK4RWDzLL1iQ + beetmover-checksums-ur-win64-nightly/opt: BSgNScmPTOu-CqQY8e_zQQ + beetmover-checksums-uz-linux-nightly/opt: U00j2dk5QY-O8KjohcWAFA + beetmover-checksums-uz-linux64-nightly/opt: Dl3xWcuIQ8CMUk2xI9l4tQ + beetmover-checksums-uz-macosx64-nightly/opt: IIAf9pAtRfeLLA9CQlHGXw + beetmover-checksums-uz-win32-nightly/opt: br0MIF0PRrWjogLp7hGiZg + beetmover-checksums-uz-win64-nightly/opt: avf1lZJPRKa2O1MfmGW9xQ + beetmover-checksums-vi-linux-nightly/opt: C-vuSxDlTQGKqexrJV3STA + beetmover-checksums-vi-linux64-nightly/opt: MBFC21k9QnSttXrulB4spQ + beetmover-checksums-vi-macosx64-nightly/opt: AGFnjA1OTWyotsaRuxrQFw + beetmover-checksums-vi-win32-nightly/opt: FO-9bu6BQRqu5yBPlbBpWA + beetmover-checksums-vi-win64-nightly/opt: VVFixA13RzSbPO409ppGhQ + beetmover-checksums-win32-nightly/opt: N3roPN9GRoOW4ZCVaXteoA + beetmover-checksums-win64-nightly/opt: Je0T0VBFRC6_lPDOl2OmYw + beetmover-checksums-xh-linux-nightly/opt: EJSiHJLGT72dksMJ6KY7tw + beetmover-checksums-xh-linux64-nightly/opt: ZfPHMutYQmiwQYqjniB0IQ + beetmover-checksums-xh-macosx64-nightly/opt: DCjtdlWfR1WLcuajiozLsw + beetmover-checksums-xh-win32-nightly/opt: X6OBMxqwTS6kM8KnhY8GYQ + beetmover-checksums-xh-win64-nightly/opt: FSzOOasxRkKdED8SGDvtFQ + beetmover-checksums-zh-CN-linux-nightly/opt: SfdhJImWTfSZsRr25yxM0w + beetmover-checksums-zh-CN-linux64-nightly/opt: M3kEp0wpS2S42oF81MBhkA + beetmover-checksums-zh-CN-macosx64-nightly/opt: daKa2m-hROGXFE-TIRJ6Xw + beetmover-checksums-zh-CN-win32-nightly/opt: JYwQMOI2S_OOGXlmKFkaKg + beetmover-checksums-zh-CN-win64-nightly/opt: VAyxa_tAR4WCchLfTA97Og + beetmover-checksums-zh-TW-linux-nightly/opt: UGZ_ovbNRFm2LDAp4JhD2A + beetmover-checksums-zh-TW-linux64-nightly/opt: dBWqhDRkQBCibNr5xjR0-A + beetmover-checksums-zh-TW-macosx64-nightly/opt: D98QimVbQqOxsrHXlNJi7w + beetmover-checksums-zh-TW-win32-nightly/opt: e2cG-5CTQqKcwffoRkLFyA + beetmover-checksums-zh-TW-win64-nightly/opt: ZpzesNn0R6Gj6mgFpqhBWg + beetmover-repackage-ach-linux-nightly/opt: T0TMBosvRCqpmD4aviGeSA + beetmover-repackage-ach-linux64-nightly/opt: SMBOLn7oQ9We8EK-8B1vEQ + beetmover-repackage-ach-macosx64-nightly/opt: TpYugzhCS1S8N07oDpm1Iw + beetmover-repackage-ach-win32-nightly/opt: N6AuE-76RwW_rY2k_hlFLg + beetmover-repackage-ach-win64-nightly/opt: K5u4Rr2yS0GfEw1cmyEYvQ + beetmover-repackage-af-linux-nightly/opt: E0_TAQ6ERCmJzk4MURDdiw + beetmover-repackage-af-linux64-nightly/opt: NWK90IISRK-5jH86a4igqw + beetmover-repackage-af-macosx64-nightly/opt: RZ28deERRPGwtMnzGQr20g + beetmover-repackage-af-win32-nightly/opt: avl_qJNNRsCPG8COasRQCQ + beetmover-repackage-af-win64-nightly/opt: RrJqKLlxQRCxkFklnN7L_w + beetmover-repackage-an-linux-nightly/opt: E7JPu99bSHSVOppHZ5eR1A + beetmover-repackage-an-linux64-nightly/opt: ZdziLgxpRKqzDfQ_ROYEfg + beetmover-repackage-an-macosx64-nightly/opt: ag1oD52eTMOYzBGLeApWMA + beetmover-repackage-an-win32-nightly/opt: O4UWhndYQz2MiHacXj4sDQ + beetmover-repackage-an-win64-nightly/opt: VxeZ1rivReKUcfHOFYPOVw + beetmover-repackage-ar-linux-nightly/opt: FqTnlFa9RwW7eGrmiFoaiw + beetmover-repackage-ar-linux64-nightly/opt: MrKdqB37Qo-1iOCwP85bGA + beetmover-repackage-ar-macosx64-nightly/opt: dqFHFYIyTuGcWUzSrR5WLw + beetmover-repackage-ar-win32-nightly/opt: XZXzihUoRaiXMxTA_AORnA + beetmover-repackage-ar-win64-nightly/opt: HtYBksRoSr-GvHEXf7WWYw + beetmover-repackage-as-linux-nightly/opt: aWQWZZBaSIeX4rMVHGNMqA + beetmover-repackage-as-linux64-nightly/opt: L53DblPpTnGvxAyq8vNsng + beetmover-repackage-as-macosx64-nightly/opt: LYfSWCXjTPq2vYRkv8qZnA + beetmover-repackage-as-win32-nightly/opt: dDpBXBOORJ6hlkc5FJ7Fsg + beetmover-repackage-as-win64-nightly/opt: WbzrVTD5TjGuavrke9Za6A + beetmover-repackage-ast-linux-nightly/opt: LdDGHLTwSK6RJPspfJSobQ + beetmover-repackage-ast-linux64-nightly/opt: Ld5GC_WpSYmVIPOJgppqOw + beetmover-repackage-ast-macosx64-nightly/opt: WZlLLRXBRXe34_Jj4iVKWg + beetmover-repackage-ast-win32-nightly/opt: SNZDUw_dTeOLdjoXtcOsdg + beetmover-repackage-ast-win64-nightly/opt: E-kjRKAmQXKg77hNBueM3w + beetmover-repackage-az-linux-nightly/opt: PPTL6shFRLOx8csCco-zQQ + beetmover-repackage-az-linux64-nightly/opt: IE4-H9OvTvGjbHB7fwt1eA + beetmover-repackage-az-macosx64-nightly/opt: Xa2pYNLdR-euPYinzN5g_g + beetmover-repackage-az-win32-nightly/opt: eZHSrVvESqmtODMiLfwl-Q + beetmover-repackage-az-win64-nightly/opt: aWYhHe6MSomon2ldyUQFEQ + beetmover-repackage-be-linux-nightly/opt: dplioIgmSOiDG3Zp7WHl_Q + beetmover-repackage-be-linux64-nightly/opt: QB3vQVnCRgOlLOdR-PvT5Q + beetmover-repackage-be-macosx64-nightly/opt: UICXFoRPRNC3S-DFUGt4ow + beetmover-repackage-be-win32-nightly/opt: ASyb8Ap8R2OSgC5sGGZLsQ + beetmover-repackage-be-win64-nightly/opt: OHxrtwhUQ62RHaxE44eq3g + beetmover-repackage-bg-linux-nightly/opt: Ou2XZvsJRLC08T0JqG6P7A + beetmover-repackage-bg-linux64-nightly/opt: dRVqmBD9Qba0BEAD1KWU4A + beetmover-repackage-bg-macosx64-nightly/opt: Cg4jHH2nSEytt61CujbxeA + beetmover-repackage-bg-win32-nightly/opt: ZfVbqhMaSUqiglS8QuWWjQ + beetmover-repackage-bg-win64-nightly/opt: YZK-hW4TRBydjNZe7qDTuQ + beetmover-repackage-bn-BD-linux-nightly/opt: S2MKeHWJQRuX4NsLDaeK0w + beetmover-repackage-bn-BD-linux64-nightly/opt: CAreRKRHSECR7yoaAC0NeA + beetmover-repackage-bn-BD-macosx64-nightly/opt: S08zcgg8QKOTaZsJnfWDYA + beetmover-repackage-bn-BD-win32-nightly/opt: Q7Ybo_k1RjC5n6zRgbZzaA + beetmover-repackage-bn-BD-win64-nightly/opt: bcP991rKSeKzspDg3qJL2w + beetmover-repackage-bn-IN-linux-nightly/opt: bda5WeiVReGdpVN7tPyH-Q + beetmover-repackage-bn-IN-linux64-nightly/opt: FEiYOnAmSc-nhxfKzVsmoA + beetmover-repackage-bn-IN-macosx64-nightly/opt: Xp2EvBidRmGXt7zvolkWZg + beetmover-repackage-bn-IN-win32-nightly/opt: amdxmjZ1QrS1yD6gUe-feQ + beetmover-repackage-bn-IN-win64-nightly/opt: CKpV5w1rSiuwuBgg5pHJig + beetmover-repackage-br-linux-nightly/opt: C2MZ74sfQi2WslG6lMV_2w + beetmover-repackage-br-linux64-nightly/opt: HfDZ4KBKTPSaSkD0eVoDxA + beetmover-repackage-br-macosx64-nightly/opt: Bq6D8yuvSYqA4Q1_I6j04A + beetmover-repackage-br-win32-nightly/opt: VFigux2XSjq-Xr4fy4Yr_g + beetmover-repackage-br-win64-nightly/opt: R2UoQHZTR3myClDcCj1ctg + beetmover-repackage-bs-linux-nightly/opt: Axcb736qRmqLeEyYuCKoUA + beetmover-repackage-bs-linux64-nightly/opt: C-hci-p4QkSHszi_SrvsSA + beetmover-repackage-bs-macosx64-nightly/opt: dJmWmoQVRCGtU9e4oPVP8g + beetmover-repackage-bs-win32-nightly/opt: JtxMGV2ESMuHtyJje1Cpgw + beetmover-repackage-bs-win64-nightly/opt: LquOOkWiTpyR-GmDlQr3zg + beetmover-repackage-ca-linux-nightly/opt: F-IOYRWNTuWEhAkDWdhu7A + beetmover-repackage-ca-linux64-nightly/opt: H3SOLS9DRX2SnriZJrypVA + beetmover-repackage-ca-macosx64-nightly/opt: PNyvVqm2RfSnYOb144ju4A + beetmover-repackage-ca-win32-nightly/opt: Y8V9Lzi5SjiYOtQVVLC1EA + beetmover-repackage-ca-win64-nightly/opt: AJdVhSumQAaCaPAhGVzzbQ + beetmover-repackage-cak-linux-nightly/opt: b6Yj_IlISoWTy77IW53GDQ + beetmover-repackage-cak-linux64-nightly/opt: B0pLeywxQwGOZukGSibzWA + beetmover-repackage-cak-macosx64-nightly/opt: AbCq3OIIRmGsuT1ggtn31A + beetmover-repackage-cak-win32-nightly/opt: f5UP4tHlQGKt6G3Zo3nPgg + beetmover-repackage-cak-win64-nightly/opt: WcNvjPyVTc22DenVmwDzpA + beetmover-repackage-cs-linux-nightly/opt: d6hnCwCUSJuUz_mpSczYPg + beetmover-repackage-cs-linux64-nightly/opt: Oxh_RUuFQZqBD3n35da4wA + beetmover-repackage-cs-macosx64-nightly/opt: FWVp-9QDTRKyM6JRaVC9gw + beetmover-repackage-cs-win32-nightly/opt: NCLQJSJnRNW-KoQHA9M-qw + beetmover-repackage-cs-win64-nightly/opt: TwJNHkcqR_uJr-Tk7P79Rw + beetmover-repackage-cy-linux-nightly/opt: e2dS0rD4TX-inqSrFOlUXg + beetmover-repackage-cy-linux64-nightly/opt: WRtqUx53Tze90dv1l2DH9A + beetmover-repackage-cy-macosx64-nightly/opt: O6rX30GpTt-IKgUWS1hSSw + beetmover-repackage-cy-win32-nightly/opt: KFDMdxsvSjatAXDEEXzymg + beetmover-repackage-cy-win64-nightly/opt: WetOqmV_SuyaS2srsIwqOg + beetmover-repackage-da-linux-nightly/opt: QSec8ATMSbWlbAAbUi4-YQ + beetmover-repackage-da-linux64-nightly/opt: BqjCEDqsTaSDpyv8pGiwUQ + beetmover-repackage-da-macosx64-nightly/opt: dHhK0kxZThS9WmKnrvfAOQ + beetmover-repackage-da-win32-nightly/opt: NrUPE6sPRxmHDXKUyLj_7Q + beetmover-repackage-da-win64-nightly/opt: D7PhB8F_QsSUpaSX5eEqtA + beetmover-repackage-de-linux-nightly/opt: B7BCad7YTCqiAbQbmzb4_w + beetmover-repackage-de-linux64-nightly/opt: RF-oI_jRQtmnkpbLbIjsTw + beetmover-repackage-de-macosx64-nightly/opt: JdvSjqo0QP61AY_PKr6VIA + beetmover-repackage-de-win32-nightly/opt: bHe8ErWnTB2g38dHj_AAuA + beetmover-repackage-de-win64-nightly/opt: CIa5HsrFQZaks6ArJTv3LA + beetmover-repackage-dsb-linux-nightly/opt: DKF9tyH3SFO2_rrAAFefzA + beetmover-repackage-dsb-linux64-nightly/opt: VNe8NA6xSQiWSxd6EYtN-Q + beetmover-repackage-dsb-macosx64-nightly/opt: NGMiMIfdTnaUHWkNKw7Sxw + beetmover-repackage-dsb-win32-nightly/opt: JW7NzbCyTByfO-bEgVOIjg + beetmover-repackage-dsb-win64-nightly/opt: KrX-Jf5ESaqJBH57WeyojA + beetmover-repackage-el-linux-nightly/opt: VfVbz8qRRV6jaDIo1aneVg + beetmover-repackage-el-linux64-nightly/opt: C58pRnjIQSGv-TA3fje0_w + beetmover-repackage-el-macosx64-nightly/opt: LzWTGu8kRYmgNJeeDAwt8Q + beetmover-repackage-el-win32-nightly/opt: Q1J7Iz1WSZe5JN4Wf4zqSg + beetmover-repackage-el-win64-nightly/opt: IEdwqr_9QKCD3wcqyWhYEA + beetmover-repackage-en-CA-linux-nightly/opt: IAIkG-7eTKW6oTnAz0H6Fg + beetmover-repackage-en-CA-linux64-nightly/opt: NFXWi-O5TBKFObRNHD1Dyw + beetmover-repackage-en-CA-macosx64-nightly/opt: IckvqAvBTWOov3Gdvcd6Zg + beetmover-repackage-en-CA-win32-nightly/opt: TTZKctYVS62Oal250037QQ + beetmover-repackage-en-CA-win64-nightly/opt: AnQm3wzeRG607PNa_fjJPQ + beetmover-repackage-en-GB-linux-nightly/opt: GRl_mZHQTFmM1WgYCWpXwA + beetmover-repackage-en-GB-linux64-nightly/opt: Vpl9VBy3Q1-oupRgJosz4w + beetmover-repackage-en-GB-macosx64-nightly/opt: Fpp1x6CoTZWIh5r_V1Sxlw + beetmover-repackage-en-GB-win32-nightly/opt: VNnPqG2GQiOWasSbbQsd1g + beetmover-repackage-en-GB-win64-nightly/opt: EW50p_jrSxabYX3IC52gnw + beetmover-repackage-en-ZA-linux-nightly/opt: JNuMJqdvTTGfNTPyXYXkkg + beetmover-repackage-en-ZA-linux64-nightly/opt: Mh8vEurDQ-Kt8478p_WcPg + beetmover-repackage-en-ZA-macosx64-nightly/opt: P_OxKVYdT1OfzBVFdzJjeQ + beetmover-repackage-en-ZA-win32-nightly/opt: HSPTjbPETEOEZ0CQ3lTGGw + beetmover-repackage-en-ZA-win64-nightly/opt: BCONUj6HQ1awAi46B6e3Uw + beetmover-repackage-eo-linux-nightly/opt: NMocu83QSvuPQzitQkyclA + beetmover-repackage-eo-linux64-nightly/opt: butTzclsTQGvWKhLJixNHg + beetmover-repackage-eo-macosx64-nightly/opt: GAuPMH7HR7Si2dApBxTM6Q + beetmover-repackage-eo-win32-nightly/opt: Gk_7RX8UThyt6kkaCpAaUA + beetmover-repackage-eo-win64-nightly/opt: ZEWMtXoxQHKKjB5wX3FaZQ + beetmover-repackage-es-AR-linux-nightly/opt: QHItbozbRiOsbaXvlAADvA + beetmover-repackage-es-AR-linux64-nightly/opt: JiCO9DXpQNG4y-kLMCbPvw + beetmover-repackage-es-AR-macosx64-nightly/opt: JJhGu8G-R6ey5HMrt8N7WA + beetmover-repackage-es-AR-win32-nightly/opt: d3pvNDsRRRCpIT1huhHPqA + beetmover-repackage-es-AR-win64-nightly/opt: Jm4fFZwHQdioDLMzx9GD9Q + beetmover-repackage-es-CL-linux-nightly/opt: HlrVp-eCTAGKa2qHjrf90A + beetmover-repackage-es-CL-linux64-nightly/opt: CimY8oC2TlubOwGLk2v-ZA + beetmover-repackage-es-CL-macosx64-nightly/opt: fBAykKCOQDKQqW7I4mpGXg + beetmover-repackage-es-CL-win32-nightly/opt: WypRc2nQTy6klu5lqqiIuA + beetmover-repackage-es-CL-win64-nightly/opt: TD-jCgOfTcaxpVmkKVGe2A + beetmover-repackage-es-ES-linux-nightly/opt: Brva-VkuR2Wp1FrMlHz1hA + beetmover-repackage-es-ES-linux64-nightly/opt: GWEBcq_RRpKrejQlVqc1mQ + beetmover-repackage-es-ES-macosx64-nightly/opt: MSzu9QJ4QTGmrd09lMe31w + beetmover-repackage-es-ES-win32-nightly/opt: HHlaojwRQaW7N8HDskyzmA + beetmover-repackage-es-ES-win64-nightly/opt: cy43GuciQXG97nvDe-6dQA + beetmover-repackage-es-MX-linux-nightly/opt: Osts3rvvSAu2zwjKJNDz8g + beetmover-repackage-es-MX-linux64-nightly/opt: N_GOxtRxSIyQ1XwLbHQzTQ + beetmover-repackage-es-MX-macosx64-nightly/opt: RdwHq7uURx-xyUdFnIKH7g + beetmover-repackage-es-MX-win32-nightly/opt: cKpQWdnzQHK5URpITV7t7w + beetmover-repackage-es-MX-win64-nightly/opt: fmrv_3DmTRWOxErDAcrNyw + beetmover-repackage-et-linux-nightly/opt: c-Awag1KTWGOfg1FyGEl6Q + beetmover-repackage-et-linux64-nightly/opt: R5k74SNoSPyfunfnRi1JZA + beetmover-repackage-et-macosx64-nightly/opt: W57B_YuvTceh7Neol-UN2w + beetmover-repackage-et-win32-nightly/opt: W2oCMAvlT3aI_N_8WyYCMw + beetmover-repackage-et-win64-nightly/opt: BB6VI46WQpOTqmL5KBIpnw + beetmover-repackage-eu-linux-nightly/opt: Dm7Pl-yITXycabzxuUpFpQ + beetmover-repackage-eu-linux64-nightly/opt: Oe7tlJQ9S563-Hl-3Sk_yg + beetmover-repackage-eu-macosx64-nightly/opt: Dt4t448kTliszaEj2gUXig + beetmover-repackage-eu-win32-nightly/opt: TezOlH5qQFSfDolqCHYnkQ + beetmover-repackage-eu-win64-nightly/opt: Pi9a_Q6kSV2bREnSjVT2dw + beetmover-repackage-fa-linux-nightly/opt: EdkCIA51RluWp3WXe4sXxA + beetmover-repackage-fa-linux64-nightly/opt: WiG-8z8SQAmhM8fuVNgE3g + beetmover-repackage-fa-macosx64-nightly/opt: F96eva97Tq6p9Sx0MnKNVw + beetmover-repackage-fa-win32-nightly/opt: fntJsAgOTSmoKeeqCLU5oQ + beetmover-repackage-fa-win64-nightly/opt: YS9csF60SYGgsenCMotZAw + beetmover-repackage-ff-linux-nightly/opt: dOWlHfp-R_SfW2dQ5Tat8Q + beetmover-repackage-ff-linux64-nightly/opt: SkxXmkfOT5aPQOO_-9YGiw + beetmover-repackage-ff-macosx64-nightly/opt: T8T1hIwfQUm_GsorEnvmug + beetmover-repackage-ff-win32-nightly/opt: GmZlf_SyRfiPQ2v-MWhnJQ + beetmover-repackage-ff-win64-nightly/opt: f05mB4DGSTCOd5G4fWXxBQ + beetmover-repackage-fi-linux-nightly/opt: Z_RBq4ARSgi7ASmRP6sn1A + beetmover-repackage-fi-linux64-nightly/opt: ISgrf-WMQXGFnjlZU9JAEA + beetmover-repackage-fi-macosx64-nightly/opt: At6Vi3kCQSmwHYSFL4Z1eQ + beetmover-repackage-fi-win32-nightly/opt: NywzLPJtQp2aB4eIPocx2g + beetmover-repackage-fi-win64-nightly/opt: WF7Ex2OAQWm7Z5Ni8ZVaHQ + beetmover-repackage-fr-linux-nightly/opt: EWMNpDQlTqmnx1oOsQnCZA + beetmover-repackage-fr-linux64-nightly/opt: O3bAikO5QDa5YItV78UzUA + beetmover-repackage-fr-macosx64-nightly/opt: ZWDUa0F6STi-0TDjhQYcsg + beetmover-repackage-fr-win32-nightly/opt: SB9auZqJQuugTezOWdMjmQ + beetmover-repackage-fr-win64-nightly/opt: LS_t59ItQs-B0X6hIjDY0A + beetmover-repackage-fy-NL-linux-nightly/opt: VexwdunSSB22NOSajyx0qw + beetmover-repackage-fy-NL-linux64-nightly/opt: Pcx7JRK3QtW2O-3_OdG17A + beetmover-repackage-fy-NL-macosx64-nightly/opt: AgR_e1yLR1e5jYa_82-PdQ + beetmover-repackage-fy-NL-win32-nightly/opt: GjXo07vRQjOFSbRxT-S_iA + beetmover-repackage-fy-NL-win64-nightly/opt: BqW5_HxxSTKi6rFAeggbxg + beetmover-repackage-ga-IE-linux-nightly/opt: Cs-PemPORdC1wAldJGJUmA + beetmover-repackage-ga-IE-linux64-nightly/opt: anwRhctkQxGPoGr7V9lN_g + beetmover-repackage-ga-IE-macosx64-nightly/opt: bYtOPqgAT1m3oaJeu_MK4g + beetmover-repackage-ga-IE-win32-nightly/opt: NwS1ExwMR7aEuw1akzG1ug + beetmover-repackage-ga-IE-win64-nightly/opt: PAZLsQhwSv-YFNBeZ--oZw + beetmover-repackage-gd-linux-nightly/opt: KGCT5EpORd-WJqi4q26fDA + beetmover-repackage-gd-linux64-nightly/opt: Tk_LgZLbTM6yoJ_ELnoW0A + beetmover-repackage-gd-macosx64-nightly/opt: UOyLHhKJRTubiod6ls2Gtg + beetmover-repackage-gd-win32-nightly/opt: fW4ZUoSDSZusn08Syfr2BA + beetmover-repackage-gd-win64-nightly/opt: DL4cUiWjQWO7O3wn1r_6qA + beetmover-repackage-gl-linux-nightly/opt: FW6PoOi_TCKY5iXTubuvOQ + beetmover-repackage-gl-linux64-nightly/opt: b0N9DALdRRmoRCIq62SV9w + beetmover-repackage-gl-macosx64-nightly/opt: LaOIsTc6Qxuq0QMjW2IkRw + beetmover-repackage-gl-win32-nightly/opt: fhXpQOvRRHuGVsObxQ669Q + beetmover-repackage-gl-win64-nightly/opt: Iqpn3BgoT-2iwjQ_hGkH_Q + beetmover-repackage-gn-linux-nightly/opt: PnpOCozXT3-fhdoeJQeB4g + beetmover-repackage-gn-linux64-nightly/opt: IcB7LmWRTHmy0qiXQuDiow + beetmover-repackage-gn-macosx64-nightly/opt: IqB6MsfVT26Kz8jIdogyuA + beetmover-repackage-gn-win32-nightly/opt: Jnkr1JjqRIKq5kMLDOjiiQ + beetmover-repackage-gn-win64-nightly/opt: MryT0QCMRGS8PeRHYLiaDg + beetmover-repackage-gu-IN-linux-nightly/opt: Ylg2TUnPRMm1h21fyYRmbw + beetmover-repackage-gu-IN-linux64-nightly/opt: P8n0O-A2SIaKGujWD7VPIQ + beetmover-repackage-gu-IN-macosx64-nightly/opt: ML8Z9HAAQ-6R7qfjzd413A + beetmover-repackage-gu-IN-win32-nightly/opt: ZNAp2RfBQ8utinrV1u9RRw + beetmover-repackage-gu-IN-win64-nightly/opt: NfvhMspdRLqHq1AUYjBBxw + beetmover-repackage-he-linux-nightly/opt: H5nTycQuRoerZiFzRKXReg + beetmover-repackage-he-linux64-nightly/opt: Gg6xdHCHRJW5rR0VQ1OJPA + beetmover-repackage-he-macosx64-nightly/opt: cGITz_8ZTJOEFdR_0oMqqg + beetmover-repackage-he-win32-nightly/opt: Cd0chyHTR5WjSpxjpc_SMQ + beetmover-repackage-he-win64-nightly/opt: bxQor4tBSMKFHiZXubUvJQ + beetmover-repackage-hi-IN-linux-nightly/opt: BS0PzZ1XTCuP41KFS6d-eA + beetmover-repackage-hi-IN-linux64-nightly/opt: Bs2LBPx6T6mMzkN1HgiSSw + beetmover-repackage-hi-IN-macosx64-nightly/opt: HtJjNZFrQ2qNWS05dyaMUA + beetmover-repackage-hi-IN-win32-nightly/opt: dq-WYunJSf2hAi6FoBFS9g + beetmover-repackage-hi-IN-win64-nightly/opt: RL36I4i7RMyweQpqP9LTPQ + beetmover-repackage-hr-linux-nightly/opt: Hcxr_OTNRbKPPj2wTHYssw + beetmover-repackage-hr-linux64-nightly/opt: cd1vLOttT66coEZmlUwVmw + beetmover-repackage-hr-macosx64-nightly/opt: CMziF882RW2hoSpjDqUHpA + beetmover-repackage-hr-win32-nightly/opt: KO5LlTChQgeNdlTIFQ8SDQ + beetmover-repackage-hr-win64-nightly/opt: b1z-Or8lTf-1yhlzGWvWpA + beetmover-repackage-hsb-linux-nightly/opt: YMbXbudAR2ew-GxelGpFtg + beetmover-repackage-hsb-linux64-nightly/opt: ZX6YsGWsS82FZBnoYPsJEQ + beetmover-repackage-hsb-macosx64-nightly/opt: U800fpO_QSSH8QRvUwn_qg + beetmover-repackage-hsb-win32-nightly/opt: UwJJSlZaRKKv74xlaOiPQA + beetmover-repackage-hsb-win64-nightly/opt: VuPZy77_TI2odFC_4TFc5Q + beetmover-repackage-hu-linux-nightly/opt: Pb_7eNeCTVmQaZwka2oG7Q + beetmover-repackage-hu-linux64-nightly/opt: QtETo4BFT62G5vCUUGgZYA + beetmover-repackage-hu-macosx64-nightly/opt: Fbn-q5JkQFiKIYoJuqg-Xw + beetmover-repackage-hu-win32-nightly/opt: Qk2uljhfTUqI0NGVxvAkGg + beetmover-repackage-hu-win64-nightly/opt: StsjcF2wQy2c-1oRcvh6Dg + beetmover-repackage-hy-AM-linux-nightly/opt: YPFp7-zeSV-fsoAAjvsaig + beetmover-repackage-hy-AM-linux64-nightly/opt: CfkG0fjwSFmoxp_BR9fE1w + beetmover-repackage-hy-AM-macosx64-nightly/opt: YNn_UQlGTYmmA78HoPDjlQ + beetmover-repackage-hy-AM-win32-nightly/opt: RLXO_OIwRV20Sm6E6meprg + beetmover-repackage-hy-AM-win64-nightly/opt: UeJegHhVTqqPkSvsV8SDEw + beetmover-repackage-ia-linux-nightly/opt: JZxZvNNWRC27uayH1YpJPw + beetmover-repackage-ia-linux64-nightly/opt: ZTTG0eBiQFaBffqEvxMlMg + beetmover-repackage-ia-macosx64-nightly/opt: F6pR1g1OSeSJsegxn04P0A + beetmover-repackage-ia-win32-nightly/opt: KnP8tnqbTwmGX_m3HIjPfA + beetmover-repackage-ia-win64-nightly/opt: QYt7460cSLqS7o84rsTsAA + beetmover-repackage-id-linux-nightly/opt: EafEPfk4TaOVp36dLdB_rw + beetmover-repackage-id-linux64-nightly/opt: KEEAVOlJQkC5MdNJkLYgqA + beetmover-repackage-id-macosx64-nightly/opt: F0n1IWfyRiWkrchjeywInw + beetmover-repackage-id-win32-nightly/opt: Y14ViEVFQoe5S6Q3JbxLew + beetmover-repackage-id-win64-nightly/opt: d8-sY-BYQ1K5xRw1RY2rlQ + beetmover-repackage-is-linux-nightly/opt: B3r_x9VgQK200oOKouvXEA + beetmover-repackage-is-linux64-nightly/opt: Wlj9Pr1USP2HOINAdoi7aw + beetmover-repackage-is-macosx64-nightly/opt: F5JleVV6SHq-U0dWQGaBwg + beetmover-repackage-is-win32-nightly/opt: QvpQYqoHThaMghWhySwmuQ + beetmover-repackage-is-win64-nightly/opt: FsLYhHHVSg6XwJCovzi-Zw + beetmover-repackage-it-linux-nightly/opt: CJvhiWc0TKasyZ1EBEnuRw + beetmover-repackage-it-linux64-nightly/opt: GhxdqpQ0QoO9ga8tgcWJ1A + beetmover-repackage-it-macosx64-nightly/opt: LNdDVm9fTui3obbtjmGlRg + beetmover-repackage-it-win32-nightly/opt: e_pGFdmRSPGX2e4Prrh1Rw + beetmover-repackage-it-win64-nightly/opt: GXeT_7_GS-e_WgEsfGdjhw + beetmover-repackage-ja-JP-mac-macosx64-nightly/opt: b6opRl6PSS6KUIqOO4_9YA + beetmover-repackage-ja-linux-nightly/opt: TRygNdiLSNO20HkQxFNxWg + beetmover-repackage-ja-linux64-nightly/opt: XH4tiChMRgSBHWF-NAB0tQ + beetmover-repackage-ja-win32-nightly/opt: YR6WXHtXTbuHYQufry8ZCA + beetmover-repackage-ja-win64-nightly/opt: MfCIujg8RtSk-H-JCSbtzA + beetmover-repackage-ka-linux-nightly/opt: C-YjvdgUSC2fk9OYqVqG3w + beetmover-repackage-ka-linux64-nightly/opt: HTW-bqDoRXqNTnleJCNj7A + beetmover-repackage-ka-macosx64-nightly/opt: A9K8nrzBQgKQqyGPLOpIdA + beetmover-repackage-ka-win32-nightly/opt: JKmWjMTGTrCjLMSXsSXEeg + beetmover-repackage-ka-win64-nightly/opt: QEPuLwFkTGWlZsKxjrD0Dw + beetmover-repackage-kab-linux-nightly/opt: TCf5t_4_TtOCfKxSQjebfg + beetmover-repackage-kab-linux64-nightly/opt: e1IDNIhLShWLPJW9aLj10g + beetmover-repackage-kab-macosx64-nightly/opt: JPeCKEacRNGZ3Oa-fLOC4g + beetmover-repackage-kab-win32-nightly/opt: YlJt8v4JTnCI5tQkRXPp3w + beetmover-repackage-kab-win64-nightly/opt: QxztbZxWSOuEd0nDvGLE0Q + beetmover-repackage-kk-linux-nightly/opt: ZjdiltPgSKm3x9g0MpkQ7A + beetmover-repackage-kk-linux64-nightly/opt: SFNO0O4QQPe1EZ6aWo0F2w + beetmover-repackage-kk-macosx64-nightly/opt: ewpAZknIQK2HpjKkvykCtg + beetmover-repackage-kk-win32-nightly/opt: MmeUkaDhQWCy9-bZDPtNjQ + beetmover-repackage-kk-win64-nightly/opt: R-ni211MSXKA1iuXDgbK1w + beetmover-repackage-km-linux-nightly/opt: cdX-RfXzSkasFVxlFbCrAg + beetmover-repackage-km-linux64-nightly/opt: UYK-2knSSwWMEtzpbKp7GQ + beetmover-repackage-km-macosx64-nightly/opt: C2OzZK2tSTWy8K-k65-eGA + beetmover-repackage-km-win32-nightly/opt: N_McP1auTqymybGQAl-WJA + beetmover-repackage-km-win64-nightly/opt: S9rRDUqWR8e3udNmBH_5Nw + beetmover-repackage-kn-linux-nightly/opt: BEQl5usRTQKRCsscoW-iDA + beetmover-repackage-kn-linux64-nightly/opt: edtYE1mRQAqq1H1O3L52Yg + beetmover-repackage-kn-macosx64-nightly/opt: AXGLoQMsQcOk5Vj90fdPyg + beetmover-repackage-kn-win32-nightly/opt: VmxFOfpISyihEoHNwfZu6w + beetmover-repackage-kn-win64-nightly/opt: JYiWx82BSHW8MWybvQntaA + beetmover-repackage-ko-linux-nightly/opt: WgW1LPSjR8u4lbwmO26f2g + beetmover-repackage-ko-linux64-nightly/opt: cFAjbJqWTtmcJ_JViFAZ5A + beetmover-repackage-ko-macosx64-nightly/opt: HzfyPtQqTbOY-Sr37e0C6g + beetmover-repackage-ko-win32-nightly/opt: fT_XLNyMSICeWFNdOmJVEg + beetmover-repackage-ko-win64-nightly/opt: MJWmh3DUSEO2Pr-y2EM8aw + beetmover-repackage-lij-linux-nightly/opt: fvEN7tJLRia6VFb4HP-G8A + beetmover-repackage-lij-linux64-nightly/opt: CqOUKJdIRjGneyE51DE-MA + beetmover-repackage-lij-macosx64-nightly/opt: C5JYSXUqTUynTEv7DFWJMQ + beetmover-repackage-lij-win32-nightly/opt: Is0HW-j1RBKMCaKg9L2O8A + beetmover-repackage-lij-win64-nightly/opt: EyM0yBOPSJ-8BkJQSP7J6g + beetmover-repackage-linux-nightly/opt: Me-zHWyySOCwDp_0-S0P6A + beetmover-repackage-linux64-nightly/opt: f9hEcIfwQw-4t4CxU3s6rw + beetmover-repackage-lt-linux-nightly/opt: bCnhY6yfT36_oNqtQ1vGAw + beetmover-repackage-lt-linux64-nightly/opt: HgF0Yg2vQQOaHRG0pMo1yw + beetmover-repackage-lt-macosx64-nightly/opt: RMCnnJFCT4uqSVdd2f1OFA + beetmover-repackage-lt-win32-nightly/opt: HYU4ghhWQdC0CqiyA0sUrA + beetmover-repackage-lt-win64-nightly/opt: R4qldvvST2SP_fPiuTKnSA + beetmover-repackage-lv-linux-nightly/opt: emkD4WgxTlqwjgqCXmSeGQ + beetmover-repackage-lv-linux64-nightly/opt: UKm84q62TK6IGslrQo6DKw + beetmover-repackage-lv-macosx64-nightly/opt: Rgqc7eRzRea0-7yT_wlo2Q + beetmover-repackage-lv-win32-nightly/opt: MDkP1lVlSW2BU4xY7m3v_Q + beetmover-repackage-lv-win64-nightly/opt: IUd6w6unSaCVySzTpPtNDg + beetmover-repackage-macosx64-nightly/opt: U-1KjmHDSfitmIloCZqTmA + beetmover-repackage-mai-linux-nightly/opt: fXFGYTUDTLC4W-dBK9B38A + beetmover-repackage-mai-linux64-nightly/opt: JretRfOwQUGi415SmM6kKw + beetmover-repackage-mai-macosx64-nightly/opt: YOKs3fJjR4alOJDx5WJ42A + beetmover-repackage-mai-win32-nightly/opt: VvZ5lsbETQ2T2o7OPCowBA + beetmover-repackage-mai-win64-nightly/opt: FX5g1bNOQtyUbezKKRxWnQ + beetmover-repackage-mk-linux-nightly/opt: Ro3vajMJTBeYla0S-8AE7A + beetmover-repackage-mk-linux64-nightly/opt: BIpBu_Z_Rtyj9DwknxK8Qw + beetmover-repackage-mk-macosx64-nightly/opt: MvfNg5JISR2CxChpMrGcVQ + beetmover-repackage-mk-win32-nightly/opt: D80Sj1j_TGOKdf0KfyjmUg + beetmover-repackage-mk-win64-nightly/opt: Uep4KIwXQyCnD7dF87IGEg + beetmover-repackage-ml-linux-nightly/opt: B6sAHufJSTy6MXmNxWJwgg + beetmover-repackage-ml-linux64-nightly/opt: IPPsAYyeSUqQ6KL_XZQaWA + beetmover-repackage-ml-macosx64-nightly/opt: BemH4RmeTGOyMjDBWjyqXA + beetmover-repackage-ml-win32-nightly/opt: J0UzKvakS5KA_vPK1h6kqg + beetmover-repackage-ml-win64-nightly/opt: XUlYvDiOSkatP1XDlLmZng + beetmover-repackage-mr-linux-nightly/opt: cx0vcDkfS6KQ24aKLBlNLQ + beetmover-repackage-mr-linux64-nightly/opt: BmsYgMb7S5uYkd3BI4ct-A + beetmover-repackage-mr-macosx64-nightly/opt: XTm97ikkQ6OvAAikNCKkkQ + beetmover-repackage-mr-win32-nightly/opt: H1AILI1VRjWpQ_gyZal3YA + beetmover-repackage-mr-win64-nightly/opt: GGxzRgx7S1udIsStyoF0NQ + beetmover-repackage-ms-linux-nightly/opt: PVgLgKFMQQCVvgnng01pNQ + beetmover-repackage-ms-linux64-nightly/opt: KgdyxWNkSSiuUmZEVYDcIQ + beetmover-repackage-ms-macosx64-nightly/opt: RZgT-3mKRFqq04YEoKkeBg + beetmover-repackage-ms-win32-nightly/opt: UaVPwKBdSdqfGPdQgozobg + beetmover-repackage-ms-win64-nightly/opt: SZvYmKTqQBuOs3qxc4nWRw + beetmover-repackage-my-linux-nightly/opt: c1G8knuPS5m1MLbwl_kqUw + beetmover-repackage-my-linux64-nightly/opt: NdhruHSAQ9uZD2EaRM52xg + beetmover-repackage-my-macosx64-nightly/opt: U1z8gBDHQgCSnqUxzDLcYA + beetmover-repackage-my-win32-nightly/opt: FPlTcyUZSpq91UA4DpSDEA + beetmover-repackage-my-win64-nightly/opt: N5YS7RFERfyU6RFY0RXkFg + beetmover-repackage-nb-NO-linux-nightly/opt: JNz9MBhVTkmjD4_G3reRTg + beetmover-repackage-nb-NO-linux64-nightly/opt: APW6-pRZSqaHzb9WpglpMA + beetmover-repackage-nb-NO-macosx64-nightly/opt: J3ykhHcLQtmgQzg3P2zwLA + beetmover-repackage-nb-NO-win32-nightly/opt: VGZDOejmT-WTu_PfYdqIOA + beetmover-repackage-nb-NO-win64-nightly/opt: X-TIAN7PTOqCd_4t2KoHUA + beetmover-repackage-ne-NP-linux-nightly/opt: GflbzSu7TsWc-rgIXVp1FQ + beetmover-repackage-ne-NP-linux64-nightly/opt: b9yE9-3vT7mhcjUKKdG80A + beetmover-repackage-ne-NP-macosx64-nightly/opt: NW-O4N-wTJGPGOZFlrcNOQ + beetmover-repackage-ne-NP-win32-nightly/opt: B34zzKEFSdaivBcRzXem6g + beetmover-repackage-ne-NP-win64-nightly/opt: bWfeYkC6SCOhSpV-UhHlyw + beetmover-repackage-nl-linux-nightly/opt: TgYr-u9bT4Skoc7RaNg0zw + beetmover-repackage-nl-linux64-nightly/opt: VQNZmoQ4TEK2iXZM-kPK_g + beetmover-repackage-nl-macosx64-nightly/opt: N5saas7-T5-TxOuLdpvgdw + beetmover-repackage-nl-win32-nightly/opt: SxlnPNIHQyKuzKrUTyVswA + beetmover-repackage-nl-win64-nightly/opt: XZFul6aER9yoFeiIzqlzKw + beetmover-repackage-nn-NO-linux-nightly/opt: EVEaeA2NSuuOuHK6t_llow + beetmover-repackage-nn-NO-linux64-nightly/opt: ebt9r7gpRzG3XyGm9uor8A + beetmover-repackage-nn-NO-macosx64-nightly/opt: XsJobL55TV-hrM_dbwaDBQ + beetmover-repackage-nn-NO-win32-nightly/opt: M243GtiATEqO9ASMIxN34w + beetmover-repackage-nn-NO-win64-nightly/opt: HoW_8LQwRtqWbUR7FFAYfw + beetmover-repackage-oc-linux-nightly/opt: MEyzC5qSRAW2N4RzAmeEJw + beetmover-repackage-oc-linux64-nightly/opt: BT3ptDLBTqS3f2GgcUFVmw + beetmover-repackage-oc-macosx64-nightly/opt: fpcP_UmdTV6OJ0fYtJcGvw + beetmover-repackage-oc-win32-nightly/opt: DfWTHOJmQjuijQInA76yhA + beetmover-repackage-oc-win64-nightly/opt: QJQzmGmcQ0qFouK3_v4m6A + beetmover-repackage-or-linux-nightly/opt: bzheFQObShur7JW7gpXReg + beetmover-repackage-or-linux64-nightly/opt: MWHd3t9VSG2NMy91l3KCfA + beetmover-repackage-or-macosx64-nightly/opt: MPhSRqRNTA6RadJF--th4Q + beetmover-repackage-or-win32-nightly/opt: VeDho8ZuTuSBoPW_-fZ7wg + beetmover-repackage-or-win64-nightly/opt: Kvn_zQQQTvywHsI-aB5WGA + beetmover-repackage-pa-IN-linux-nightly/opt: MrNrjnScT6C19lBy0Ebsxw + beetmover-repackage-pa-IN-linux64-nightly/opt: JQE_ESNmRxC-lKOCHFxlkw + beetmover-repackage-pa-IN-macosx64-nightly/opt: E1mexvZiQpKjCun-EwSk2w + beetmover-repackage-pa-IN-win32-nightly/opt: ECG4GAG1Ryy_A-Gi5ISBRQ + beetmover-repackage-pa-IN-win64-nightly/opt: eJ-9-rkASzW84M0awiYm5Q + beetmover-repackage-pl-linux-nightly/opt: dOa0gX5iRna4zPc9JwAW_A + beetmover-repackage-pl-linux64-nightly/opt: RJqn-XGJTGm3LwxFQva-0g + beetmover-repackage-pl-macosx64-nightly/opt: TZNAPhCgTJuDzapWg4SUwQ + beetmover-repackage-pl-win32-nightly/opt: Q-VaPgObSJeTGAdOtVvzMQ + beetmover-repackage-pl-win64-nightly/opt: MJaui02-QROqbDue5_XTeQ + beetmover-repackage-pt-BR-linux-nightly/opt: cGzoBII-QoCyAWEkagMRpg + beetmover-repackage-pt-BR-linux64-nightly/opt: aPy4ojGqRqiP9qZfYA6r2Q + beetmover-repackage-pt-BR-macosx64-nightly/opt: YampoF2XTx2KixbCZxb2Dg + beetmover-repackage-pt-BR-win32-nightly/opt: Zz2mUu8pTg2Ho82Z6AH0iQ + beetmover-repackage-pt-BR-win64-nightly/opt: Z0xSecrRSr22LjJUWwilqw + beetmover-repackage-pt-PT-linux-nightly/opt: O1dPSI3DR8SQQsiuhMKxeQ + beetmover-repackage-pt-PT-linux64-nightly/opt: cteaZ5-vT5KXsWnILhoTIg + beetmover-repackage-pt-PT-macosx64-nightly/opt: fp-MCOCGRJeDYl_LGy46Mg + beetmover-repackage-pt-PT-win32-nightly/opt: B0nxsE2pSIOljA2ceB_Q3w + beetmover-repackage-pt-PT-win64-nightly/opt: GZk8aRtNTBSWAOP-7umQKQ + beetmover-repackage-rm-linux-nightly/opt: c3X7HBUjRiu2i2HBIAS4rA + beetmover-repackage-rm-linux64-nightly/opt: BAK_1kX2SauObBedx2fcxQ + beetmover-repackage-rm-macosx64-nightly/opt: JYaC9qZPSriUQDfsvzZaRA + beetmover-repackage-rm-win32-nightly/opt: WqXpIvKtTp6694RqlcobwA + beetmover-repackage-rm-win64-nightly/opt: ZIRmf10GQ0OKbKM3pkscAg + beetmover-repackage-ro-linux-nightly/opt: YCI9zXqaQwiHVYQ1bJDJRw + beetmover-repackage-ro-linux64-nightly/opt: MuOKoCEuSBCO_ZU59Jc_WA + beetmover-repackage-ro-macosx64-nightly/opt: HEBygsKlSFeghU_kcJ94Zw + beetmover-repackage-ro-win32-nightly/opt: VG0cb04FQwCH3jNw2hsdJg + beetmover-repackage-ro-win64-nightly/opt: IHaxxt69S62poikbx_zWLQ + beetmover-repackage-ru-linux-nightly/opt: T5s1hFWAQPajvGXOKzY3ZA + beetmover-repackage-ru-linux64-nightly/opt: FyzvGw8aSu-tixhYBHdcOw + beetmover-repackage-ru-macosx64-nightly/opt: PN0CpjZ3R1mCLT831Ey1IQ + beetmover-repackage-ru-win32-nightly/opt: fPAComkYTiCdLNMbJk4Uzg + beetmover-repackage-ru-win64-nightly/opt: P5Zn27QcQ1K2-FD19VxGkQ + beetmover-repackage-si-linux-nightly/opt: bT8zRu7RS2ugks47cgInYQ + beetmover-repackage-si-linux64-nightly/opt: I-gcz9cTRdukvuXLnfkiTA + beetmover-repackage-si-macosx64-nightly/opt: XkChb3EuQUWpwpUTsn4htA + beetmover-repackage-si-win32-nightly/opt: CZmRbZ25TDOrH5s0i8YR6Q + beetmover-repackage-si-win64-nightly/opt: fdDzyhQdSH6dlTZlwwunCQ + beetmover-repackage-sk-linux-nightly/opt: GI1Au7JqSnS3OW8QdY873w + beetmover-repackage-sk-linux64-nightly/opt: YNEPHOttS-agBy1BJ31R1g + beetmover-repackage-sk-macosx64-nightly/opt: O7wSRTChSCGknGZW3tpi_w + beetmover-repackage-sk-win32-nightly/opt: VsqAcp2XRKiM0C7dtIN1wA + beetmover-repackage-sk-win64-nightly/opt: WWHe3zPBQ3u4H6gzdauB_w + beetmover-repackage-sl-linux-nightly/opt: KqDt7iGXSyqdn0mT6xU7bg + beetmover-repackage-sl-linux64-nightly/opt: fCS_TYl9SfOPR7KpgDKMJw + beetmover-repackage-sl-macosx64-nightly/opt: PbNO0hmiTs2EvToUEJdzyA + beetmover-repackage-sl-win32-nightly/opt: RAOMzvmYQ_i0E5X2MQS-Ag + beetmover-repackage-sl-win64-nightly/opt: JV5LtWGrQ9KI5fLSNr7gJQ + beetmover-repackage-son-linux-nightly/opt: JiVT_KV9SIC18gQWDr4CbQ + beetmover-repackage-son-linux64-nightly/opt: eNANePuKQ9GIrA38O9zZjA + beetmover-repackage-son-macosx64-nightly/opt: Z9rk9DKGTtG42rWzneBXvA + beetmover-repackage-son-win32-nightly/opt: F4AmQPKsQgehWxYuhjrhsA + beetmover-repackage-son-win64-nightly/opt: fY-VdpbsSayXSw8wxHkO4A + beetmover-repackage-sq-linux-nightly/opt: PX_81qu5SZ-mFmGHxRMPgg + beetmover-repackage-sq-linux64-nightly/opt: FZi7ipQ-TLqQ1utsG5mNKg + beetmover-repackage-sq-macosx64-nightly/opt: BcAVDoD4TduHVbEBh9YhWg + beetmover-repackage-sq-win32-nightly/opt: PjFeLVezS92ws2YA5shHBw + beetmover-repackage-sq-win64-nightly/opt: Fe0V0HPVQ4izzaWEVweR9Q + beetmover-repackage-sr-linux-nightly/opt: fz9CiU7GTvyVpsejimbeUQ + beetmover-repackage-sr-linux64-nightly/opt: H05nVlkaTjC5vHdoB68M2w + beetmover-repackage-sr-macosx64-nightly/opt: UNidIAwNRZiNrp0SNQo0rA + beetmover-repackage-sr-win32-nightly/opt: WUnQGWCvT6KEVAsOwo5POQ + beetmover-repackage-sr-win64-nightly/opt: Df3UUu4BTI6UHpui7Gtb2A + beetmover-repackage-sv-SE-linux-nightly/opt: QngZEldsTPeQG8g8boia3g + beetmover-repackage-sv-SE-linux64-nightly/opt: QxWxmChURIeXMlJmOccU6w + beetmover-repackage-sv-SE-macosx64-nightly/opt: WLw-TkLkQnqmciPsgStthQ + beetmover-repackage-sv-SE-win32-nightly/opt: DDh9T8ntTRmWyETCtlTTQA + beetmover-repackage-sv-SE-win64-nightly/opt: UEfsXAOxQOKnT7tKE_xl6g + beetmover-repackage-ta-linux-nightly/opt: D6UE8DTZS8amLKtkj2m7_A + beetmover-repackage-ta-linux64-nightly/opt: XWiwh1FaSlKOm1QYrLrl7Q + beetmover-repackage-ta-macosx64-nightly/opt: TAh4ZYhzTKGLR7JYCA90PQ + beetmover-repackage-ta-win32-nightly/opt: b9Xx7o9fSd21MLJGQgjwwg + beetmover-repackage-ta-win64-nightly/opt: dfiHqcJFSnaZANv3vpg4EA + beetmover-repackage-te-linux-nightly/opt: NHwcQ26KSmirnnlqDH9kiw + beetmover-repackage-te-linux64-nightly/opt: WqtlenMJShqHtQW3swGjyg + beetmover-repackage-te-macosx64-nightly/opt: fUb8Iu1TRzSNoSin0OkWdQ + beetmover-repackage-te-win32-nightly/opt: Rlhj7gNcRUqgFixrksvC6Q + beetmover-repackage-te-win64-nightly/opt: YkZMT5SHQ1-nC7c1FHQyDg + beetmover-repackage-th-linux-nightly/opt: Tdqaq0eWTyOUENkal7qfdg + beetmover-repackage-th-linux64-nightly/opt: EQNZoYRGSI-VcygKNlxnTA + beetmover-repackage-th-macosx64-nightly/opt: BZFqbV8rQzGhTHtTfpWCIg + beetmover-repackage-th-win32-nightly/opt: ZKLsYmGuRmCxE-CUEOjZcQ + beetmover-repackage-th-win64-nightly/opt: PVNnBNfqReyQcmksZeWo2g + beetmover-repackage-tr-linux-nightly/opt: dnSUfpZ1R9qy5J-LsJbKFg + beetmover-repackage-tr-linux64-nightly/opt: bGl7OUUhT_aB2HxqXFoxqg + beetmover-repackage-tr-macosx64-nightly/opt: cxBleeNVSQ-tXusDoYwwsw + beetmover-repackage-tr-win32-nightly/opt: HDILTRFQTNC96YflOaMKIw + beetmover-repackage-tr-win64-nightly/opt: P-AjUy0oR2ipFRIgBbiB3A + beetmover-repackage-uk-linux-nightly/opt: XLKOnuQgT268M7O41MLa6Q + beetmover-repackage-uk-linux64-nightly/opt: Y-iTrDx8TqK2M5W4YXyoeg + beetmover-repackage-uk-macosx64-nightly/opt: EVMMuGG_R6eyaLawETsvkw + beetmover-repackage-uk-win32-nightly/opt: ea-FlI9qReq5ONL-yXSVkg + beetmover-repackage-uk-win64-nightly/opt: ZZMEgWKrSzq9qvjL_3ahfA + beetmover-repackage-ur-linux-nightly/opt: T3IQwb3wRzC9U6jI-Fj5Vg + beetmover-repackage-ur-linux64-nightly/opt: W8GWNO5HQYu1ReCy8gkxBQ + beetmover-repackage-ur-macosx64-nightly/opt: Ks9jDBFMTkSBE1RMvCOwzA + beetmover-repackage-ur-win32-nightly/opt: G8aCz8_RQS2Y64T2XtdaXA + beetmover-repackage-ur-win64-nightly/opt: W1B8gk3YQNW9cxK2px9t9A + beetmover-repackage-uz-linux-nightly/opt: YUJ__9UwRYSwKdrEpRDZ1A + beetmover-repackage-uz-linux64-nightly/opt: N9zg7Y2IQRS49mZDi5Eamw + beetmover-repackage-uz-macosx64-nightly/opt: HMNr8ur1S1emIM7cScrYjg + beetmover-repackage-uz-win32-nightly/opt: ACF1YV4rSN-l9Atjc-nNeA + beetmover-repackage-uz-win64-nightly/opt: Q08EpvoFRl2tQYmvF9OQGA + beetmover-repackage-vi-linux-nightly/opt: cX7xvX22TWm58zfXhmYivQ + beetmover-repackage-vi-linux64-nightly/opt: PpZg1ymzRxqrOme6Z1qlAQ + beetmover-repackage-vi-macosx64-nightly/opt: S1OqWMsnQO6DTt06zQHUTQ + beetmover-repackage-vi-win32-nightly/opt: F6pb2od6TwCTipWcJqj1ag + beetmover-repackage-vi-win64-nightly/opt: Mp7XvJD0TROqGDkD4Ab6ug + beetmover-repackage-win32-nightly/opt: fgJmEzGmRXKAkCdIn8nnMg + beetmover-repackage-win64-nightly/opt: F0WbwTyqTRiNlVGzgFwfQQ + beetmover-repackage-xh-linux-nightly/opt: epHgRVelQNK5bBGePnWWeQ + beetmover-repackage-xh-linux64-nightly/opt: Oi2h8B0GRH2wX8mwyxtg3Q + beetmover-repackage-xh-macosx64-nightly/opt: R-hh5SRJT3q_kiJNbvbBbQ + beetmover-repackage-xh-win32-nightly/opt: J3tN1CUQQYGUdQn9L9Bjsg + beetmover-repackage-xh-win64-nightly/opt: bP6vG5pVTKmfJdLVrfKfMQ + beetmover-repackage-zh-CN-linux-nightly/opt: QTkW1NfEQo2q0z5l3DSOOQ + beetmover-repackage-zh-CN-linux64-nightly/opt: IKFKel8jR9CuJoGuYw2W8Q + beetmover-repackage-zh-CN-macosx64-nightly/opt: WJfz9N5KSMiH4KjTsz29AA + beetmover-repackage-zh-CN-win32-nightly/opt: HKcwO6c6T6qedymgg71ECw + beetmover-repackage-zh-CN-win64-nightly/opt: dQYD8vxiSFSId2lPZNRCsQ + beetmover-repackage-zh-TW-linux-nightly/opt: XwAWrAFGQOKVsGHWRx7WHA + beetmover-repackage-zh-TW-linux64-nightly/opt: CQSQu06WTZ-cbJwQpIRSPQ + beetmover-repackage-zh-TW-macosx64-nightly/opt: UzH7TVTVQvOLxmJBkcVk1A + beetmover-repackage-zh-TW-win32-nightly/opt: XsFDo3ZKQ4Sg5O50DrrKVw + beetmover-repackage-zh-TW-win64-nightly/opt: QXd0FyDPQTSbmSww111liQ + beetmover-signed-langpacks-build-linux-nightly/opt: ToqKjwXvR9aRyjtap_-ADQ + beetmover-signed-langpacks-build-linux64-nightly/opt: NusBVJ5zQyuXLaUa2NvE1Q + beetmover-signed-langpacks-build-macosx64-nightly/opt: NwWDXJhlQDSvRDs35VY9Eg + beetmover-signed-langpacks-build-win32-nightly/opt: WPFILzZqR7GfmFyUkHx7jw + beetmover-signed-langpacks-build-win64-nightly/opt: PUc0gQPmROW2mFSuu5BX4A + beetmover-signed-langpacks-nightly-l10n-linux-nightly-1/opt: HgNXpPwzRs-Op9MdkDd_CQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-10/opt: L9tno3VuThO2-4_wsP2xEQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-11/opt: WxTF0LoyQZWnm6fTda3vvQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-12/opt: Nsy-ad-9QR65Ewpx1DZTkw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-13/opt: BT7EPC9sTfmHtv0m_T8g_w + beetmover-signed-langpacks-nightly-l10n-linux-nightly-14/opt: aRAkaNV0SPGovE_oIsQZ7Q + beetmover-signed-langpacks-nightly-l10n-linux-nightly-15/opt: DEUFxH4rRmKlZLmBtJq7Pg + beetmover-signed-langpacks-nightly-l10n-linux-nightly-16/opt: IsK0yFVnTCG8_V_ENsOsiA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-17/opt: U63ff7qjTdmVcjtd1JURRQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-18/opt: Ynp8LxFrRUarb-QwkJDDyg + beetmover-signed-langpacks-nightly-l10n-linux-nightly-19/opt: ThBZAcQJRBmY6EkCaxyhMQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-2/opt: NTLUB3wTRPq9hlFvcgYk3w + beetmover-signed-langpacks-nightly-l10n-linux-nightly-20/opt: QJT3mZuFQZiAaLW9WbYflw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-3/opt: Z04WT45_QO2x0kV7wnCNiw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-4/opt: I787Fc0yTB-ksr0WvntCGw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-5/opt: YADlgGJnTriFd7m08kygbw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-6/opt: JoMTRva9T2uXAB3Mfkh7oQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-7/opt: YfiT4rKPSUyRZf5zmcDLvA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-8/opt: eZvDWMGYQ3WI2D3Ef9oQWA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-9/opt: VSG0a7ySSamfjXjUcaPR5g + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-1/opt: azk36HraTXCUVYJ7oku2Yg + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-10/opt: CqI2on3tRUi-doKi5iEaug + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-11/opt: QF7Z3TXHQly7Ihg9jlaqpA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-12/opt: dhkf1shbSK2JF0MUIHUjEg + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-13/opt: fwNm1xDkRC66yOWLgyNoXw + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-14/opt: WkUWjCy1QBCt0OKdo1fPyQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-15/opt: IsyMp_JVT3esfP5yhk7pog + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-16/opt: Kz0WaP_2SvSOYg79Hd3k3A + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-17/opt: N46xAPtrQtGsRgQJLFD4YA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-18/opt: SRt3pXcXTO6ouhgroL7gZA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-19/opt: JPPxzh2GQ16fV1gDCwf-aQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-2/opt: MlcWxuzsSJODuiqWHwr70A + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-20/opt: JEeRKmspSf6O2sgX_LdOEA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-3/opt: Pt7DzxvASOGXr8jHhwkgrQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-4/opt: VI8-3J09TBO3aeIMe7nxOA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-5/opt: B3gytGZiTzmtRxonLMgNgA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-6/opt: Oqq_rW8cSwWuzRV7gE-rOw + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-7/opt: ToBaS7-uR_KRS8rNkRjm5g + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-8/opt: cTW7WGt3QIetIKFSO4ml7w + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-9/opt: dIPOCZRYSmioKQwo0olwyQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-1/opt: GSu3v6w3Q6iveDrHJU-j-g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-10/opt: W57uvEYJR_6M2kTqWNiOMQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-11/opt: PpXoqzWnRsaWpoXRzX0tXQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-12/opt: PeUzRTwwQuylPRMD3RuZ1g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-13/opt: JbAlC6wQR2K1PG6XMhWRdQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-14/opt: LK3GmKsXSUSGF6x3nIdgKw + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-15/opt: YeZPKM1ORKWUgt2wJ_N0GA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-16/opt: EXQeUHUoSs2RcIoXvPGo5Q + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-17/opt: GGnuZOA8S1abhtZ21ole6w + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-18/opt: SB7f5glwQIqMXaF9x9h9ew + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-19/opt: Zj3_K_fJQXexfJS-cM4MYA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-2/opt: BOOj0fujTSu_FKXQEbf1iw + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-20/opt: JpdZlli8TjKeEPUdj8xn8w + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-3/opt: C6XTrpsiT7W7sBMCpaFF3A + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-4/opt: Ix7RDCzyTzqyHFmOuYzuHg + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-5/opt: GUaxD_BGQ-2Zc_YqDEhnNQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-6/opt: Xm8SjqipRmmIQKv_DMPSoA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-7/opt: K9JnK5wOSKa_W85AOBijtA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-8/opt: XLI4UNESRMWHbPGWq38_NA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-9/opt: PIYfG1KxTW23_j42yIuN8g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: d4NGW3L8SFSCBncLKDyzmw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-1/opt: Wr7v4JPrSyaSXCJyHq1LOQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-10/opt: LGPu7NFnSui0-NfUb0_jlQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-11/opt: DYA23ClHRRmghnDNPzxySA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-12/opt: GAz96NF6R_qMK50jBkq6-A + beetmover-signed-langpacks-nightly-l10n-win32-nightly-13/opt: Hsl-rZWoTHiqNLDISXh6Cw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-14/opt: MSQ4SsDNRIaPn0jnbePNBA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-15/opt: JAP2mI6YQ9ua1BoLaCiZGQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-16/opt: ARw-7OsYQU6TIkKkBaTvzA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-17/opt: SVcVbiEcQhCJ0QWo_WqiCA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-18/opt: Ydu7XqYJQKON-IlTCNwLow + beetmover-signed-langpacks-nightly-l10n-win32-nightly-19/opt: Kzl6iGdoTGmk30bG22vS9g + beetmover-signed-langpacks-nightly-l10n-win32-nightly-2/opt: Yvb2mAFUSZqzcoQ9noXoGg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-20/opt: CgASdaSvRQqs7vXwS_LXyg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-3/opt: CNNN9qIGRw-fF7TvGDJTzA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-4/opt: Ss6VQfFvS-qv4m5kytFPxw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-5/opt: YoCdVAGWR56di23avu1Ndg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-6/opt: fhkSLu3bSzW8Ij1CIQw98g + beetmover-signed-langpacks-nightly-l10n-win32-nightly-7/opt: ItsKtytQS3WDKzGcIuwBeg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-8/opt: ehgneIt6RxyAhTy6-LZzwA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-9/opt: Y0thOUuWRTCtg6I5zIVMNg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-1/opt: HfWgTl5gSlyHCAAUE3tYQw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-10/opt: VgrZcxVnTCmzboAk67Z0kA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-11/opt: dJYtaTvtS2mDKXBV5IFY4w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-12/opt: LxPTERvkR0aSY_fBHMoy8Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-13/opt: eJwEu0oTSQupUADVlT8xJg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-14/opt: PF708LP0Q3KRdzOeI8g89A + beetmover-signed-langpacks-nightly-l10n-win64-nightly-15/opt: LIpBTIW3S3OLT_8WBLsZ7w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-16/opt: WntNamkYTumijV4iw8gNng + beetmover-signed-langpacks-nightly-l10n-win64-nightly-17/opt: GnB8SejySNyKC-2q154CSA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-18/opt: D5EXh-HYRZqis0WY5cBAlw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-19/opt: ADHRBTyBTfSWNh9ehW1lOg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-2/opt: NA8XaTL2Tcex1cnZftIfBA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-20/opt: THGt7LOzRiqj_uuxiG2R0A + beetmover-signed-langpacks-nightly-l10n-win64-nightly-3/opt: MM4r3QXlSMGc6sjsQu769Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-4/opt: Xl8xKPaxQEOfbctl_L24EQ + beetmover-signed-langpacks-nightly-l10n-win64-nightly-5/opt: XilE8MATT_uQmWzQRNn07Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-6/opt: FEMDxp0aQSe7xR08bFNh2w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-7/opt: IWpg_5u8TEynsl0YcuKXkw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-8/opt: XhqMvZAFQfOk6c-y3ZOc9w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-9/opt: aRD-JqixRnumrtxxx0NVMg + beetmover-source-firefox-source/opt: TY6KaixBSiiPL1NWm5eu_w + build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg + build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ + build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og + build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw + build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA + build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ + build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA + build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA + build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg + build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg + build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ + build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g + build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ + build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ + build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ + build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA + build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w + build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw + build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg + build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg + build-docker-image-lint: XGNAECEES72AEPxwbO4jKw + build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg + build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ + build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw + build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ + build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q + build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw + build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q + build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw + build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ + build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w + build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ + build-linux/debug: LhIiq80ZSRyJh5nWgkakaA + build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw + build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw + build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw + build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA + build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA + build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w + build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw + build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg + build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w + build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw + build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg + build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw + build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg + build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w + build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA + build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ + build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw + build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA + build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA + build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A + build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ + build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA + build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA + build-macosx64/debug: CibCdzr9QLODly5buEeBvw + build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg + build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA + build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw + build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw + build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg + build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng + build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ + build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg + build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA + build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA + build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw + build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA + build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w + build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA + build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA + build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ + build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q + build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA + build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig + build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw + build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ + build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ + build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA + build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw + build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ + build-win32/opt: YKC_SzyIQy2y83trQ49WQg + build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw + build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g + build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA + build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg + build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA + build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ + build-win64/debug: EDHK4shfRKyhAv5cIZihew + build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw + checksums-signing-ach-linux-nightly/opt: HKNStYLrSrKG7DAJykDmrg + checksums-signing-ach-linux64-nightly/opt: RtAQh6bWR3q3c1pFqrnWtg + checksums-signing-ach-macosx64-nightly/opt: NbFo7NSTTE-oDWhBR5QKtw + checksums-signing-ach-win32-nightly/opt: WF4LBNq8QOqjVcrOHkl3Dg + checksums-signing-ach-win64-nightly/opt: JoP9tg19QqWa1K_ElhLazQ + checksums-signing-af-linux-nightly/opt: eq72aFWlT0mp1TAoUgfhcQ + checksums-signing-af-linux64-nightly/opt: A3okjsdmRT6_OZhI5vg9Cg + checksums-signing-af-macosx64-nightly/opt: DUQBiRUDRQuIhPM_YxQ0aQ + checksums-signing-af-win32-nightly/opt: COPyyFCcSYWmCuuHFMksGw + checksums-signing-af-win64-nightly/opt: JKkvpoXwSyu6TvhIn1zUng + checksums-signing-an-linux-nightly/opt: KtIkudidTBarJzjhwMPwdw + checksums-signing-an-linux64-nightly/opt: IOgIAuPiQPWiF2ET2JFk3w + checksums-signing-an-macosx64-nightly/opt: EVVOR45rS2Sj2Aj-SQ0v5w + checksums-signing-an-win32-nightly/opt: eXv-TvgTR9KzIkLrd9sPeA + checksums-signing-an-win64-nightly/opt: ImXcLJIcRxWa6wM6eyFGxg + checksums-signing-ar-linux-nightly/opt: W5lR6DHySHyo5IdpBDyu7g + checksums-signing-ar-linux64-nightly/opt: TSuHgBl1Qz682yJL5gNHwg + checksums-signing-ar-macosx64-nightly/opt: cqnFA8BISJ-u8sQhR-EruQ + checksums-signing-ar-win32-nightly/opt: AvLxmxpSToOvWBfhuHxdlQ + checksums-signing-ar-win64-nightly/opt: WIlIxVHvSmCSTiLHouts4w + checksums-signing-as-linux-nightly/opt: QQtpBg_lTiSNu9xzZtZhcg + checksums-signing-as-linux64-nightly/opt: eEdTGktgSOSUoFSvE-M91A + checksums-signing-as-macosx64-nightly/opt: awn8_8MaQ9OuDhJNLDa9Xw + checksums-signing-as-win32-nightly/opt: YNC4gixaRBeQ5tW863M8oQ + checksums-signing-as-win64-nightly/opt: c1_jdf3LQSqQZX6vGQmnvw + checksums-signing-ast-linux-nightly/opt: VVPUzyYcQJiUTVLaZCMU1A + checksums-signing-ast-linux64-nightly/opt: UD8GTBQBTaWlZNCk4T-dYg + checksums-signing-ast-macosx64-nightly/opt: Vc4WzS7HT_6mUs-Inei_qQ + checksums-signing-ast-win32-nightly/opt: AKBxeqaUT1-SGTkztHG8FA + checksums-signing-ast-win64-nightly/opt: NRm2m2csRoKwdw-dDfPncQ + checksums-signing-az-linux-nightly/opt: Q91tq4ZNRWK-xpe7g5F59Q + checksums-signing-az-linux64-nightly/opt: XKh60ZcgQ_ySMUxe91Xywg + checksums-signing-az-macosx64-nightly/opt: CiwBakUUS2G6WCYN41DEAg + checksums-signing-az-win32-nightly/opt: Zvum4MzBT6K_ujzVOayV4w + checksums-signing-az-win64-nightly/opt: EXBs7P_XT5-A6m9O0ql_Lg + checksums-signing-be-linux-nightly/opt: ScPWb4eFQ5mV5KHTnDp1Ng + checksums-signing-be-linux64-nightly/opt: WrW72HpDQJSnAEqgQeNing + checksums-signing-be-macosx64-nightly/opt: Uusr2ioMT769xssJUMyo3w + checksums-signing-be-win32-nightly/opt: TgMkgTOkRcig2ZKxHBxJzQ + checksums-signing-be-win64-nightly/opt: CE33GDsYSLWS3BUiLC0LlQ + checksums-signing-bg-linux-nightly/opt: T-Z2UgvTTyShrKnXqVegkA + checksums-signing-bg-linux64-nightly/opt: efQAKe6WT8OGofjzw88AeQ + checksums-signing-bg-macosx64-nightly/opt: OAQlMt2DQFioEdOF5DShpA + checksums-signing-bg-win32-nightly/opt: F5Mc9-z1RF-kXtaW8Dm6Ug + checksums-signing-bg-win64-nightly/opt: PL3-TOwxTbaycwS_dW6f5Q + checksums-signing-bn-BD-linux-nightly/opt: X-VEPeikTI2ZKNiP8YdaUg + checksums-signing-bn-BD-linux64-nightly/opt: QKliapu0QXiTVDD4EMQTMQ + checksums-signing-bn-BD-macosx64-nightly/opt: Eiej4DSNSGi5OXIA0za-Hg + checksums-signing-bn-BD-win32-nightly/opt: N2rkQ8FpQ6-fXj4met76RA + checksums-signing-bn-BD-win64-nightly/opt: GIVwA6NhSfyAAwZ4WpRypg + checksums-signing-bn-IN-linux-nightly/opt: FcJ78cV-SguIPd7rae_UFg + checksums-signing-bn-IN-linux64-nightly/opt: Z7pBsPXARmOMuoHInwg-iQ + checksums-signing-bn-IN-macosx64-nightly/opt: QfOwm2UXRLyz9MiKSp399A + checksums-signing-bn-IN-win32-nightly/opt: GHd6r_DHTK6kNzLzxsY79w + checksums-signing-bn-IN-win64-nightly/opt: e3ajCwA1S2mpMYkDf5ivPA + checksums-signing-br-linux-nightly/opt: RLrWz8yuTCGQQYRNfTN-Kw + checksums-signing-br-linux64-nightly/opt: DJPSuB_ISSaxD-LBobTK7g + checksums-signing-br-macosx64-nightly/opt: RJSTVKoORTSOWi0bm_1Azg + checksums-signing-br-win32-nightly/opt: R0kT6iOBQ4qmYT09N2vHJA + checksums-signing-br-win64-nightly/opt: Vx4R5D7NQZeFF9Hqzko4wQ + checksums-signing-bs-linux-nightly/opt: fXY3cYBRQi-_CuQvibxTSQ + checksums-signing-bs-linux64-nightly/opt: S6rwDE2cTBqRgkogIaOT2w + checksums-signing-bs-macosx64-nightly/opt: MiZpEjWySzCRXABn_WcCxw + checksums-signing-bs-win32-nightly/opt: AMb-6EixRku0jB0ya_fO5w + checksums-signing-bs-win64-nightly/opt: RRZEJDSaTbmW5HqZqDNing + checksums-signing-ca-linux-nightly/opt: ZjMNY6U7TvKMEUsI_OAQcw + checksums-signing-ca-linux64-nightly/opt: U5t3NvidQbCpjS_MFrt70Q + checksums-signing-ca-macosx64-nightly/opt: GHlm35aKSRqa9PAzmmXjeg + checksums-signing-ca-win32-nightly/opt: e_NYwiRkSMKOmP1uCw_FVw + checksums-signing-ca-win64-nightly/opt: XaxgjpYqSv6kJYXzrmooTw + checksums-signing-cak-linux-nightly/opt: cRzDzoQGRkG5kpHfi7Y9LQ + checksums-signing-cak-linux64-nightly/opt: d6jIcAebTRiQLxDa-35UMQ + checksums-signing-cak-macosx64-nightly/opt: dHCqQflVQP21hAsDFIt89Q + checksums-signing-cak-win32-nightly/opt: Eu7EUDO-R4614fXPyxq_GA + checksums-signing-cak-win64-nightly/opt: XJW94ufyRXeZJC4x-ciX3w + checksums-signing-cs-linux-nightly/opt: FkROwABnQHuS2Bwop8JwhQ + checksums-signing-cs-linux64-nightly/opt: bgO4fCrcTzO2AYrdFUw9FQ + checksums-signing-cs-macosx64-nightly/opt: P82rfvHWTN6PGpThNF8GKw + checksums-signing-cs-win32-nightly/opt: X_Tg-VwGReejsoal-0kS2w + checksums-signing-cs-win64-nightly/opt: Q7HqtOljQcKCLPpCO8iTJA + checksums-signing-cy-linux-nightly/opt: VSQE8uV3TGaq0i4uF_JEsw + checksums-signing-cy-linux64-nightly/opt: dMt4FG74TrS7hjf9NfK7AA + checksums-signing-cy-macosx64-nightly/opt: EeJw6HiVSwy9Cr81-kymwg + checksums-signing-cy-win32-nightly/opt: EfqXlJ3HRC6Ybsh61QwqpQ + checksums-signing-cy-win64-nightly/opt: Ljm2Bw63QXeae1KlZedHgw + checksums-signing-da-linux-nightly/opt: RXRFrvGSSZmiVK0Fg05mWg + checksums-signing-da-linux64-nightly/opt: QF0ihb1bTba4Qpfv5r_EiA + checksums-signing-da-macosx64-nightly/opt: I1sLL8r3Q_ak4R9geDVWuA + checksums-signing-da-win32-nightly/opt: cZ4H4bOWSH-JTpFe_koQQA + checksums-signing-da-win64-nightly/opt: W_7x77AtRG-uA9a_WLBx6Q + checksums-signing-de-linux-nightly/opt: foK2yPyNQNSt79nY-Hcbrw + checksums-signing-de-linux64-nightly/opt: RV1ZSnh1RG2754VSfdqgkQ + checksums-signing-de-macosx64-nightly/opt: Jg-2OYNBSX6LXk6rA1Xevw + checksums-signing-de-win32-nightly/opt: QG-zwVqDQtyDnUWV-AbIiw + checksums-signing-de-win64-nightly/opt: HnRv5rjbQua_NAimpjswZw + checksums-signing-dsb-linux-nightly/opt: LEex2aRUQKGQjyD6xCR4-w + checksums-signing-dsb-linux64-nightly/opt: BOJu_WJxTeKmnmujvJQ1dg + checksums-signing-dsb-macosx64-nightly/opt: CfzEO-T8TRGMP6QCdQu3EA + checksums-signing-dsb-win32-nightly/opt: TRrnZh4LRFOSpLHSfahgEQ + checksums-signing-dsb-win64-nightly/opt: WEKbazzQRSeuwpIeCJQGrg + checksums-signing-el-linux-nightly/opt: M27OL5YbSB-QxYeoh24y0Q + checksums-signing-el-linux64-nightly/opt: LDj3tXchQGm7pTgw_V6XrA + checksums-signing-el-macosx64-nightly/opt: bBDp0s7zQweE6DIfRC3AsA + checksums-signing-el-win32-nightly/opt: ZWNZZoM4QTiaXlwGnXOOKA + checksums-signing-el-win64-nightly/opt: GaDb9efbQDG1htYnBu-b8w + checksums-signing-en-CA-linux-nightly/opt: JSCGpsFZRt6ytsJqVNW43A + checksums-signing-en-CA-linux64-nightly/opt: an3Y4AjVSOGeDdODFZ-POQ + checksums-signing-en-CA-macosx64-nightly/opt: Vf1glTFcQfyg3H2bYqfaFg + checksums-signing-en-CA-win32-nightly/opt: SpBNmVVYTjS1AcnCiHL98w + checksums-signing-en-CA-win64-nightly/opt: IgNNSrWdRsCIb5nbAZI_DA + checksums-signing-en-GB-linux-nightly/opt: J0oohZg5QaW2pr7HRwdR1w + checksums-signing-en-GB-linux64-nightly/opt: PAH5G6bET7S8fAlGX4AWQg + checksums-signing-en-GB-macosx64-nightly/opt: K2TdPlJQTAGQfKzuYKZYpA + checksums-signing-en-GB-win32-nightly/opt: H3hsyqm-RqKKPFUWzTQt-A + checksums-signing-en-GB-win64-nightly/opt: EjdFYTLiTYqKgdx8vrIXkQ + checksums-signing-en-ZA-linux-nightly/opt: E6jdORXhQFSvUvDjgdVYbQ + checksums-signing-en-ZA-linux64-nightly/opt: Hh-XFLxyTWa36jLpFUFh7w + checksums-signing-en-ZA-macosx64-nightly/opt: DbKdGoE3Tb2K0JZ87xclbQ + checksums-signing-en-ZA-win32-nightly/opt: VRSMTafUQUCxVRgZawuKpQ + checksums-signing-en-ZA-win64-nightly/opt: d_fYfR_eT--5gLeQr9zCyw + checksums-signing-eo-linux-nightly/opt: c10LvwFQRR-lTZ7aSJ0LGg + checksums-signing-eo-linux64-nightly/opt: dFBsSWgUQRG1t7aOqUkuCQ + checksums-signing-eo-macosx64-nightly/opt: ASMxJqQoQyG8z8J8Is4p-w + checksums-signing-eo-win32-nightly/opt: LZSZVsJ1QI--xwufjKTNvw + checksums-signing-eo-win64-nightly/opt: GlcfhkFSQ0WorxIqng5CjA + checksums-signing-es-AR-linux-nightly/opt: RFHuPGujTfa0Yfermu18rw + checksums-signing-es-AR-linux64-nightly/opt: YAf9l8_NRNCpIk0EUQYG2Q + checksums-signing-es-AR-macosx64-nightly/opt: OyCUJWeNTC-5wyW-TId1TA + checksums-signing-es-AR-win32-nightly/opt: WfR62EDUQxSx-SM_ebMD4w + checksums-signing-es-AR-win64-nightly/opt: XKvUwQFbSsywwD0rkIzrJw + checksums-signing-es-CL-linux-nightly/opt: Vt7srtVKROOchJ6IcRGXtA + checksums-signing-es-CL-linux64-nightly/opt: DQxrnKTfThWI2U2KqZaabA + checksums-signing-es-CL-macosx64-nightly/opt: Qa4vJ3VcQuiDVWNCRMeI_Q + checksums-signing-es-CL-win32-nightly/opt: Fqdlj67_RzSWPJTqVX0rZA + checksums-signing-es-CL-win64-nightly/opt: Tn0ASUCNTQyA3_18Ds-AOg + checksums-signing-es-ES-linux-nightly/opt: Ad0dDMr3RQGCMFZz_uREsA + checksums-signing-es-ES-linux64-nightly/opt: S-cql5JQQx6J-aC_DuWEqw + checksums-signing-es-ES-macosx64-nightly/opt: KLBL_oNZRwyzpp0KsfbiWA + checksums-signing-es-ES-win32-nightly/opt: Hyowsj-PTkyeZCntSJDvyw + checksums-signing-es-ES-win64-nightly/opt: c7h7eKugR6u9N_qp4ohyiA + checksums-signing-es-MX-linux-nightly/opt: Qk2mgwUBSzGBO_D2mWKjSw + checksums-signing-es-MX-linux64-nightly/opt: Mqs1AkQiRvW8lUVL9x9RyA + checksums-signing-es-MX-macosx64-nightly/opt: Po1rg54ASNmypSBKw6jBhA + checksums-signing-es-MX-win32-nightly/opt: ZC3wQumLRjKOwBYgil-Seg + checksums-signing-es-MX-win64-nightly/opt: DegMguzVQJKqNSehEom-ZQ + checksums-signing-et-linux-nightly/opt: IPpncWOFRCOceH9ggMPnhg + checksums-signing-et-linux64-nightly/opt: QhOjcRwDSny3r39dZz8JSw + checksums-signing-et-macosx64-nightly/opt: L3kedNJpTiK02PGGAOz7Ng + checksums-signing-et-win32-nightly/opt: CyTQCY_lQWOXTFwpVeD7sg + checksums-signing-et-win64-nightly/opt: eWJNZfZiSCGwQHMsZg0hkg + checksums-signing-eu-linux-nightly/opt: NfhiUBRaT1WKakl5QUTByA + checksums-signing-eu-linux64-nightly/opt: PtwtE1z5SuO1VbPn_fB3hQ + checksums-signing-eu-macosx64-nightly/opt: Yal6avx4S8mud1X6OFHNSg + checksums-signing-eu-win32-nightly/opt: JuPjlt2yQvCoKL4JKaEnkg + checksums-signing-eu-win64-nightly/opt: WfOIOTh8TfGvEVhsaRrgPw + checksums-signing-fa-linux-nightly/opt: Rsl_R9o_RiWoiafYOHH1UA + checksums-signing-fa-linux64-nightly/opt: fvZEpS98RzyqqHbj_tAu1A + checksums-signing-fa-macosx64-nightly/opt: NbQDYC91SgS1iNfjLyV5WA + checksums-signing-fa-win32-nightly/opt: RhkSL3clQYGffrSqjwff9g + checksums-signing-fa-win64-nightly/opt: eOuPZO3lSDyOpT7mQDAe1A + checksums-signing-ff-linux-nightly/opt: RHBBQxrYS6ya64I5HMU-Jw + checksums-signing-ff-linux64-nightly/opt: LrWWqjBNSxWK7r6ObOyxZQ + checksums-signing-ff-macosx64-nightly/opt: JrDGqm_8RpOATDVkk8P1eQ + checksums-signing-ff-win32-nightly/opt: JW7BqgBiQguzu1WFDms1tg + checksums-signing-ff-win64-nightly/opt: GMiyWWQmSFaEVpStinWtnw + checksums-signing-fi-linux-nightly/opt: baabxPAkRn6uMQyS8xDwKg + checksums-signing-fi-linux64-nightly/opt: akp5PmrpQdukn0cmIUndqA + checksums-signing-fi-macosx64-nightly/opt: cjFwbQRaTBy1p-29H-qqkg + checksums-signing-fi-win32-nightly/opt: ahyEujfmQN2TSOsCIiv_Pw + checksums-signing-fi-win64-nightly/opt: btO0gMexRJG6LJCwCU9JuA + checksums-signing-fr-linux-nightly/opt: B3oD2VqqSCeMX5Y5wiw11g + checksums-signing-fr-linux64-nightly/opt: aaNspnKdQ0iIKVSrPsqIZA + checksums-signing-fr-macosx64-nightly/opt: O8GTvRpuThyw-dpUas6wVA + checksums-signing-fr-win32-nightly/opt: IvrBgZITS16Cu4lC0fZCSw + checksums-signing-fr-win64-nightly/opt: eErUM2rVQQKf2qRNKCoe8g + checksums-signing-fy-NL-linux-nightly/opt: IETrRjJmR9iF2QFzYZSrAA + checksums-signing-fy-NL-linux64-nightly/opt: Qi6GBhnkSkKdKb1n-UA-tg + checksums-signing-fy-NL-macosx64-nightly/opt: czrCA3RAQASGsvZ8tsvCNg + checksums-signing-fy-NL-win32-nightly/opt: Wg6edmNIRSaqtRLpHNm5Rw + checksums-signing-fy-NL-win64-nightly/opt: Qbc9Cmm6TLm4rSC6zStTHw + checksums-signing-ga-IE-linux-nightly/opt: YoxjkaWET9mxdpEbzOv3Ug + checksums-signing-ga-IE-linux64-nightly/opt: V3XBUwMtTbKHVxnABUER5w + checksums-signing-ga-IE-macosx64-nightly/opt: N5n9c8WBRKis42q8E2kdpg + checksums-signing-ga-IE-win32-nightly/opt: Uu9RaFBaTD61RbBTKbWsqg + checksums-signing-ga-IE-win64-nightly/opt: Uxz7xPSLS_uh24GsbyeOtA + checksums-signing-gd-linux-nightly/opt: W_IgAa5DRyO0K3y6_HpNUQ + checksums-signing-gd-linux64-nightly/opt: TiI4gPpKQomziDrtdN_7zw + checksums-signing-gd-macosx64-nightly/opt: Lkv5O2wIQ9uFaKxpZBuTIQ + checksums-signing-gd-win32-nightly/opt: Hzm5DWRnRWKSZsi9cXnM8A + checksums-signing-gd-win64-nightly/opt: dlslTCzRTuSC_Xj01mPC4A + checksums-signing-gl-linux-nightly/opt: TNh4IVcuR1a_qB_gvCdLGg + checksums-signing-gl-linux64-nightly/opt: TGXwDYeIRVOQ95GvhrQeqQ + checksums-signing-gl-macosx64-nightly/opt: IvA5oC4BRFeRGOQhrXn5Hw + checksums-signing-gl-win32-nightly/opt: CiGDypZhRECqF2fJEaz4vQ + checksums-signing-gl-win64-nightly/opt: A3I83guHQ4yOLPrfx2LUrQ + checksums-signing-gn-linux-nightly/opt: ZzjMrNPNQvGVykifdgW9QA + checksums-signing-gn-linux64-nightly/opt: RW0xXsYEQF6Ml_rDicCj1A + checksums-signing-gn-macosx64-nightly/opt: S-9Mqeb5TuOjrG1rBZtKkw + checksums-signing-gn-win32-nightly/opt: PXRGMjSyRGqstkCb5qKyCw + checksums-signing-gn-win64-nightly/opt: L3LBFD-JRpa0KfKPK_RHFg + checksums-signing-gu-IN-linux-nightly/opt: Ic35N_2dRsKE-gjyFoPcSw + checksums-signing-gu-IN-linux64-nightly/opt: McJQudM6S8uCFaN-pOROqg + checksums-signing-gu-IN-macosx64-nightly/opt: QMzFnnGKTIOadvVqcPczzQ + checksums-signing-gu-IN-win32-nightly/opt: d2dM_OjgSKGuks5-u4KUQw + checksums-signing-gu-IN-win64-nightly/opt: TApNioviSUCNTLG1-KwL9Q + checksums-signing-he-linux-nightly/opt: QSZ73IolTnqRLP9GTMXKmg + checksums-signing-he-linux64-nightly/opt: IxNSY1GRShSTSjlrHpViYw + checksums-signing-he-macosx64-nightly/opt: BNKUpiMgS6Sr1UZi9fU5Vw + checksums-signing-he-win32-nightly/opt: XfvtJWDfS4OXBxjH_UX2Fg + checksums-signing-he-win64-nightly/opt: NSEvEVFoRRS4IIQJly4B4w + checksums-signing-hi-IN-linux-nightly/opt: ZHup7BhuSf2l1cPzoXdXQg + checksums-signing-hi-IN-linux64-nightly/opt: DvJJW3i-TcmtKmaIJ0cGRA + checksums-signing-hi-IN-macosx64-nightly/opt: VYaVOE93Sji6D5W6gHbCBw + checksums-signing-hi-IN-win32-nightly/opt: eavJwkqBSpK16pG0soN_5w + checksums-signing-hi-IN-win64-nightly/opt: Jf_KabZeRcGPZQW2f5NuRQ + checksums-signing-hr-linux-nightly/opt: OpJ7xw8XTTK8W4TA4NeIKQ + checksums-signing-hr-linux64-nightly/opt: Qx_pkeKcSK2cw_Taxm5ELQ + checksums-signing-hr-macosx64-nightly/opt: OCWaK7_ASESnR7CmhKYR3A + checksums-signing-hr-win32-nightly/opt: Tw2qP8NyTFKpsap7rixXqQ + checksums-signing-hr-win64-nightly/opt: eeq4pqxpR5KYUclCVQopsA + checksums-signing-hsb-linux-nightly/opt: QKP8f8pbTNquZDtt6k5Cqw + checksums-signing-hsb-linux64-nightly/opt: b4U03dj9TqGU2iHKP7Nfew + checksums-signing-hsb-macosx64-nightly/opt: UtqoKpTuT7imBFbo1RfnDQ + checksums-signing-hsb-win32-nightly/opt: PRUGLxbiQ0uvWmdXbXHNKg + checksums-signing-hsb-win64-nightly/opt: EbnbBdq1RGGgyhyW68Ab2g + checksums-signing-hu-linux-nightly/opt: P_Go6lRfRaWpa3mS04mjyg + checksums-signing-hu-linux64-nightly/opt: E9GD0_d-SqyynOV-W1WadQ + checksums-signing-hu-macosx64-nightly/opt: Z1aPTCx4S7SCqCOBedMTMQ + checksums-signing-hu-win32-nightly/opt: WwHXZSuOTKS_U6vbmnZYyw + checksums-signing-hu-win64-nightly/opt: NkU7iqd0Rkahao614L1_Hw + checksums-signing-hy-AM-linux-nightly/opt: I_0JVZerRvuq8tVQFfFRaw + checksums-signing-hy-AM-linux64-nightly/opt: S9zM0MDwRaCNzg3VLpBjCQ + checksums-signing-hy-AM-macosx64-nightly/opt: Twlo57PkTvCId4ri1CNR8g + checksums-signing-hy-AM-win32-nightly/opt: Yxcyed4qT5q355oe9alU4w + checksums-signing-hy-AM-win64-nightly/opt: Z1oghly0QOWtT5kN4eazMw + checksums-signing-ia-linux-nightly/opt: Vvtv3x7FQha6QEz0sgLUoQ + checksums-signing-ia-linux64-nightly/opt: F_lddlF9T-yqKg6j07BWGA + checksums-signing-ia-macosx64-nightly/opt: D079DMR6TSCH2brgto6iKQ + checksums-signing-ia-win32-nightly/opt: XwtUlGarSViwJJcpyivHQQ + checksums-signing-ia-win64-nightly/opt: D34FQgscSbSGm_Prm--N-A + checksums-signing-id-linux-nightly/opt: LO4LvHjoSd-1lVB1rC-_DA + checksums-signing-id-linux64-nightly/opt: L_gnnigdQwmMcDq9T62kRA + checksums-signing-id-macosx64-nightly/opt: FfQ7asCeSzukB61oIICIaw + checksums-signing-id-win32-nightly/opt: b-OKvM_ZRVuwKLHN2cQYGQ + checksums-signing-id-win64-nightly/opt: A7kAKxnCRmGxAlOP3GcxhA + checksums-signing-is-linux-nightly/opt: PPnocV_ASE-qsfbsSL9nPw + checksums-signing-is-linux64-nightly/opt: DT7kEEW8TiqpXb8J6R-Jzg + checksums-signing-is-macosx64-nightly/opt: YYd1sPP7Q-Wx0aNxMk_Qrg + checksums-signing-is-win32-nightly/opt: dtRSWw7UQ_mlvepotDPyYA + checksums-signing-is-win64-nightly/opt: djbxuuohTNe7HQPLjdvC5Q + checksums-signing-it-linux-nightly/opt: UXX8LcA0SzqJxr5Lw_9etA + checksums-signing-it-linux64-nightly/opt: TXsTnqYoQVyLumHWcKms5w + checksums-signing-it-macosx64-nightly/opt: YKJKS-OXQma5tRx7MqP1Tg + checksums-signing-it-win32-nightly/opt: ctZYCe5ZT-2EJWnthWlHPw + checksums-signing-it-win64-nightly/opt: Erak48gXQwy181KqWpB9Vg + checksums-signing-ja-JP-mac-macosx64-nightly/opt: LEImBHArStCIXrqicNptsA + checksums-signing-ja-linux-nightly/opt: OFfemLg4QhGPUX4t_BW6LA + checksums-signing-ja-linux64-nightly/opt: PTGvOEUFTRqDWjudxZctIA + checksums-signing-ja-win32-nightly/opt: ectFzahOT_Kn58-vGBp1_g + checksums-signing-ja-win64-nightly/opt: Xd2MnHVyTaqTIvCMXO6koA + checksums-signing-ka-linux-nightly/opt: B82Nkxy4T1yW8hZzP89z7A + checksums-signing-ka-linux64-nightly/opt: IA4-AYnkTb6p3MG-NHKICA + checksums-signing-ka-macosx64-nightly/opt: bqDCQwh1Qsijs39xN9g2iA + checksums-signing-ka-win32-nightly/opt: Be59chQfQ_WvefGu277xIQ + checksums-signing-ka-win64-nightly/opt: Lqk00aY-RaWz-DyB3qK34A + checksums-signing-kab-linux-nightly/opt: bQT9b9p-TLq-PWT1rsgFxw + checksums-signing-kab-linux64-nightly/opt: FT88Fsq6S_ehnBj80TWP4Q + checksums-signing-kab-macosx64-nightly/opt: MSfyynvvT4OEuk6D5eJpkg + checksums-signing-kab-win32-nightly/opt: b1-VpkyCTZyF1uC_-rWF_A + checksums-signing-kab-win64-nightly/opt: Fe3wC8HPQF26_s9_ZqGm_A + checksums-signing-kk-linux-nightly/opt: JUZYDCfaSxeT-otpPBgzjA + checksums-signing-kk-linux64-nightly/opt: fl0VxBoASYOgG8mbJE4xvQ + checksums-signing-kk-macosx64-nightly/opt: ChukFzmxQa2bK8Ou0oUoUA + checksums-signing-kk-win32-nightly/opt: DLek-u6iSkOOAgiclmEMNg + checksums-signing-kk-win64-nightly/opt: btPgn-YzQR-lnZu5B-gzbQ + checksums-signing-km-linux-nightly/opt: DohZqgCaRLqNk1CVDryryw + checksums-signing-km-linux64-nightly/opt: Yoh5sjQVRCe6K9vl8LCLQQ + checksums-signing-km-macosx64-nightly/opt: Lr9R_nInQTmB8QGMUDDgZg + checksums-signing-km-win32-nightly/opt: HmU4nDB-R8qkiWP-d5C7ng + checksums-signing-km-win64-nightly/opt: EgccQ5E8QFqRefDZ8lKxaA + checksums-signing-kn-linux-nightly/opt: EBH3OHf-Q_imHokgbwcyiA + checksums-signing-kn-linux64-nightly/opt: QNiirMRcTV6wRYkZG-ZBFg + checksums-signing-kn-macosx64-nightly/opt: NvtKdjFTT_W7bMI4sMWNkw + checksums-signing-kn-win32-nightly/opt: AEIsbCUETYmk6kjnyKCI6w + checksums-signing-kn-win64-nightly/opt: Z-tgRViISF23RP42zVJXcQ + checksums-signing-ko-linux-nightly/opt: TFaul3h4Roah0CtTPm6UEg + checksums-signing-ko-linux64-nightly/opt: brqqptATQl6k5_OLOXPW6Q + checksums-signing-ko-macosx64-nightly/opt: XMcwWUxMSc2t-RFzZVZkTA + checksums-signing-ko-win32-nightly/opt: a0k8WsusSt6VqYMrHT4coQ + checksums-signing-ko-win64-nightly/opt: IcGpD0u_RxiX8JbuRwx0wA + checksums-signing-lij-linux-nightly/opt: d6bFppblQlq1RHA_v-C7fw + checksums-signing-lij-linux64-nightly/opt: AepAh7e7RJ2qg6usDnwrWA + checksums-signing-lij-macosx64-nightly/opt: PIk2u6DxQyCwfH2wf1oBmw + checksums-signing-lij-win32-nightly/opt: OHAW45IjQqaabT78R--xDA + checksums-signing-lij-win64-nightly/opt: KHmdowjhSNesLdOZx0wU5g + checksums-signing-linux-nightly/opt: ErIbYHZ8QoWVS7hQPmj5ug + checksums-signing-linux64-nightly/opt: fcO7yaZSQzC8Y6NqyvisiA + checksums-signing-lt-linux-nightly/opt: ECEQWq5DS3aSLJvrwShS2A + checksums-signing-lt-linux64-nightly/opt: b6-A3Hr5RkSMLRchc-tpbg + checksums-signing-lt-macosx64-nightly/opt: PInLkRoWS4iMsJEF1oQQeg + checksums-signing-lt-win32-nightly/opt: d0OrwjsARiyT22gUu8JQYA + checksums-signing-lt-win64-nightly/opt: OPnefgP4S6yXRVK15P-C2A + checksums-signing-lv-linux-nightly/opt: R2Sf78uJSx68HolrSCqZTQ + checksums-signing-lv-linux64-nightly/opt: e6j9bz9ARISpWixxWOCCVA + checksums-signing-lv-macosx64-nightly/opt: OLEWYbJYROSBnbHdG0bzdg + checksums-signing-lv-win32-nightly/opt: Up7RToh9QnOIgto9Y2sZZA + checksums-signing-lv-win64-nightly/opt: AIunuKu_SMqd4tkR-7wCPw + checksums-signing-macosx64-nightly/opt: Sm8VOZ2JSNCp2o1vhwFFQA + checksums-signing-mai-linux-nightly/opt: EVAVAp-SQ4S2emL8uwQ4mA + checksums-signing-mai-linux64-nightly/opt: bqxel9RjTQq3p86OpZFYcA + checksums-signing-mai-macosx64-nightly/opt: PilDbahdSUC5MUsnIBr0nA + checksums-signing-mai-win32-nightly/opt: SiLErbB_RQ2DxZ06PrsTqA + checksums-signing-mai-win64-nightly/opt: MwFuGFb4RGmVllVVKmxSVw + checksums-signing-mk-linux-nightly/opt: eNbXgoc0R9CEhdxJ6FeWlQ + checksums-signing-mk-linux64-nightly/opt: YfHrLIQQTLCPvwLcBNdrIA + checksums-signing-mk-macosx64-nightly/opt: VNmYGwL8QU-tAL8j1o3t3g + checksums-signing-mk-win32-nightly/opt: baa3s4v0SnqjYckdM-ctDg + checksums-signing-mk-win64-nightly/opt: KXC_bm1cTFqMzS2mvWEq2Q + checksums-signing-ml-linux-nightly/opt: bnD9orTPT-eCJvydxexQqQ + checksums-signing-ml-linux64-nightly/opt: KhzBf8rVQm2CsRF6deUtNA + checksums-signing-ml-macosx64-nightly/opt: PVhErE9aTH-kslU6lOLtQw + checksums-signing-ml-win32-nightly/opt: XetSCzEoQ2yfJa5dgeI1Ew + checksums-signing-ml-win64-nightly/opt: T0QFX40JTCuZA4TrNpgwaw + checksums-signing-mr-linux-nightly/opt: FBamX3M4Rn-Gx-88fTAPoA + checksums-signing-mr-linux64-nightly/opt: FeQZarnzRvqCQI-sHkoU0g + checksums-signing-mr-macosx64-nightly/opt: Wu4RGQ0wSHWHh1Of60Y4eg + checksums-signing-mr-win32-nightly/opt: egalbvcDSsqLZH8lDKFXIA + checksums-signing-mr-win64-nightly/opt: CjIPsAGHS86TPsaz2RrZnA + checksums-signing-ms-linux-nightly/opt: ZPHS2bI6TS2rcuMcsu1qDQ + checksums-signing-ms-linux64-nightly/opt: XxOdkxrxTMyfrBfTD-R0aA + checksums-signing-ms-macosx64-nightly/opt: K5nRdk92TlSqmMXO3PxRag + checksums-signing-ms-win32-nightly/opt: X_S3WVdHRii3hkmiSycIJw + checksums-signing-ms-win64-nightly/opt: Vy6EegfXS1SP0X_U9elSwA + checksums-signing-my-linux-nightly/opt: fZWKqHUXTt6h03b6xrjokw + checksums-signing-my-linux64-nightly/opt: XMLLsp9aTcmwLoz8aLGD5Q + checksums-signing-my-macosx64-nightly/opt: GkhnYuK0REyaNDgNYiA99g + checksums-signing-my-win32-nightly/opt: dApz9xjlRY6SVajfU1i7_g + checksums-signing-my-win64-nightly/opt: JbeUI4e1Szayj00R5QZndQ + checksums-signing-nb-NO-linux-nightly/opt: QpGs_mQUSESXBt0g3DTF3w + checksums-signing-nb-NO-linux64-nightly/opt: FXvq940oTSekn-OcYDfcyg + checksums-signing-nb-NO-macosx64-nightly/opt: EnkxwtnaSjiPUnbhMtjtzw + checksums-signing-nb-NO-win32-nightly/opt: CCWFmVfaQ4Ws7kmLf1OOsQ + checksums-signing-nb-NO-win64-nightly/opt: Ex2NcUA_T7OyuYQQcTm8KQ + checksums-signing-ne-NP-linux-nightly/opt: PYFihC3kQACQZAfHrExIHw + checksums-signing-ne-NP-linux64-nightly/opt: RgGUqLoKQR6Gz9GN3GYh-Q + checksums-signing-ne-NP-macosx64-nightly/opt: WLBdLMR2SQ-qh2wqohdDBg + checksums-signing-ne-NP-win32-nightly/opt: GDhq81HuR7qFSVWo0qTeAQ + checksums-signing-ne-NP-win64-nightly/opt: Xd85hF8aS2O4N9GjUzbHYQ + checksums-signing-nl-linux-nightly/opt: Lddh06IpT_KpNYbe0ze1jA + checksums-signing-nl-linux64-nightly/opt: ASi0blIqSY6oDVv7A7bmSw + checksums-signing-nl-macosx64-nightly/opt: dgwb2O8ISkeHHhoWvNnJvQ + checksums-signing-nl-win32-nightly/opt: MAcZIW66R0yBoe70GMe5rA + checksums-signing-nl-win64-nightly/opt: YAiFqMiTSuWlYSyBJ6pTZw + checksums-signing-nn-NO-linux-nightly/opt: Y80UdLkjQq-6j3pv9a7bJg + checksums-signing-nn-NO-linux64-nightly/opt: MetJV7p4S0e41mi5EsEPag + checksums-signing-nn-NO-macosx64-nightly/opt: Ianc1Pe-Q_OixYytdM7Yqw + checksums-signing-nn-NO-win32-nightly/opt: A7IR1cUuQn2V2s-n9eyYag + checksums-signing-nn-NO-win64-nightly/opt: QudO4R4pRLGwQWyEzxpVTg + checksums-signing-oc-linux-nightly/opt: byjisNBfT3Czcf9YjttsOA + checksums-signing-oc-linux64-nightly/opt: f-jOWr43QE-BZz5yQAHuLQ + checksums-signing-oc-macosx64-nightly/opt: Myory5CjQSCX49UHaqVs8Q + checksums-signing-oc-win32-nightly/opt: dVLb16lFRRmswWungfnLJQ + checksums-signing-oc-win64-nightly/opt: bTXzGIA7SGeg4M6uhhH2pw + checksums-signing-or-linux-nightly/opt: NSy-QYvsQ5u6OXPbXzJF7w + checksums-signing-or-linux64-nightly/opt: OEH4ithFS1ymYTzg_DGyKQ + checksums-signing-or-macosx64-nightly/opt: O_Bcb_mZRxSMsN66HM79Cg + checksums-signing-or-win32-nightly/opt: B8KiFOCHR5y6RUZC-YxPBg + checksums-signing-or-win64-nightly/opt: AjoUoKtMRM-P0vaT9ouDiA + checksums-signing-pa-IN-linux-nightly/opt: Natf6ZrUQYyKCz1Y7-CZoQ + checksums-signing-pa-IN-linux64-nightly/opt: V3ssux5mQi-UBJGeMOusYQ + checksums-signing-pa-IN-macosx64-nightly/opt: ZHoKhyhqTLedbVX9i-sinw + checksums-signing-pa-IN-win32-nightly/opt: KfMUlwEESwmFXJu5yd4cWg + checksums-signing-pa-IN-win64-nightly/opt: A8N9_364QVGwfFY-tRXMVQ + checksums-signing-pl-linux-nightly/opt: VvXWmRTzTwawGSHtmu2NQw + checksums-signing-pl-linux64-nightly/opt: BQxpFLqmSyuzRTFgd3WZ0A + checksums-signing-pl-macosx64-nightly/opt: Mbxxh0crTy-YCONNcPbC1Q + checksums-signing-pl-win32-nightly/opt: dW1jQLOXQjy66IzjhyXfmA + checksums-signing-pl-win64-nightly/opt: H7oiDk7FR2eytEcqCz63Yw + checksums-signing-pt-BR-linux-nightly/opt: JBzXcACxSRyFifcz3mRzhA + checksums-signing-pt-BR-linux64-nightly/opt: OKmgJytgTreLqih_itHiqA + checksums-signing-pt-BR-macosx64-nightly/opt: VCX8yIBSRDWCp5yn9HzDdA + checksums-signing-pt-BR-win32-nightly/opt: FXVrbjs3S96AVbvzoJdbkg + checksums-signing-pt-BR-win64-nightly/opt: QuHN-i9tQ8O49m_fkSMpcQ + checksums-signing-pt-PT-linux-nightly/opt: A-ViJvVtRiKf_3QQtONnVA + checksums-signing-pt-PT-linux64-nightly/opt: WQaVJmpURr6BHUrL6DxioA + checksums-signing-pt-PT-macosx64-nightly/opt: LVZuxiI7TUytrVtldQh-Nw + checksums-signing-pt-PT-win32-nightly/opt: Pmecsok3Q6qtHT4GTZMmcA + checksums-signing-pt-PT-win64-nightly/opt: Lj6SLhiUTkmDZoSOyXuUWw + checksums-signing-rm-linux-nightly/opt: WM2KVp6-TDqPzaKZ9gbkVg + checksums-signing-rm-linux64-nightly/opt: ZH0ELrJGRLepu6XAKQPRrA + checksums-signing-rm-macosx64-nightly/opt: dq67QwJtRHOzK4f2z7NAPQ + checksums-signing-rm-win32-nightly/opt: Gh8C7tqkSACO1ZMZ2gz9YA + checksums-signing-rm-win64-nightly/opt: CG7y67oRTNqHnTIH98O5GQ + checksums-signing-ro-linux-nightly/opt: O5CU1Ph5Raq47hAWVkt-cQ + checksums-signing-ro-linux64-nightly/opt: aZX1sibtS_-0-VTRaLOqcQ + checksums-signing-ro-macosx64-nightly/opt: b6SBkllRQWOyiyjg072ZiQ + checksums-signing-ro-win32-nightly/opt: EK1hvRWbScWTP7TUyaMUmg + checksums-signing-ro-win64-nightly/opt: bCFtwla9TQazKOs3RziAfg + checksums-signing-ru-linux-nightly/opt: VxO55FUQSJey9pzJu8QL1g + checksums-signing-ru-linux64-nightly/opt: FJQMDPohTkW4YJTqjXviyQ + checksums-signing-ru-macosx64-nightly/opt: Xq44GJ7CTZiuIGle9l-n6A + checksums-signing-ru-win32-nightly/opt: F4gU6XhfQ7KvdESdRv659g + checksums-signing-ru-win64-nightly/opt: ULgxnLgGQ9yJyJT926AtNQ + checksums-signing-si-linux-nightly/opt: AoMuekyCRe2ByH4fZIrvhQ + checksums-signing-si-linux64-nightly/opt: Jwmu5vfjQ_KesnQxewpIxg + checksums-signing-si-macosx64-nightly/opt: eXDTNq5-QROP5e-3j_UUuw + checksums-signing-si-win32-nightly/opt: UicdNE_jQ4-h4oraI3VSkQ + checksums-signing-si-win64-nightly/opt: G3K9R1DKQg6f4I_mlJg8pg + checksums-signing-sk-linux-nightly/opt: EAtlHjF2SU2TE2DV2dc2jw + checksums-signing-sk-linux64-nightly/opt: QsZMxtV8QTKGDIn4HOQ-sQ + checksums-signing-sk-macosx64-nightly/opt: NbRFCAXtTE2svKgCwgF0Xw + checksums-signing-sk-win32-nightly/opt: U5u-nYjLStmOkE_V8nGXdw + checksums-signing-sk-win64-nightly/opt: b2coeibQQOay8ytvlZbpPw + checksums-signing-sl-linux-nightly/opt: J3zBhoW1RqGLmIdDRPM3_w + checksums-signing-sl-linux64-nightly/opt: DfYgMS0jRbCrO4EVow658A + checksums-signing-sl-macosx64-nightly/opt: OvvZ4ze_TQ6OIUai-YxGWQ + checksums-signing-sl-win32-nightly/opt: QSkW3PwaQXGzqTCcDSB8gg + checksums-signing-sl-win64-nightly/opt: RIT2ZWUeQw60qDe1Slhd7A + checksums-signing-son-linux-nightly/opt: EpPk_I9-SJ22vwlNoqKqTA + checksums-signing-son-linux64-nightly/opt: XSl7CdPZQeiFx2rwDyvyvA + checksums-signing-son-macosx64-nightly/opt: HtU7XbfaR9m4_XzTdk6MIw + checksums-signing-son-win32-nightly/opt: aLLdzt7EROuavQHGVJfvXQ + checksums-signing-son-win64-nightly/opt: RDLF943VQl2weQC4mxxCbw + checksums-signing-sq-linux-nightly/opt: OHBS_XFURF-bHitNKIZGKg + checksums-signing-sq-linux64-nightly/opt: EcWrj3TrQASvkI4O7J-0BQ + checksums-signing-sq-macosx64-nightly/opt: AQCMYGN2Tlm2DazfcXZaSA + checksums-signing-sq-win32-nightly/opt: O3-xmTu4S0urh5FhqEsFkg + checksums-signing-sq-win64-nightly/opt: XOqXx3AuQCubqPa-TWkAtQ + checksums-signing-sr-linux-nightly/opt: bhIKLEvcT-WhkZGRzW_H2g + checksums-signing-sr-linux64-nightly/opt: IMDmNM-TQS-2XFz39xkVGQ + checksums-signing-sr-macosx64-nightly/opt: V6PYTPjsTvCwiMkaV1Zx-w + checksums-signing-sr-win32-nightly/opt: WIXcUD7GQVyhQCmrq4-VaA + checksums-signing-sr-win64-nightly/opt: K_4nbyQrQ9OpeKRePuXgYQ + checksums-signing-sv-SE-linux-nightly/opt: CTOVgGKiSKqyXf3iIciFDA + checksums-signing-sv-SE-linux64-nightly/opt: OGlfN1ueRX6lQsYrdwWnsg + checksums-signing-sv-SE-macosx64-nightly/opt: FdRoEjRLTOqXUjypgBzBYg + checksums-signing-sv-SE-win32-nightly/opt: Y3dEl91_R1Svee2y3D5zUA + checksums-signing-sv-SE-win64-nightly/opt: ENKZhMaYTuS9cS2OhkgHlA + checksums-signing-ta-linux-nightly/opt: WWNBHqHQTdOnPxLyrFbdLA + checksums-signing-ta-linux64-nightly/opt: Hnz2QMOORqyQPdG2vFMXlA + checksums-signing-ta-macosx64-nightly/opt: aHdgSW3iRIuCEyVadT3ZCA + checksums-signing-ta-win32-nightly/opt: aFsMvWxjTl23QhGYPcVeng + checksums-signing-ta-win64-nightly/opt: XhVDN63vQEukME6nhSiR8w + checksums-signing-te-linux-nightly/opt: O2uOJHQxT-WsEx9GwDN7jw + checksums-signing-te-linux64-nightly/opt: G0PoNvo_QF25ru3dkEUOFQ + checksums-signing-te-macosx64-nightly/opt: BeRheTqRTKm2AHlqBAwGCA + checksums-signing-te-win32-nightly/opt: RK-u3qGASoeG7iVc0pCo4A + checksums-signing-te-win64-nightly/opt: P2O0vojNQ6-ycwgiKy2Oew + checksums-signing-th-linux-nightly/opt: WbhluOk4TyalFR0LwSuWHQ + checksums-signing-th-linux64-nightly/opt: fE07mwO8TvaXVguxWVZZ3g + checksums-signing-th-macosx64-nightly/opt: Io7pxd_0Sn-xucFkR3PhMw + checksums-signing-th-win32-nightly/opt: MwgXxZjUSNmIXBsNeQFWEw + checksums-signing-th-win64-nightly/opt: V53tYswzTbSGksYdIsU3DQ + checksums-signing-tr-linux-nightly/opt: e_P25-7tSUO3-aEEZOgG3g + checksums-signing-tr-linux64-nightly/opt: FoyNh9kKRTWqbsBuB967vA + checksums-signing-tr-macosx64-nightly/opt: QvfGI-5eTkiBwkKpW8XsOQ + checksums-signing-tr-win32-nightly/opt: W7Qkgg5_Sp2xtb6LDS_JFg + checksums-signing-tr-win64-nightly/opt: VswSIuBYR5uczm0EafH0WA + checksums-signing-uk-linux-nightly/opt: NeWlbPKrQdedHnJtzWWOzg + checksums-signing-uk-linux64-nightly/opt: cujf16CvSOGrZKw7ZSXG5g + checksums-signing-uk-macosx64-nightly/opt: HRsQLOZDRwuO8Ku6ZCpHxA + checksums-signing-uk-win32-nightly/opt: YGPJ-GHaSZu5e7aqPf5KVA + checksums-signing-uk-win64-nightly/opt: c39hlTnlQQmQvqh5NXVPTg + checksums-signing-ur-linux-nightly/opt: Crj5gXEQT6yGrD4TK4STOg + checksums-signing-ur-linux64-nightly/opt: KxzDifBuQEyHF-F4C5YRNA + checksums-signing-ur-macosx64-nightly/opt: BB6bMlQkSEWMwAcwahFbfw + checksums-signing-ur-win32-nightly/opt: Xq1_LsO4T9emfXj4n2vDDg + checksums-signing-ur-win64-nightly/opt: DyrTulFlTZiQqaQXjUnsZA + checksums-signing-uz-linux-nightly/opt: agxhEAxdSlmfsiguJmz6ZA + checksums-signing-uz-linux64-nightly/opt: L1aehcqkR3Oq89GG7d0eiA + checksums-signing-uz-macosx64-nightly/opt: T8FbY-3ATkqIM4e_jqRrDA + checksums-signing-uz-win32-nightly/opt: d0lVoW6qSkWGxIfoLPxdSA + checksums-signing-uz-win64-nightly/opt: dvuZdDJnSjizmInGloBQlw + checksums-signing-vi-linux-nightly/opt: T_9_tRRmTfStyFQdAKgF6Q + checksums-signing-vi-linux64-nightly/opt: YfcSBf7zRS6PzZzQs1_VsQ + checksums-signing-vi-macosx64-nightly/opt: epDQOdGPR5mMj1gXTAgtww + checksums-signing-vi-win32-nightly/opt: ZAI8u5x0T-GdPXd1uJMyEA + checksums-signing-vi-win64-nightly/opt: dsr4Lr0lRLygmCpHXLBqoQ + checksums-signing-win32-nightly/opt: aQfV70drRA-29dhZBxF_DA + checksums-signing-win64-nightly/opt: KndlrnjKRL-SHsBwv6Rqvw + checksums-signing-xh-linux-nightly/opt: dlLsh7GfQT6x-vO7d_ArLg + checksums-signing-xh-linux64-nightly/opt: Bb3HxWOoTRWPbNA21b1NkQ + checksums-signing-xh-macosx64-nightly/opt: aK8B_2aDSGaTxHf-5Nd9kw + checksums-signing-xh-win32-nightly/opt: QCaNAODgRhW5lAgCO-6oDA + checksums-signing-xh-win64-nightly/opt: eHV-Mch4THKStRfViVHM9w + checksums-signing-zh-CN-linux-nightly/opt: E4P65q9OTDq_pAv3gunjTg + checksums-signing-zh-CN-linux64-nightly/opt: dshNTa2jTnij8tNQa_60Yg + checksums-signing-zh-CN-macosx64-nightly/opt: BpbGzNKDTK-DmZCbDPhR3g + checksums-signing-zh-CN-win32-nightly/opt: FVkZVTGORzmWw2aTEWssuA + checksums-signing-zh-CN-win64-nightly/opt: F1ndgAy4RKWRVUVB7WpYKw + checksums-signing-zh-TW-linux-nightly/opt: PqQA1ZcKTJCeZGS9IthBlw + checksums-signing-zh-TW-linux64-nightly/opt: XTGG5Ec7Rt2omRMoyIa9fQ + checksums-signing-zh-TW-macosx64-nightly/opt: cMGpg-IuST-SwugpvEy2PQ + checksums-signing-zh-TW-win32-nightly/opt: di1RM6STTHebfM-AfYRY_g + checksums-signing-zh-TW-win64-nightly/opt: YEcRN4TuSm2tkcqsg631Vg + fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ + fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA + fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ + fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q + fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og + fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q + fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg + fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ + fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ + fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g + fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q + hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A + nightly-l10n-linux-nightly-1/opt: M3fma7PWTSCmn0zpybL8PQ + nightly-l10n-linux-nightly-10/opt: fWqGYTd_RP-y-1b8R-B_DA + nightly-l10n-linux-nightly-11/opt: e4r7V2bIQGu1Z57m57zn4A + nightly-l10n-linux-nightly-12/opt: DpIk6MlOSS2AtO2caKOFeQ + nightly-l10n-linux-nightly-13/opt: bwEyoHgwTOW2gCUNIpiAqA + nightly-l10n-linux-nightly-14/opt: avKg-GvpTKac7lZhHkrd7Q + nightly-l10n-linux-nightly-15/opt: SXEK3Ru9Ry2KVmi-xFJecQ + nightly-l10n-linux-nightly-16/opt: ZgENtuuhS_6ZWk-A2d-_UA + nightly-l10n-linux-nightly-17/opt: M9kCrsbZSgufZAru0yuIqQ + nightly-l10n-linux-nightly-18/opt: Kt4WAULxTaeGV-zPpocCBA + nightly-l10n-linux-nightly-19/opt: arRWcxmzRsSSSrTeFD6nwQ + nightly-l10n-linux-nightly-2/opt: PU-WMys7SMKbpc7Pb1Gq2g + nightly-l10n-linux-nightly-20/opt: TPJ1zVoKSEu0BtbkAvK40A + nightly-l10n-linux-nightly-3/opt: B4YtpxKWQtO4nLKmIc8_0w + nightly-l10n-linux-nightly-4/opt: bvlqFe21Tp-BqG3wmFtqXw + nightly-l10n-linux-nightly-5/opt: N9R3QY6qREiBduEHDbO4bw + nightly-l10n-linux-nightly-6/opt: N6tzp0LsTkW5QG-ZilYHuQ + nightly-l10n-linux-nightly-7/opt: RCSYfW1dSEmQ9rS6MCZbOg + nightly-l10n-linux-nightly-8/opt: HM5erlZiQsKPV3L4KH0K9g + nightly-l10n-linux-nightly-9/opt: NCu9reHbSKaKqCJ_M5yd8w + nightly-l10n-linux64-nightly-1/opt: ZvyQtn96RxiZyCaDjkqHSw + nightly-l10n-linux64-nightly-10/opt: Qh7C2Ra0RM6hcTHGQCCPCA + nightly-l10n-linux64-nightly-11/opt: I88Zies5QMiT_aH1V_3y-w + nightly-l10n-linux64-nightly-12/opt: JOVwKKjiQmaQEevb1OMKbQ + nightly-l10n-linux64-nightly-13/opt: eLSfvfSsT5297kSM0o0J9Q + nightly-l10n-linux64-nightly-14/opt: RMjOhFTES5mKjc6RT2zVQg + nightly-l10n-linux64-nightly-15/opt: R6dlAkl_QsCLzDjCibIznQ + nightly-l10n-linux64-nightly-16/opt: BRsT9HDPSleVJEkBDw0rAw + nightly-l10n-linux64-nightly-17/opt: TasNIvJaQ9axS1APzIKVdQ + nightly-l10n-linux64-nightly-18/opt: Yl5FUrSwQoq2M1rPsrZvvQ + nightly-l10n-linux64-nightly-19/opt: Ak03-49gTM2pu0ZCBZNY3Q + nightly-l10n-linux64-nightly-2/opt: KLL5HYCRSfKEboKKkmtI9g + nightly-l10n-linux64-nightly-20/opt: afZps1V1RIu31_26GClGQA + nightly-l10n-linux64-nightly-3/opt: QUDHc3eDRQaeTCz21FBaYg + nightly-l10n-linux64-nightly-4/opt: PzF33T1PQnydTpXmSOngyA + nightly-l10n-linux64-nightly-5/opt: IW0a4N-2RN-csUW1HZ685Q + nightly-l10n-linux64-nightly-6/opt: Bs2RbuVZSS2iCPoYk51ong + nightly-l10n-linux64-nightly-7/opt: NBCtAhEgSvmoogT_ssTLxg + nightly-l10n-linux64-nightly-8/opt: AHkfpzMqTkuMxHBE2pIIlg + nightly-l10n-linux64-nightly-9/opt: OYRfWE3ITrKbOBkD68888A + nightly-l10n-macosx64-nightly-1/opt: MJGU52EETjCqDiXp8_dbLg + nightly-l10n-macosx64-nightly-10/opt: aEIj6W9_RRaRQ2juf0XTkQ + nightly-l10n-macosx64-nightly-11/opt: ILjTOqt8Ttu7LI0KkjxTGA + nightly-l10n-macosx64-nightly-12/opt: L7ERVMblRAqqngH_8gKqQw + nightly-l10n-macosx64-nightly-13/opt: U9P36EijQMu7aT5x75Bmvg + nightly-l10n-macosx64-nightly-14/opt: Y517BHv5RhmYF-PRUYvbfw + nightly-l10n-macosx64-nightly-15/opt: AQsMvwytT6uOnEFVUpsgEg + nightly-l10n-macosx64-nightly-16/opt: G4zdtxccQuaxm5PmCvUeLQ + nightly-l10n-macosx64-nightly-17/opt: cf7zk29mSP-9BFs2gL_5AA + nightly-l10n-macosx64-nightly-18/opt: RlWuvgC_QhqlHtIOthwKiA + nightly-l10n-macosx64-nightly-19/opt: doIEdwXDR16m3ttyx4QUZg + nightly-l10n-macosx64-nightly-2/opt: OFslDtdUROGLvXql5LAQIQ + nightly-l10n-macosx64-nightly-20/opt: fSZY8R3PT525MBTERRtdvA + nightly-l10n-macosx64-nightly-3/opt: O8UoAIB5TkCYpWSli4BxjA + nightly-l10n-macosx64-nightly-4/opt: Z5oe2o9fQset_AjLOgA5Kw + nightly-l10n-macosx64-nightly-5/opt: fuXsM7QMQK6P5j4wcKnpCg + nightly-l10n-macosx64-nightly-6/opt: T-aRkoWZT2eMpSF10bWuRA + nightly-l10n-macosx64-nightly-7/opt: MpGM-fTmTOSdW2xvdmawrg + nightly-l10n-macosx64-nightly-8/opt: OwbqeygvTBOiAv-5hEVW2A + nightly-l10n-macosx64-nightly-9/opt: MSPETCeXRpCk3DY65qwSKA + nightly-l10n-signing-linux-nightly-1/opt: YTPeRAioSYqYS5ZmqRWn1w + nightly-l10n-signing-linux-nightly-10/opt: TH6Pu5yNQyS4pGSUAZd4Tg + nightly-l10n-signing-linux-nightly-11/opt: HLxlh0cERwCDOfZrm7UZ-A + nightly-l10n-signing-linux-nightly-12/opt: Fp9tFiW5R8a0zS15T62cZw + nightly-l10n-signing-linux-nightly-13/opt: df2C4bIEQ12JjpLe_9e2qA + nightly-l10n-signing-linux-nightly-14/opt: HYO-xU0NT6-7kH7DMyHsqw + nightly-l10n-signing-linux-nightly-15/opt: eUrOPg5wTM2-i2XV-7kWIQ + nightly-l10n-signing-linux-nightly-16/opt: Altp_eTQQZa39ZvOQpke3A + nightly-l10n-signing-linux-nightly-17/opt: Y2jMDKf0RFW-K4vOiBvOgw + nightly-l10n-signing-linux-nightly-18/opt: BHYHgFGHTOa0dU_GAJ1EIg + nightly-l10n-signing-linux-nightly-19/opt: DoqO8w14Tda7hYGBKbIWjg + nightly-l10n-signing-linux-nightly-2/opt: ckWS5YvxThGGkb0bYZL6vA + nightly-l10n-signing-linux-nightly-20/opt: NJ6MiF7DS_i_2BCOPkLKCA + nightly-l10n-signing-linux-nightly-3/opt: YzoUdy8pQKK64EWDVT15RQ + nightly-l10n-signing-linux-nightly-4/opt: Mlmvz9myRzWxKo23hkc-Vg + nightly-l10n-signing-linux-nightly-5/opt: RT_9wjj3RIuZd-JSkPLAuQ + nightly-l10n-signing-linux-nightly-6/opt: IGiiOO9xQNuNCSVBWeCU9A + nightly-l10n-signing-linux-nightly-7/opt: Q3RiB1ElSkWE1S647UpDxQ + nightly-l10n-signing-linux-nightly-8/opt: UkbjtdVITUiKgoAlTapt1g + nightly-l10n-signing-linux-nightly-9/opt: JEPxCpqvQyefYYnWJShVoA + nightly-l10n-signing-linux64-nightly-1/opt: QiX1Z_dfSRKJwIoBhVPEew + nightly-l10n-signing-linux64-nightly-10/opt: arKIYpPhRayi7tEShKNYzQ + nightly-l10n-signing-linux64-nightly-11/opt: Xp5izAReTimc1JEyIGAd5Q + nightly-l10n-signing-linux64-nightly-12/opt: VjEjI4-YQOmn0Ae0vNnSGg + nightly-l10n-signing-linux64-nightly-13/opt: HER6wom7RwG-IiXdJCZvNw + nightly-l10n-signing-linux64-nightly-14/opt: HTImDNwpTfa8iZT9B3jpdQ + nightly-l10n-signing-linux64-nightly-15/opt: RYg6wfYyQciD9lFymyzW2A + nightly-l10n-signing-linux64-nightly-16/opt: NPfaGtzSRF-wb1QuXC9o4A + nightly-l10n-signing-linux64-nightly-17/opt: Jlp1OG9jSdyy6WnfVM7Ltw + nightly-l10n-signing-linux64-nightly-18/opt: YnXbYss5RUqAdlHjINgonQ + nightly-l10n-signing-linux64-nightly-19/opt: ZvsVjupxT8qfPhi7MI1VgQ + nightly-l10n-signing-linux64-nightly-2/opt: G0EjmjqrSMiuMOoJF8ewTw + nightly-l10n-signing-linux64-nightly-20/opt: AtdEPSilRsqlAiA-BH0oUg + nightly-l10n-signing-linux64-nightly-3/opt: RYsmO6sqRuum4WpEnFeeEw + nightly-l10n-signing-linux64-nightly-4/opt: b7Cl0JCtTKa8zxOnMAso1Q + nightly-l10n-signing-linux64-nightly-5/opt: QXmQ_ut7SpasE0DxElVkPQ + nightly-l10n-signing-linux64-nightly-6/opt: Tj2KxHHJTXu21ILYS6qMMA + nightly-l10n-signing-linux64-nightly-7/opt: H1nZjKVhSVyAnFffJpZe2A + nightly-l10n-signing-linux64-nightly-8/opt: QxXcWPsoQzOJqC_ZnLjYeg + nightly-l10n-signing-linux64-nightly-9/opt: DDgSsggASymmhIaOsGEVuQ + nightly-l10n-signing-macosx64-nightly-1/opt: CcP1H8gVTRKKhH3BcsHFzw + nightly-l10n-signing-macosx64-nightly-10/opt: e6zMbtgLRQyyz9K2LNbJQQ + nightly-l10n-signing-macosx64-nightly-11/opt: LzL8X3tUT46ODpZMPGGFSA + nightly-l10n-signing-macosx64-nightly-12/opt: ZQe-XukVSNmrniRaFAmgLA + nightly-l10n-signing-macosx64-nightly-13/opt: ep9ZuJmjS4K-b0PLBhk4vg + nightly-l10n-signing-macosx64-nightly-14/opt: XFFxGBL2Rh2wL_hg96zK0g + nightly-l10n-signing-macosx64-nightly-15/opt: ex6ti43HS8KJiRroyVsCDw + nightly-l10n-signing-macosx64-nightly-16/opt: coTPE8t2Rtm-GWfk1irJxg + nightly-l10n-signing-macosx64-nightly-17/opt: c8FA8Z-cRXGSFd8XRObhtA + nightly-l10n-signing-macosx64-nightly-18/opt: MRL0zSKwRlmGkuTZnbML4Q + nightly-l10n-signing-macosx64-nightly-19/opt: GUD_A2JtQVSIMGdhwlFTcg + nightly-l10n-signing-macosx64-nightly-2/opt: ThMQ1LVoSPmTiv9jGJju-w + nightly-l10n-signing-macosx64-nightly-20/opt: Qi-e3_3oRo-dr0PUzWm9uw + nightly-l10n-signing-macosx64-nightly-3/opt: YqWtmTiUTRmIKm53SMvVRA + nightly-l10n-signing-macosx64-nightly-4/opt: LVUTiAu4TG2Wq1WPjxC6HA + nightly-l10n-signing-macosx64-nightly-5/opt: DEOOPPJTR2m9p2mxjf6Sjg + nightly-l10n-signing-macosx64-nightly-6/opt: Sy_64pFfQx2sCBGgqj8ceg + nightly-l10n-signing-macosx64-nightly-7/opt: IHKBFPS9RcmffkMl2ObX2g + nightly-l10n-signing-macosx64-nightly-8/opt: Wv1Ip9BgS5W4RhkJ4rJv9A + nightly-l10n-signing-macosx64-nightly-9/opt: WgfG86w8SIKN6TOBBOMnHA + nightly-l10n-signing-win32-nightly-1/opt: V9mSUcq3S-qNaRX7bXKnsg + nightly-l10n-signing-win32-nightly-10/opt: bibb7fhYSeCjxKNpYXy8qg + nightly-l10n-signing-win32-nightly-11/opt: SpwVErJ8TVqbFiBLisMctQ + nightly-l10n-signing-win32-nightly-12/opt: MjjQOn2MS9-0hws3o_K1mQ + nightly-l10n-signing-win32-nightly-13/opt: Egf9AI7FTym1ofDsssq0qw + nightly-l10n-signing-win32-nightly-14/opt: ME5Wx-AORVqpdfsjdqXJ9g + nightly-l10n-signing-win32-nightly-15/opt: ApB2MQz1Q-ySKAQMs_6Emg + nightly-l10n-signing-win32-nightly-16/opt: GnWoiUDMQAC8GXne_1DNxA + nightly-l10n-signing-win32-nightly-17/opt: fHU7HknlRhuE8tuRFXWWKA + nightly-l10n-signing-win32-nightly-18/opt: Rfq4ucT3Sg2OfZlR-_TxEQ + nightly-l10n-signing-win32-nightly-19/opt: erjQfXN2T2uuKKePUVdg8A + nightly-l10n-signing-win32-nightly-2/opt: XwX0RyK0Qi66OVi9S06RJg + nightly-l10n-signing-win32-nightly-20/opt: QA4UBut6Qz2PStQzB2oF2A + nightly-l10n-signing-win32-nightly-3/opt: Ry8RrzSVT92WFk_PHHPoHg + nightly-l10n-signing-win32-nightly-4/opt: DoigKNuHSNyos4Xl9E639g + nightly-l10n-signing-win32-nightly-5/opt: G47beA9XRTucSHAa5o9EKw + nightly-l10n-signing-win32-nightly-6/opt: DPG3JcmHQESC3qJ5ZFv0oA + nightly-l10n-signing-win32-nightly-7/opt: IavYtB1ARKC_IIWrZK7ozA + nightly-l10n-signing-win32-nightly-8/opt: d75wfLPRRL-tAmupT6iiiA + nightly-l10n-signing-win32-nightly-9/opt: f2guqAoPSjGYlHN4Tnv4Lg + nightly-l10n-signing-win64-nightly-1/opt: F2Sis7grRoGVnGii96XAzA + nightly-l10n-signing-win64-nightly-10/opt: NvnogtchRoCmTIQbcstj4Q + nightly-l10n-signing-win64-nightly-11/opt: aM-gXzXIQjaYaN4rfG_iqQ + nightly-l10n-signing-win64-nightly-12/opt: PFLA0G-gQuCs2YlQ2REgEA + nightly-l10n-signing-win64-nightly-13/opt: MGH2gMFFRLav6MQZ7Y97Cw + nightly-l10n-signing-win64-nightly-14/opt: cFsQneyWQXKhKv7vfaLZWQ + nightly-l10n-signing-win64-nightly-15/opt: UvbKxmkWRquNcKwcVVdhig + nightly-l10n-signing-win64-nightly-16/opt: a6ShH7FvShaJ2ht27eldmA + nightly-l10n-signing-win64-nightly-17/opt: SvNDOn7FSqmLyh_IAnDSQw + nightly-l10n-signing-win64-nightly-18/opt: QAKsMsHNQWmKUxPQog5qQA + nightly-l10n-signing-win64-nightly-19/opt: adDiWeGBQ66yn_xx13wO1A + nightly-l10n-signing-win64-nightly-2/opt: M3crvx6yQcerlysnnVixFw + nightly-l10n-signing-win64-nightly-20/opt: PBBgBODjSDyYsXCfadWd7g + nightly-l10n-signing-win64-nightly-3/opt: MDc3vCZpTuiM_lwEFrJsng + nightly-l10n-signing-win64-nightly-4/opt: Iuk7ENqBTmC_tIvKFE-Vmw + nightly-l10n-signing-win64-nightly-5/opt: R0MANCi6RKSLsgDc7LUI6Q + nightly-l10n-signing-win64-nightly-6/opt: GV5cOk7RTrKBU6qs2meXTQ + nightly-l10n-signing-win64-nightly-7/opt: cX_Byl4WQAySUKhgG1Fzyg + nightly-l10n-signing-win64-nightly-8/opt: RXx9bnBXR1es5o4oi9tLHw + nightly-l10n-signing-win64-nightly-9/opt: Nwu7D-WfT2uQCU-nAbsB-g + nightly-l10n-win32-nightly-1/opt: bHQfmDHvQTa0FJPUGdNizA + nightly-l10n-win32-nightly-10/opt: REfC9Dt6RIu5JwK9tSH3kg + nightly-l10n-win32-nightly-11/opt: MILCs2hcTfOACt0oQPBLww + nightly-l10n-win32-nightly-12/opt: ZrMHYAAQRzuMBkFZl8wgnA + nightly-l10n-win32-nightly-13/opt: brP6lNvCR0G9YUnQBl2buw + nightly-l10n-win32-nightly-14/opt: DCIsaTvlRLCdBB3EXMJHqg + nightly-l10n-win32-nightly-15/opt: NosrKgViQl-inKi8ZBRfqQ + nightly-l10n-win32-nightly-16/opt: Qdaxx1t2SBiHwbUsprix-A + nightly-l10n-win32-nightly-17/opt: bmsjYCNNRvGtO6qigtXQnA + nightly-l10n-win32-nightly-18/opt: D3_cRw0uTeazsZT5H0MJ3A + nightly-l10n-win32-nightly-19/opt: cSwWdwg1SgyKz7u_850kjQ + nightly-l10n-win32-nightly-2/opt: Hza5vp6eTn2E7xzGngXS0g + nightly-l10n-win32-nightly-20/opt: LLN14uOeRYOtM9Gk3gaBYQ + nightly-l10n-win32-nightly-3/opt: GVRJMmOpQ2iYRhq3oHidxg + nightly-l10n-win32-nightly-4/opt: YqqDUOETRK2gKcuthmV-UA + nightly-l10n-win32-nightly-5/opt: b3WtcBHbSHWkCtS1iMAFSA + nightly-l10n-win32-nightly-6/opt: X3Wf5TUnR_2B6_VQ5Og82A + nightly-l10n-win32-nightly-7/opt: VeDgth29Tqm1jHKx2-p2dw + nightly-l10n-win32-nightly-8/opt: atjMNEDtTNS1lokgUEFLbQ + nightly-l10n-win32-nightly-9/opt: DT89JvzoS2-C-a7HE_nWuw + nightly-l10n-win64-nightly-1/opt: BiPWnYYNT8iFjxWgw9dxSQ + nightly-l10n-win64-nightly-10/opt: Zq9AiBwCQFudobGgKMsOvQ + nightly-l10n-win64-nightly-11/opt: MRi-qjJxSBuehPYJb2CuKw + nightly-l10n-win64-nightly-12/opt: bWwcYKxKRsS4D8Rw1znuRA + nightly-l10n-win64-nightly-13/opt: ZZcimVyJRK-wet-gjgiGiQ + nightly-l10n-win64-nightly-14/opt: OGdkRsr0T66L3cpmwSTn_g + nightly-l10n-win64-nightly-15/opt: UNxfUEXESqWX1i_mU2zFsw + nightly-l10n-win64-nightly-16/opt: VDf0hUQnR46WoLmSnamptQ + nightly-l10n-win64-nightly-17/opt: XknO8Wv4QpmTozAdq_iTWQ + nightly-l10n-win64-nightly-18/opt: fSqjl-qoTk-w8UkrJQRd0A + nightly-l10n-win64-nightly-19/opt: ZI2_10s6S5K7G7tvaCRDXg + nightly-l10n-win64-nightly-2/opt: JRp86glISJCWYQPNA78zAw + nightly-l10n-win64-nightly-20/opt: SgqrHoiJQOuST_c8YxuC7Q + nightly-l10n-win64-nightly-3/opt: AIa3e0G3SimeOEq7wj9Gyg + nightly-l10n-win64-nightly-4/opt: DI7GL9BBS6u4QkJoMbjjZQ + nightly-l10n-win64-nightly-5/opt: HoVh0zHJRV6WpIhdB-hw5g + nightly-l10n-win64-nightly-6/opt: d2b3VdJuTLqFJUUhH5Rapg + nightly-l10n-win64-nightly-7/opt: T2Cv061_R9ufl54hn4EuTA + nightly-l10n-win64-nightly-8/opt: FuC6XWdlQK-L1k50iVxicg + nightly-l10n-win64-nightly-9/opt: a4hQWQVATCGJA6cAKyP9eQ + packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA + packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA + packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg + packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ + packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA + packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ + packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg + packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw + packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw + packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A + packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA + packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw + packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg + packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ + packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w + packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg + packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ + packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg + partials-ach-linux-nightly/opt: a5c3DbOUSwudgLPdYUDPqg + partials-ach-linux64-nightly/opt: OynTzU6UTcCj2XfsbZF96g + partials-ach-macosx64-nightly/opt: G4YJEbSZQZyqPY3IWo5AMw + partials-ach-win32-nightly/opt: fpkGXG86QO2WU4PByquw1g + partials-ach-win64-nightly/opt: OeOMYad2R9W7yFsHcVhz-A + partials-af-linux-nightly/opt: LeeAPFqlSTWNhwOof9A3Lw + partials-af-linux64-nightly/opt: Fupfx72oT16276yGbE_hhg + partials-af-macosx64-nightly/opt: JHUNty-LS4iGnPLSklz_eA + partials-af-win32-nightly/opt: VgrLMB8fSjC1L0nxTVbSqQ + partials-af-win64-nightly/opt: EpG-zFWgRnOW3ToQfvvehw + partials-an-linux-nightly/opt: S8JXISRYRzyPcPJBX15d9Q + partials-an-linux64-nightly/opt: MKGGkNzkSvGR9v3pxAJImg + partials-an-macosx64-nightly/opt: BUdg94S8QeG1WpfI0jg4Ag + partials-an-win32-nightly/opt: JfDN6Q6rTbSJVEDL6eRndg + partials-an-win64-nightly/opt: FL30WNa9TJGMiTZmFo6bkQ + partials-ar-linux-nightly/opt: LlPQWS5yR-6uhYc55KmVAw + partials-ar-linux64-nightly/opt: RNPFgrW2Qz-cyrB4VXewBA + partials-ar-macosx64-nightly/opt: KA4Ez41PSauwDfWD9ljI8w + partials-ar-win32-nightly/opt: PBMfCeGkRoqUnmBvOTR0Hw + partials-ar-win64-nightly/opt: cmRg5g8oTd2YPPiM5nYb2Q + partials-as-linux-nightly/opt: d9DHfPOCTZ67hYif3yU_JQ + partials-as-linux64-nightly/opt: cd_qg176To2sNpumZ8OmNQ + partials-as-macosx64-nightly/opt: fNC9PHLcSEeC8am5G_yHPQ + partials-as-win32-nightly/opt: cg8-OeiCTYCjqPSvcg15hQ + partials-as-win64-nightly/opt: Gifef01GQrGKn7VV0Lf8vA + partials-ast-linux-nightly/opt: XCxCVpb9TT681TaQrcBijQ + partials-ast-linux64-nightly/opt: HhF524hRRTC7apSrPmhahw + partials-ast-macosx64-nightly/opt: DQjYqBckQBSe22oy5ILKHg + partials-ast-win32-nightly/opt: eL4Qj-Z2QrOsw9OcIlZfYQ + partials-ast-win64-nightly/opt: Xl5WhwZAToejTPwKkm1Zug + partials-az-linux-nightly/opt: KMT9KjBVSs2UN-12cWRyYQ + partials-az-linux64-nightly/opt: UBZp2jgFRQCo2lgG1hMJzg + partials-az-macosx64-nightly/opt: SKQIwa6PT_aHH-qNTlmxEw + partials-az-win32-nightly/opt: LRdu7VpJSBuJP2NyaIAsxA + partials-az-win64-nightly/opt: SksxNImDTqKwczakWwqr7g + partials-be-linux-nightly/opt: EyYuvz7VRfeiQTnngWnwoA + partials-be-linux64-nightly/opt: ZmYr6tmKTrKRqUYdGPaQoA + partials-be-macosx64-nightly/opt: JmhcESQ3R6m06iTjK449TA + partials-be-win32-nightly/opt: KmZzuVHXSE6XDsyg7R1X6w + partials-be-win64-nightly/opt: dqYPPQmFSRWLG-93iqa2FA + partials-bg-linux-nightly/opt: FjF9RK1oRHGLYJpiWHMNPg + partials-bg-linux64-nightly/opt: ZpzUl8TOQVSKtL3cQcrezw + partials-bg-macosx64-nightly/opt: MGlreuskTZSi6kuHMSD2cQ + partials-bg-win32-nightly/opt: JnIg1iwUSquBACmxmjtw1g + partials-bg-win64-nightly/opt: SeA8xiBTS8aA7_aPBxJHHw + partials-bn-BD-linux-nightly/opt: OozYcUJqTZGY8G7apOIUQA + partials-bn-BD-linux64-nightly/opt: Wq-DCntASy-kVFDWnI2Aww + partials-bn-BD-macosx64-nightly/opt: IiC3VwAZR6ewrpbDQXmKCg + partials-bn-BD-win32-nightly/opt: RuIuY1m2Q7WvjQG2yFpJJQ + partials-bn-BD-win64-nightly/opt: IByS0pNPT0Cgp8go4BIm1Q + partials-bn-IN-linux-nightly/opt: XPuDT6mnRW6esptS8hlgZQ + partials-bn-IN-linux64-nightly/opt: B0Pzm7EPQr-a7OPKKrvPQQ + partials-bn-IN-macosx64-nightly/opt: L_Qq6W_jTOWKg0jWqfUY7w + partials-bn-IN-win32-nightly/opt: XlQj0g98QHidChLKl-tmjw + partials-bn-IN-win64-nightly/opt: FcOuMbwLSUmqYrASomwlEw + partials-br-linux-nightly/opt: Bp6TqDRITn2tJSUfdYFoww + partials-br-linux64-nightly/opt: RIq8YgugT66ifsZRLuTAew + partials-br-macosx64-nightly/opt: Df1tytxkR_WHQaaqZqMJrA + partials-br-win32-nightly/opt: AM__AdiWSbu-vGSvid6OLQ + partials-br-win64-nightly/opt: Bnc_t0ANQtCnZb6eZd7C1g + partials-bs-linux-nightly/opt: LlzMgGnwSFGQF29f0XErFg + partials-bs-linux64-nightly/opt: A8kHjPdPT5iio3iipRvoXQ + partials-bs-macosx64-nightly/opt: Lwgejfj3Tc2RmLPR6ED6IA + partials-bs-win32-nightly/opt: f7zkMLsmTXWnMxZpbCTnHA + partials-bs-win64-nightly/opt: F5Fqw4i-SBWyqsYZfZ2blg + partials-ca-linux-nightly/opt: MOG_FasbR0ik6WiMlMOQyg + partials-ca-linux64-nightly/opt: ZRkkQseWRAKzxzUyviFadw + partials-ca-macosx64-nightly/opt: PjQQ7SsYSRGpkhTAnoESpw + partials-ca-win32-nightly/opt: GmaioaSAQK6wOOZWNPbHCA + partials-ca-win64-nightly/opt: aM1GapkeTuGZpG2nPYPNPw + partials-cak-linux-nightly/opt: QxmX7uSsTYKLZ2mJcHygPg + partials-cak-linux64-nightly/opt: Qr6EMZnUSTqiUJs-l89WXA + partials-cak-macosx64-nightly/opt: R4NP1RqMQW2YA0V5S51XEg + partials-cak-win32-nightly/opt: SCyueIGqTKKITTIWVwV08w + partials-cak-win64-nightly/opt: CYB4LVcLTIKmv6_MJ3_06w + partials-cs-linux-nightly/opt: BG1gCoQ1RbiDWCM-w8Ci2w + partials-cs-linux64-nightly/opt: A-jECrTzR_SyNWWWUFpyHw + partials-cs-macosx64-nightly/opt: asK9C7BgS7yJ1dECYLFYug + partials-cs-win32-nightly/opt: RosbAGc4SpaSvXoZgq_Dwg + partials-cs-win64-nightly/opt: RXxRn4aoT3qP8vqUGVdhrg + partials-cy-linux-nightly/opt: KQ4K0WWnRLKp_ehExpHpoQ + partials-cy-linux64-nightly/opt: bWoM0hO5SVOR_T6jZfEt8g + partials-cy-macosx64-nightly/opt: KIv9gLmNSdSv35uTJTPZrA + partials-cy-win32-nightly/opt: ICQRRS6LT3CS8lEBDGnEug + partials-cy-win64-nightly/opt: JMgieSGwRZ-i2xjyP3ru5A + partials-da-linux-nightly/opt: Edelai6xRLq2KjkG6oGvZQ + partials-da-linux64-nightly/opt: EEQcVmCIQqGuCPx0GJlHwA + partials-da-macosx64-nightly/opt: UAxUsv4ITUCAacHUF8FizQ + partials-da-win32-nightly/opt: WU1W2cU7RheESkXEkPy9dg + partials-da-win64-nightly/opt: VTnxmZGKQL6UvMs0uFL0GA + partials-de-linux-nightly/opt: W_LMXUscRbuRHifUdIDJ0w + partials-de-linux64-nightly/opt: KA451D30RgG7ULAYckw04g + partials-de-macosx64-nightly/opt: H0kHdUlxRA2saGk-hjSnoQ + partials-de-win32-nightly/opt: YBBPPUpTS8WgIXEW3dLn5A + partials-de-win64-nightly/opt: RsjQhjo-QneVv-OFwNrlHA + partials-dsb-linux-nightly/opt: VOIF3-4CSPyKQHS2hv1MSg + partials-dsb-linux64-nightly/opt: YPAGrShJSh-qpD-yTdSZoA + partials-dsb-macosx64-nightly/opt: Lba2gI5cT_K9pSHXm2anpA + partials-dsb-win32-nightly/opt: dkMHYsGzRD22n-GgY83YiQ + partials-dsb-win64-nightly/opt: c8lOg-M6Rty6LWG4d6WzlA + partials-el-linux-nightly/opt: f7LdDRLhQQq5yhIWP-tPyA + partials-el-linux64-nightly/opt: Lq3m2ep7RXOC1B8PYEo4-A + partials-el-macosx64-nightly/opt: I05isFpUTXyrV9hk8nZTZg + partials-el-win32-nightly/opt: ILSjnJKPTkanSO37LNiHfg + partials-el-win64-nightly/opt: Sr4UYmsyQ9-yzzo27tndlg + partials-en-CA-linux-nightly/opt: EBbHBa5ASFixmnTBMzHjOA + partials-en-CA-linux64-nightly/opt: TKU-G9jwRSClNzZiVcYoxw + partials-en-CA-macosx64-nightly/opt: XyZx_PnqSqO7PyvfepoStw + partials-en-CA-win32-nightly/opt: ctQ24ZCcQ3KkDCo_lADw6w + partials-en-CA-win64-nightly/opt: aAwsFxpYQdO2IGs_PgPSxg + partials-en-GB-linux-nightly/opt: BEuOJHT7Tpij-S0Bin5sYg + partials-en-GB-linux64-nightly/opt: AEsAmiANQ-C-WsF2uiG1ZA + partials-en-GB-macosx64-nightly/opt: WK2mG6ImTuSTgMVmye6-8w + partials-en-GB-win32-nightly/opt: eeAJbUNwS3mMk03N9LcLdw + partials-en-GB-win64-nightly/opt: HYZseoccTeKQGs-QcSy5aA + partials-en-ZA-linux-nightly/opt: JdtiDyFtSPmXkeT39GzY3g + partials-en-ZA-linux64-nightly/opt: f6A0Rd5URRSkz6EAysTyoA + partials-en-ZA-macosx64-nightly/opt: MVWEoDtCQm6VomCZ6M2YcA + partials-en-ZA-win32-nightly/opt: azTwqDL1QtyrpzDzIevJ0w + partials-en-ZA-win64-nightly/opt: TilkEQd8Q9u84d_2m9eXfQ + partials-eo-linux-nightly/opt: VHYjIGkORv2Qgkzeotg2Lw + partials-eo-linux64-nightly/opt: I6ZXG31YQbOkVRfnbU2HjA + partials-eo-macosx64-nightly/opt: Y5Js1-ksRMquCNhzVRYFZA + partials-eo-win32-nightly/opt: EjGMVcs5RA-nzu06eNME4g + partials-eo-win64-nightly/opt: HfsTsGTkR8WzdkgSG2YPgQ + partials-es-AR-linux-nightly/opt: YMs-xFcCT3ymfZl6xLGqiw + partials-es-AR-linux64-nightly/opt: R_TRW1ABRKGexbMJ_djr0Q + partials-es-AR-macosx64-nightly/opt: UNGzfVR1QI-teqPO4b4XRQ + partials-es-AR-win32-nightly/opt: buqyTODxRoKDPgnxazMjbg + partials-es-AR-win64-nightly/opt: Ce0zo8S7Rz6cycMA3FUeLw + partials-es-CL-linux-nightly/opt: cZ8R3J1bR0KXqMKf6UdfVA + partials-es-CL-linux64-nightly/opt: LRXXoYzdQTmX8Ma0gschCw + partials-es-CL-macosx64-nightly/opt: UhROY_GzRNKJPYlUM2HvWQ + partials-es-CL-win32-nightly/opt: IB60vF58RQ21uLCP2zo5bQ + partials-es-CL-win64-nightly/opt: WhX3EYcRTk6SJpq-nkLGpQ + partials-es-ES-linux-nightly/opt: N4NmcgfuScC0MCp04_FbKw + partials-es-ES-linux64-nightly/opt: ZZtsUSz6RM-E44q2IWL5bg + partials-es-ES-macosx64-nightly/opt: EYxBcaFGRoO_oYHM09u5Dg + partials-es-ES-win32-nightly/opt: PHzzR2qhSBmLdCCL9hYlxA + partials-es-ES-win64-nightly/opt: c7DIwCWbTJ-zzVlEKAsjKw + partials-es-MX-linux-nightly/opt: DH6z6cLORdm99qDZIksTYQ + partials-es-MX-linux64-nightly/opt: PmDG-HmJToiK5Gwp9RjULw + partials-es-MX-macosx64-nightly/opt: PvX-emuSSuuKrsh8pC5eSQ + partials-es-MX-win32-nightly/opt: VC1N5wt_Qom7BUGoIfW5og + partials-es-MX-win64-nightly/opt: W9EOJKu8QomPfz01JXp97A + partials-et-linux-nightly/opt: O-S34ARGSjWpJAACPquteA + partials-et-linux64-nightly/opt: Rk9T70OASfumIzo32-hPZQ + partials-et-macosx64-nightly/opt: Cu1TJKrDTieWhRTjorlFTg + partials-et-win32-nightly/opt: E6tmEv0oRtStHkYIi4Nb4A + partials-et-win64-nightly/opt: Ncuah8SBRs2aaHICA_8L6g + partials-eu-linux-nightly/opt: AlKQZPigT82OiMhN5Ea_lQ + partials-eu-linux64-nightly/opt: YlTxK3D5SX2pq28OvWZcvA + partials-eu-macosx64-nightly/opt: JvFNctMGTzSHENwpTHULjw + partials-eu-win32-nightly/opt: GFng5mFPShiz1lpY93H0cg + partials-eu-win64-nightly/opt: b_v5Sd3TQnGrmwZm3KxUfg + partials-fa-linux-nightly/opt: dtyCnCxJSWiutrRVWIORkQ + partials-fa-linux64-nightly/opt: TFWT9wGHQjSD7ajkTRXRMQ + partials-fa-macosx64-nightly/opt: Hj0KpPy6TpmgKXatWy0Wag + partials-fa-win32-nightly/opt: JgxvvnE1TDO3GJ_-320S0w + partials-fa-win64-nightly/opt: Ssp3AgEhSIKvkIJcEnvxYQ + partials-ff-linux-nightly/opt: WuFmUNaORW6ZKfcuuxRV-g + partials-ff-linux64-nightly/opt: PFgrdnuUQ42u-x2ci6berQ + partials-ff-macosx64-nightly/opt: VfOTGW9HTvGACCoVgW0uUQ + partials-ff-win32-nightly/opt: T6aAhxE4T8iskiKjjiymBA + partials-ff-win64-nightly/opt: HN9EIKZ1SFWxFkzar6ktvA + partials-fi-linux-nightly/opt: N4KdM-qUT2WbwAh7SjtdRA + partials-fi-linux64-nightly/opt: b1-SfkszQEuTGrVPHDBwmw + partials-fi-macosx64-nightly/opt: cYB8Kp20SROJz5wmTaZqXA + partials-fi-win32-nightly/opt: Fh0VZHIhRVqGEGB4haEgZQ + partials-fi-win64-nightly/opt: W-yce0q1RzqtwZi0L5skRg + partials-fr-linux-nightly/opt: TxupYI60RJ-SPSsaz5t0zg + partials-fr-linux64-nightly/opt: ShEUqqv4QN-phl8c2suj8Q + partials-fr-macosx64-nightly/opt: X2XblrhtQpSyuAowxrpgHQ + partials-fr-win32-nightly/opt: MJM08x6tQeSr2njdjdlIOQ + partials-fr-win64-nightly/opt: UcfGlVXvTuK4lPMs7rAG8Q + partials-fy-NL-linux-nightly/opt: fkNYTJ8GQzej2Z-1aLbVXg + partials-fy-NL-linux64-nightly/opt: CNw1o8kjT6mojDYFwSnUng + partials-fy-NL-macosx64-nightly/opt: b7i-shXvT2qjs0tttnJq-g + partials-fy-NL-win32-nightly/opt: ChaZkeaHSgyw0O5TInPCPw + partials-fy-NL-win64-nightly/opt: BauDbnksR7K6IVQR6KnrdA + partials-ga-IE-linux-nightly/opt: ZLJBZUXARoKjmlVirq1wOA + partials-ga-IE-linux64-nightly/opt: KgGV7w99TSWqfJDgotmozA + partials-ga-IE-macosx64-nightly/opt: Yh_cmp25RvO77rTjEAqpLw + partials-ga-IE-win32-nightly/opt: In-oS7U5R1aBTQ9p0aXpVw + partials-ga-IE-win64-nightly/opt: JgsMbymHRoSB7VDhGRYopg + partials-gd-linux-nightly/opt: AQRGqvy1S4iGVQaSZgne8A + partials-gd-linux64-nightly/opt: R6hMwlfBTTmVTUHe25Ag_Q + partials-gd-macosx64-nightly/opt: LF_HwS43SceCHqiU6ZNU6g + partials-gd-win32-nightly/opt: XXE4sGooTGKVMwrmKbVjQg + partials-gd-win64-nightly/opt: KAIhNubSRZiYK8gj0TNjAA + partials-gl-linux-nightly/opt: N_EA6bt3Rkuvk7a2vF9jpg + partials-gl-linux64-nightly/opt: dadAvkxWTqG32otHnPh7PA + partials-gl-macosx64-nightly/opt: WbV5N17aQQm5M_N1w1fVug + partials-gl-win32-nightly/opt: UrSgVPL3THq8CpjYknsUtg + partials-gl-win64-nightly/opt: PHajEl5sT0GPQMUoW0zccA + partials-gn-linux-nightly/opt: RPAXYS1BTC-MizQyYGEc-Q + partials-gn-linux64-nightly/opt: TQ61u9QgTBaUe53frtqLVw + partials-gn-macosx64-nightly/opt: ASa9cs6cS_uJI_vJn666mg + partials-gn-win32-nightly/opt: PL-prStDS46tsnfY-keUnQ + partials-gn-win64-nightly/opt: PSSXKsAyS-i5pOvbONjf7w + partials-gu-IN-linux-nightly/opt: Ml-SgX4RRx627Ct4ANETtg + partials-gu-IN-linux64-nightly/opt: a7cEojv7T9S2sNw1Ur2XZg + partials-gu-IN-macosx64-nightly/opt: Uuy5UHg_StugxNySkGc1DQ + partials-gu-IN-win32-nightly/opt: ECsUd0YsSTmTilD27pSAcg + partials-gu-IN-win64-nightly/opt: QNCOAZuTQ8C_2hfsHkBIKw + partials-he-linux-nightly/opt: K4aqEXeqTUe0uNX47ieYWw + partials-he-linux64-nightly/opt: Rb3UOHCpRYu25Or90s4sNw + partials-he-macosx64-nightly/opt: GRtxYCSFT1iVQv4BFPO-TQ + partials-he-win32-nightly/opt: Aro7MFavTOWQHulzm6mMTw + partials-he-win64-nightly/opt: RjQEJT-STTKUsl-RuP7SjA + partials-hi-IN-linux-nightly/opt: Bk_VrP6FR_aBCCZwIxQfMg + partials-hi-IN-linux64-nightly/opt: DoVmle6aSIShprbtio3SDg + partials-hi-IN-macosx64-nightly/opt: VgrN5SFwScW5PvZhJVxhEg + partials-hi-IN-win32-nightly/opt: TF1oRBmHTROtF4MGZT_z_Q + partials-hi-IN-win64-nightly/opt: TWEDmUEjRfC0gRoeeJTvIw + partials-hr-linux-nightly/opt: ZCi8s9FaRMuWJyuiEu_2PQ + partials-hr-linux64-nightly/opt: BU8qhJyNSBGDw1zMcw-I7w + partials-hr-macosx64-nightly/opt: f5iQ3zNaT9CZpxSa81xJGA + partials-hr-win32-nightly/opt: EfkSfWCKS0m8LjhPY5RTSw + partials-hr-win64-nightly/opt: AFeS6oYuSEKCT5ZPP3Q9tw + partials-hsb-linux-nightly/opt: ORqq5dzWQtiZjbnvk5u_CA + partials-hsb-linux64-nightly/opt: d0_NvU7gTCuxayzwMwGLgg + partials-hsb-macosx64-nightly/opt: WXbDxGC5QSqSSHaWrwpO5Q + partials-hsb-win32-nightly/opt: UNFIqs-HTmaNdASOcOr7xQ + partials-hsb-win64-nightly/opt: elDC2DjITtyX4Vr5Eq2pjw + partials-hu-linux-nightly/opt: PrdItlPvQKy45Yxid9g6og + partials-hu-linux64-nightly/opt: IIF5eE_9RfmHUTSjDm-hQw + partials-hu-macosx64-nightly/opt: FYtNHdfHTE6TUR7n-x-hLQ + partials-hu-win32-nightly/opt: Mh7Rr_qPSBq7II4hlVr_Ig + partials-hu-win64-nightly/opt: VC9GyoHMTlax4q0gWsdQyg + partials-hy-AM-linux-nightly/opt: GcbumvRiQfiYJVknF3K5nw + partials-hy-AM-linux64-nightly/opt: O4-ve_PFSvScMzagb0QZpg + partials-hy-AM-macosx64-nightly/opt: CWiqw2Z8R2a5EuOisMcMBw + partials-hy-AM-win32-nightly/opt: T66CFfReQxa0WfmRmwWQWw + partials-hy-AM-win64-nightly/opt: efCwzyhCTcWl2qN_Ya00Qw + partials-ia-linux-nightly/opt: XK_HaMURRyugPlZFiB36rQ + partials-ia-linux64-nightly/opt: IMJBKmhkTRGeXdmCoVDP7g + partials-ia-macosx64-nightly/opt: X6D4v_7zSiqaR1XNH-jlwg + partials-ia-win32-nightly/opt: eHM_T9hzRsuhvSktcqo2iw + partials-ia-win64-nightly/opt: BHKKvCYpS56xX9niHohkJQ + partials-id-linux-nightly/opt: BISySZYERSStyimfxEfdjA + partials-id-linux64-nightly/opt: Ouy00QNIS-2ccKOSo34QTA + partials-id-macosx64-nightly/opt: R3UYh550SBmJ2cRq6Clttw + partials-id-win32-nightly/opt: KP5mseKFTRuvLWO58VqPnA + partials-id-win64-nightly/opt: fSIPFpdxTkioAymIk3oDfw + partials-is-linux-nightly/opt: Q0w4Ys0PSW6FgGwfb-7DVg + partials-is-linux64-nightly/opt: V4xZbb24RvCayqYmLe1W9g + partials-is-macosx64-nightly/opt: QNKJ3eYYQG2n75d1AjtCJA + partials-is-win32-nightly/opt: DXKc7iQjTBG9vRkl5Qk5YQ + partials-is-win64-nightly/opt: VEXXiVCtRqGeOVnW-XMm5g + partials-it-linux-nightly/opt: UzcAkXigQZmNzXRfbxkveQ + partials-it-linux64-nightly/opt: WAAJiZj6THujdjb2_GI3ag + partials-it-macosx64-nightly/opt: CnFaayYTQc2EQLm2W4MojQ + partials-it-win32-nightly/opt: bOPowrHESgqvfJ9XHxYzJw + partials-it-win64-nightly/opt: SJIZOi3sQv6I1Bh8hma-ng + partials-ja-JP-mac-macosx64-nightly/opt: egxEG__hTJiMFOwjLunXoQ + partials-ja-linux-nightly/opt: P5om5b5WRn-t2dNahTMg1g + partials-ja-linux64-nightly/opt: Gf_VJvACQL2T5E2KQcWsfg + partials-ja-win32-nightly/opt: TntFsN0qQBWBtBnus5iQRg + partials-ja-win64-nightly/opt: d4pbtiEcT5eSu2vcmgW2Nw + partials-ka-linux-nightly/opt: PZxEiTCIRWSVBSTnS8mDuQ + partials-ka-linux64-nightly/opt: V3HGTIG0TE2Fq4Sq3NY42w + partials-ka-macosx64-nightly/opt: LNuB1vbmRVeI9HfyfnPPVg + partials-ka-win32-nightly/opt: eKgYCQYbQBKuadN_uIQOMg + partials-ka-win64-nightly/opt: C3_NWKzXRCGD25XeiUi0yg + partials-kab-linux-nightly/opt: btWM0MeKQ5OWIw7TY6RSGg + partials-kab-linux64-nightly/opt: Xu7lR9VlTPqUOtRgzQfLlA + partials-kab-macosx64-nightly/opt: FRApc9oYQdmd9qbA97ecZg + partials-kab-win32-nightly/opt: fSog6IxKQeyCDgkMGaNQVg + partials-kab-win64-nightly/opt: dERn9uWCRaG_26Ztj4R8YA + partials-kk-linux-nightly/opt: bOqDTMJNQb-hrG2Lxr7m-w + partials-kk-linux64-nightly/opt: LyMj-3-YTZCnJMx6aoFhVQ + partials-kk-macosx64-nightly/opt: Vv4PgY71RketAPQ_6LVgug + partials-kk-win32-nightly/opt: Bh_v5HvBTmejRfpkm5rO8Q + partials-kk-win64-nightly/opt: YEIUuWCDQRy4Rw8WsLedTw + partials-km-linux-nightly/opt: A4cMzxbURGCjEXzDpji1Rw + partials-km-linux64-nightly/opt: WmkpblKbSKWNbgeRDKHnPA + partials-km-macosx64-nightly/opt: Zvmb8r1nRTCnvFPgvWQlMg + partials-km-win32-nightly/opt: Xk8CzuU2Q0-Dv5EiolMBYA + partials-km-win64-nightly/opt: UKK2cTG4T0akkrKTuppqAQ + partials-kn-linux-nightly/opt: ONynqXkESpyIJLdWCtkiSA + partials-kn-linux64-nightly/opt: WbKjgTZvSQWza24xRhtUCA + partials-kn-macosx64-nightly/opt: FASG2KJnT2WpyRMmwL9XrQ + partials-kn-win32-nightly/opt: A4APwXEtQMWsJP-Y844j0g + partials-kn-win64-nightly/opt: OxZgVmYfT_yAt7xTENn6cg + partials-ko-linux-nightly/opt: TkVFPbqxRmahKnEod2kZKQ + partials-ko-linux64-nightly/opt: A5Sto0MlT2q5UM0djhTKkw + partials-ko-macosx64-nightly/opt: K2rAdU-GR-2JNFQikuKDyg + partials-ko-win32-nightly/opt: Vqp8187nSSilR5djUZU-vw + partials-ko-win64-nightly/opt: Jl1S8Xf_TfafMoMxPHSlMA + partials-lij-linux-nightly/opt: QTP26wigRjuyfl9VUO_hCA + partials-lij-linux64-nightly/opt: DSKe_rCpRBiCE3gdeCevaA + partials-lij-macosx64-nightly/opt: AFiaAfoWT5q_dA103pD6Zg + partials-lij-win32-nightly/opt: LOLUQN95QlmhbCjqhxfnZw + partials-lij-win64-nightly/opt: OP_eILVfRremSBAXY0Orrw + partials-linux-nightly/opt: Tl-RP__yRoWm_VKLjq30_w + partials-linux64-nightly/opt: cDLHP0MXQ3uNOXIhmh0k9A + partials-lt-linux-nightly/opt: P7Ilzm94RaaFbiyPKg3ZcA + partials-lt-linux64-nightly/opt: OSxZQso2SZWu7xDW8B4FJg + partials-lt-macosx64-nightly/opt: MF_UX8cbQD-P2rRLsofluQ + partials-lt-win32-nightly/opt: BgjamP0mTNe1z2-ex6AObQ + partials-lt-win64-nightly/opt: Une4IYmvQd6SiabisFIkMg + partials-lv-linux-nightly/opt: YMsSm4DBQbebmAGCQTpErg + partials-lv-linux64-nightly/opt: ISEa7cAuTeSVYRrmmIijjA + partials-lv-macosx64-nightly/opt: TazzAAuZRCi6AMZ132Islg + partials-lv-win32-nightly/opt: NYIwcPQPRSijrK5mkS2Whg + partials-lv-win64-nightly/opt: WSSn31bdSr-vmqz5210dFw + partials-macosx64-nightly/opt: GiiT6ppLQCmi04NGHfXGEg + partials-mai-linux-nightly/opt: Lsip79SmS-O8O9c8MEmtcg + partials-mai-linux64-nightly/opt: F60giUPBQuWuZsrdLQYJuA + partials-mai-macosx64-nightly/opt: OfIBLC1eTqq5qqCirlNWmQ + partials-mai-win32-nightly/opt: P0FIn53DTsWEFJKAuIRprw + partials-mai-win64-nightly/opt: cYuSDhaCTeGpBwTuNIiCtg + partials-mk-linux-nightly/opt: VDHS-iUZR86vl2qBz0tAsw + partials-mk-linux64-nightly/opt: aQmzWeMBRVeNICX0AsNuow + partials-mk-macosx64-nightly/opt: aOy7-RopS8qLrTbpcHlf_A + partials-mk-win32-nightly/opt: ITBrrPYwR36LTQZzDUIflw + partials-mk-win64-nightly/opt: PuVohVqURU2kG2PN1s4iIg + partials-ml-linux-nightly/opt: Xm8yZHj3RVODqwA4PXxtjw + partials-ml-linux64-nightly/opt: AUNb3EOpTYaFkkMSAFKNBw + partials-ml-macosx64-nightly/opt: ORyCBP16Sf2fxXtVPtEc5g + partials-ml-win32-nightly/opt: WDMUQ_XVTWS00aSA6gfL2A + partials-ml-win64-nightly/opt: FuKmEcwHQEKgxjr9Boy4Gw + partials-mr-linux-nightly/opt: aCcZ8iY1QXCxkwf4Gv7IaQ + partials-mr-linux64-nightly/opt: PGKFbGlcRIWUX5W53YaboQ + partials-mr-macosx64-nightly/opt: G-7V-SzGRHSFc-ufBlRQPw + partials-mr-win32-nightly/opt: YEoT5bYNSxmgcwgu7NYryA + partials-mr-win64-nightly/opt: b-1ZeWVnRwmofhUV6HfXBw + partials-ms-linux-nightly/opt: T0Buav8lTKGGcc4D4sggDw + partials-ms-linux64-nightly/opt: Y58oLf19SLWLkhRAbcvJbQ + partials-ms-macosx64-nightly/opt: aJLb5tflQ120f1zQgCVTjw + partials-ms-win32-nightly/opt: RlvVfNlLTqmBmPwnYKeUhg + partials-ms-win64-nightly/opt: eYP3d-93RbWJrNyw0pcG-A + partials-my-linux-nightly/opt: YCrqmWv3R4yYXs0Lzjcogg + partials-my-linux64-nightly/opt: M7ZsSqfyTAK8OLRG3Qedkw + partials-my-macosx64-nightly/opt: HJ3wrM0gStKhl5xoJh4pBA + partials-my-win32-nightly/opt: GSh-iBOqT0mq8Xr49ShwaQ + partials-my-win64-nightly/opt: PViOhvw1SnaIoRXWvFJR2w + partials-nb-NO-linux-nightly/opt: H8509MOfQm2a0n0VLPP3xw + partials-nb-NO-linux64-nightly/opt: ZxVAwHOYSXCZfrRg6FcMnA + partials-nb-NO-macosx64-nightly/opt: aNdv8HnITzydC9b1WSvnew + partials-nb-NO-win32-nightly/opt: TNWFzvZ-QS6Z3Pi8C5ebhg + partials-nb-NO-win64-nightly/opt: Ml8G8JvLQrK4mnElyJEDvg + partials-ne-NP-linux-nightly/opt: UsxcyFksT_2rNfk25VlUWQ + partials-ne-NP-linux64-nightly/opt: DRSEhc8VRyKkTPGLkIvqeg + partials-ne-NP-macosx64-nightly/opt: KzLnyMA7Ryyl-l_0JtTF0A + partials-ne-NP-win32-nightly/opt: HpzvQ5s7TlSLMr1ajbq02Q + partials-ne-NP-win64-nightly/opt: IYT0A-PnS8CdTHZa3RU0vQ + partials-nl-linux-nightly/opt: ElMB-MLjR3qV7dGK_pg1rg + partials-nl-linux64-nightly/opt: DHX068zaRHyCROy8x0lDsw + partials-nl-macosx64-nightly/opt: fMaW0JFSRVOIQ-ISt6kWdw + partials-nl-win32-nightly/opt: Qhf1Aze-SSOCFwyQKCE98Q + partials-nl-win64-nightly/opt: HyjXOdKST7GKX3avCY0Cfw + partials-nn-NO-linux-nightly/opt: I9SAOxK5QviqVmR8eX-Jqw + partials-nn-NO-linux64-nightly/opt: Hy0ePsUeS8aAZ6vaB8DZfA + partials-nn-NO-macosx64-nightly/opt: F1_OVm6ITY-osALxjLvUmA + partials-nn-NO-win32-nightly/opt: Mm1eCihkSuSfD0PXX4HmMg + partials-nn-NO-win64-nightly/opt: RmYhh7-kQlqYZmPOQoxvxA + partials-oc-linux-nightly/opt: DBpbLsUIRBGwssSwzuXKfg + partials-oc-linux64-nightly/opt: LKlUrMDXRaqW9aVgsS_oNQ + partials-oc-macosx64-nightly/opt: V6Y3x_7ySPqOeqEkNefJbw + partials-oc-win32-nightly/opt: BOAA0j7dRNGzRd2S0HS0Ig + partials-oc-win64-nightly/opt: GoyQLmhZRG609-cEpJEDDg + partials-or-linux-nightly/opt: OQTseTWcQTWTXpn5t0l1hA + partials-or-linux64-nightly/opt: W8jxDSgYQK6AoQSgXCL4eQ + partials-or-macosx64-nightly/opt: XV0NQpteSQigkxw2WKlfkA + partials-or-win32-nightly/opt: YTHK8v9ZS_ijrDRS660KTA + partials-or-win64-nightly/opt: POOfpWEiSyaYrLIRkdqiDw + partials-pa-IN-linux-nightly/opt: UTxKnWhXSkyNvSESHCPo7w + partials-pa-IN-linux64-nightly/opt: D9fWTsTNRZO0Bu84cwa19Q + partials-pa-IN-macosx64-nightly/opt: NhCD2LgnR1y__BfXrPOtcw + partials-pa-IN-win32-nightly/opt: Sc6D38YDR_COlOBvmHyFlQ + partials-pa-IN-win64-nightly/opt: ADYwzMNCTQCc8ZOv3CtJrw + partials-pl-linux-nightly/opt: dB3De6NrRKOCxR9P8F3bWQ + partials-pl-linux64-nightly/opt: FFXiF26jSr6Kfnkurr0lxQ + partials-pl-macosx64-nightly/opt: VeCZXJMRSESCz4zDN-Afxw + partials-pl-win32-nightly/opt: JqIBOpcbSbGWhSwE6cc24g + partials-pl-win64-nightly/opt: JIM9HUVaQ6-qDPR1XIR2AQ + partials-pt-BR-linux-nightly/opt: Woi-TPT8R3210ZlUk9Idrg + partials-pt-BR-linux64-nightly/opt: A-6J1DE1QXuzYm89LM16zg + partials-pt-BR-macosx64-nightly/opt: Vs3MrpbuSWKRR1kbJb0bOQ + partials-pt-BR-win32-nightly/opt: dazTOEvCSG6TB3NDQLk2cA + partials-pt-BR-win64-nightly/opt: O7PtroRjRJmbQl1ctXe1hg + partials-pt-PT-linux-nightly/opt: GX0bD7tLS82ai5LSX8V_Cg + partials-pt-PT-linux64-nightly/opt: etJL1kcHSeCeORI1SYXFjQ + partials-pt-PT-macosx64-nightly/opt: d2Htf4xbTzmA-9rZqcEeLQ + partials-pt-PT-win32-nightly/opt: KQ1DQukCR8C3Y9z50JxwYA + partials-pt-PT-win64-nightly/opt: CKueCp8XSgeXxDXqm_NrRA + partials-rm-linux-nightly/opt: Iuty04TaTiKuEMAXukbwqw + partials-rm-linux64-nightly/opt: E7nOPvS_Rq6ka9DzPXJJYg + partials-rm-macosx64-nightly/opt: LOJBiys0RW2BIYyVmiv5NA + partials-rm-win32-nightly/opt: eCWfbAxVQ4-BUTQCqp_BbQ + partials-rm-win64-nightly/opt: B2yQmXHLRZKqv_9dlK_f6A + partials-ro-linux-nightly/opt: CUZhFilIS_W2uCDmQmPMeQ + partials-ro-linux64-nightly/opt: JyiPPZ80RNyMMuELtTkpQg + partials-ro-macosx64-nightly/opt: EMGuNP82Tmu0VZFGXT0r-A + partials-ro-win32-nightly/opt: DTm8MGtTTm2lhwRIeHK_sw + partials-ro-win64-nightly/opt: a4qFw5WNSx2VLNvacihEBQ + partials-ru-linux-nightly/opt: cTgBcCdiSQ-tVe3kIM_uXg + partials-ru-linux64-nightly/opt: R26YS745TImC8wv1jh1zMQ + partials-ru-macosx64-nightly/opt: LUgJPl60RN2AbRYlUcqapw + partials-ru-win32-nightly/opt: e42u1h2gTTCDg_3DjbbG1Q + partials-ru-win64-nightly/opt: LMqZ7hdAQVGVKU4irCHCTg + partials-si-linux-nightly/opt: eYhNIhonT-icoSn7JwyR4g + partials-si-linux64-nightly/opt: KM_plii9QZaAMrzuBpc_tg + partials-si-macosx64-nightly/opt: UqeVh2X6RB2aeeaueZeUOw + partials-si-win32-nightly/opt: ZZpKLBUlSlKw9dXte3d1xg + partials-si-win64-nightly/opt: YPQSmk08ScmEuNbspPL2Lw + partials-signing-ach-linux-nightly/opt: HFagEw5PRHWko0LcSoNzsw + partials-signing-ach-linux64-nightly/opt: EA4Z7LKVRf-oSGUJ2qIo9g + partials-signing-ach-macosx64-nightly/opt: cYc-ETRJT-2ifpYolV6RWg + partials-signing-ach-win32-nightly/opt: CK6XYlXnTg2ddGOvvQwQ2w + partials-signing-ach-win64-nightly/opt: KBtczv6YTdegeegD30FU5w + partials-signing-af-linux-nightly/opt: H6_5duA4SquJnxCVSPCAKQ + partials-signing-af-linux64-nightly/opt: D6L560D5SJGpwCzRsFBUKQ + partials-signing-af-macosx64-nightly/opt: QpfXW3h3RTKVgk0NyDZwhQ + partials-signing-af-win32-nightly/opt: GlUhGbiEQhizNjub1v7VxQ + partials-signing-af-win64-nightly/opt: FgkXgoDeSdyYwLBliaS9mw + partials-signing-an-linux-nightly/opt: LkJsluZdQAmDxL0pt25aGQ + partials-signing-an-linux64-nightly/opt: XhRchsuFTv2wM9yKa2NNiQ + partials-signing-an-macosx64-nightly/opt: DuqA1rfhRbqvmFPjd7NIjg + partials-signing-an-win32-nightly/opt: YVGXtH8YRT6veIz34kWyMA + partials-signing-an-win64-nightly/opt: RT4bmOkEQzmJERVzWmzC0A + partials-signing-ar-linux-nightly/opt: KXcxo6UPQXiSCDgHaUqyzw + partials-signing-ar-linux64-nightly/opt: e_zXs8UiRCeHHutXWfAenQ + partials-signing-ar-macosx64-nightly/opt: Obys75-8RyuY6pu0sAbsAQ + partials-signing-ar-win32-nightly/opt: a_GJS6KhSWGq1FopDtBUlw + partials-signing-ar-win64-nightly/opt: a_WIZC8cSNinUijvPQgpFg + partials-signing-as-linux-nightly/opt: YEwEf0ZfTPKdOIe4hpAW8g + partials-signing-as-linux64-nightly/opt: KWsbcX_gTWOyrxDswl1Y1Q + partials-signing-as-macosx64-nightly/opt: Uk6SVnrlRDWMp6UtTdJ1oQ + partials-signing-as-win32-nightly/opt: F6rgRPTyS6efVZQHTr0sXQ + partials-signing-as-win64-nightly/opt: SxqzQXFCSp-Sx0PhVfFn0Q + partials-signing-ast-linux-nightly/opt: HfkVK97ISYGByQ1Hlio57w + partials-signing-ast-linux64-nightly/opt: EEZWFezOSWy5N2h74zpULA + partials-signing-ast-macosx64-nightly/opt: XI1QB5WhQTeOCMC-hh-AxQ + partials-signing-ast-win32-nightly/opt: L1IVg43UTRmL419hX5_PCw + partials-signing-ast-win64-nightly/opt: e7Z6oBnRQYOCfuBK221qNA + partials-signing-az-linux-nightly/opt: MQS3QvTSQoGaB5xIMV6vEA + partials-signing-az-linux64-nightly/opt: Ha1J4_z8QqSmGdRQxay5RQ + partials-signing-az-macosx64-nightly/opt: RBnRVYqeSoKeHb3o1YRLkQ + partials-signing-az-win32-nightly/opt: NiGMcATEQM-q0GCYImimXg + partials-signing-az-win64-nightly/opt: AON1fwXjT0qRXec4SeINLA + partials-signing-be-linux-nightly/opt: O0UIHhJuSkKkcCn6dsx_2Q + partials-signing-be-linux64-nightly/opt: QkxIo9bZTxK2Kx7eCxLBOw + partials-signing-be-macosx64-nightly/opt: YTVJd7S_S1CO8ika0lrNYA + partials-signing-be-win32-nightly/opt: M11M0QkWQzivmPqIycUFxQ + partials-signing-be-win64-nightly/opt: RtZpj-kkQOykwwI-FGuQAw + partials-signing-bg-linux-nightly/opt: BVAMwcSRS8SICXv-UsFVgQ + partials-signing-bg-linux64-nightly/opt: U5X48KjBRbmtz_sO0nVXww + partials-signing-bg-macosx64-nightly/opt: A1WVequiT3G1rR4zV_b0dQ + partials-signing-bg-win32-nightly/opt: QShPE4XEQbqxDf4oxgI7wQ + partials-signing-bg-win64-nightly/opt: Y5xCchOkSwqNCuAQZg_IQQ + partials-signing-bn-BD-linux-nightly/opt: GYHH1qzzQNOShwSuMPT_dA + partials-signing-bn-BD-linux64-nightly/opt: I8wsKm7dTDWIA644pQ8jIg + partials-signing-bn-BD-macosx64-nightly/opt: Y_IKp-vMSZ-IGAaHcMIuiQ + partials-signing-bn-BD-win32-nightly/opt: Kr0U-_iyTUubL0HujNwzrA + partials-signing-bn-BD-win64-nightly/opt: HM1N7b6BQT-IjC7-4Y6RSA + partials-signing-bn-IN-linux-nightly/opt: eLGyl7IpRju1MLbgf96VvQ + partials-signing-bn-IN-linux64-nightly/opt: XNHyuOBZTROV7DKzkh_Cfg + partials-signing-bn-IN-macosx64-nightly/opt: Hw9aEoUzS2S9cqD7Ky8s4g + partials-signing-bn-IN-win32-nightly/opt: ewoQX_S7RbCKcdmLN_n5_w + partials-signing-bn-IN-win64-nightly/opt: DVRPhidlQzm-urNjwa36vA + partials-signing-br-linux-nightly/opt: Ko4bJKcbSUWEn0NWpr02Qg + partials-signing-br-linux64-nightly/opt: LLVobCTFQnWxCkrL1TRpNw + partials-signing-br-macosx64-nightly/opt: SodLk-Y3RxmXtlQr37TJOA + partials-signing-br-win32-nightly/opt: RArn2yHQSWSBotx3R6_tBw + partials-signing-br-win64-nightly/opt: eu4ZKfL2QJGAwFUFBXSd3Q + partials-signing-bs-linux-nightly/opt: EPC2N4JyRnOWMYusK5NHIg + partials-signing-bs-linux64-nightly/opt: Qmo0WSmlS6m6idyP2xLYUg + partials-signing-bs-macosx64-nightly/opt: eWvbs-u-QT-cc8rhCZQytA + partials-signing-bs-win32-nightly/opt: BrA99_dwSVKmxyDkYFU2kQ + partials-signing-bs-win64-nightly/opt: HEJdG0cRSum5JMTUhQMCOA + partials-signing-ca-linux-nightly/opt: ZcVFIKpURKqqxNfdpSjRRw + partials-signing-ca-linux64-nightly/opt: TAphjdjiT2G7XLLpeC7kfg + partials-signing-ca-macosx64-nightly/opt: LsiLNm6sRuSr0zJYFPJWpQ + partials-signing-ca-win32-nightly/opt: GDGSd5lESLuCkIkAYlYRdg + partials-signing-ca-win64-nightly/opt: Wpy5EApfSe2bQhuvf_ZOmw + partials-signing-cak-linux-nightly/opt: HiHNbu-8QUWe_BUCLF7jkQ + partials-signing-cak-linux64-nightly/opt: fHlNwIRQSr2VjN5xexZ2Gg + partials-signing-cak-macosx64-nightly/opt: I0gqfrupSdmXR0X2lJXysg + partials-signing-cak-win32-nightly/opt: f7aafgJeS9Sdf8qMaMfDow + partials-signing-cak-win64-nightly/opt: cxow05HzSviZ-IkGdYO4qA + partials-signing-cs-linux-nightly/opt: OO8zctuNRrSdqEVNUWXV9w + partials-signing-cs-linux64-nightly/opt: BNr7mSXsTmCYL0MaauQo_w + partials-signing-cs-macosx64-nightly/opt: Cf25-AqCRuCiK6_NFtWzEQ + partials-signing-cs-win32-nightly/opt: T8FZdsJxTwurlOKi9J7JWg + partials-signing-cs-win64-nightly/opt: JEIbFVeAQeKNPNEGe4mJlw + partials-signing-cy-linux-nightly/opt: LzWo0-C1Sj6xQ1I9gP5clw + partials-signing-cy-linux64-nightly/opt: fbwNi0btTIGvQDLAKsHuiA + partials-signing-cy-macosx64-nightly/opt: WCOoDBq2TQaCttDN_6znzA + partials-signing-cy-win32-nightly/opt: KQvBxnirTYKG4xNP00VXwQ + partials-signing-cy-win64-nightly/opt: AwMafUj-R92xuGdiCkUJFg + partials-signing-da-linux-nightly/opt: Bbsdc8FnT2ay9YbRdvM0_g + partials-signing-da-linux64-nightly/opt: Hu1zrfBQQ1KF91hKGW9UHg + partials-signing-da-macosx64-nightly/opt: JkfUpPYiT4qCz4ttUR65mQ + partials-signing-da-win32-nightly/opt: VgMJX9OpRPW89fopuCgcWA + partials-signing-da-win64-nightly/opt: GKGjqNjsT6yQyKsyJPZlmg + partials-signing-de-linux-nightly/opt: QylCEFarT_ypOPwGOT6LLA + partials-signing-de-linux64-nightly/opt: Ud0hPUXHSH2fqpwCUnin5w + partials-signing-de-macosx64-nightly/opt: ddGuSWhsQ0i3GFaG9Ymd4Q + partials-signing-de-win32-nightly/opt: IVIf__2NRIiuL82xxtEjEg + partials-signing-de-win64-nightly/opt: S3c7_TuaTKi8ZvKz_pdHbg + partials-signing-dsb-linux-nightly/opt: RxwnY4l6T9CEIl9XEZdnuA + partials-signing-dsb-linux64-nightly/opt: ZGgYj0B-Qd2wupmwKr9eww + partials-signing-dsb-macosx64-nightly/opt: cgRQU0D6SvSQ6fQKzENk8A + partials-signing-dsb-win32-nightly/opt: IMsGQWQkQByq3qDcP9He9g + partials-signing-dsb-win64-nightly/opt: LK68qkThTwKaq_4quF1hVA + partials-signing-el-linux-nightly/opt: bnI_6HowSuGvuFuMZpe1rQ + partials-signing-el-linux64-nightly/opt: VUcnhNvNQmeGlqh-km-WLA + partials-signing-el-macosx64-nightly/opt: W_d_xbCRTg6AUQO-DSOZWA + partials-signing-el-win32-nightly/opt: dHaKYDumQp-M6JbCxTAJhw + partials-signing-el-win64-nightly/opt: ebfX1CUkSy2UaiGUNGbN_w + partials-signing-en-CA-linux-nightly/opt: KexqKrU5Tl-7fIDpzrEnzQ + partials-signing-en-CA-linux64-nightly/opt: aRoyCOv4RXS6EfN3ZnJsig + partials-signing-en-CA-macosx64-nightly/opt: SYabqzqkSJCQW28HrbaUoA + partials-signing-en-CA-win32-nightly/opt: fhDr14HNT5SRUDUSC56kQg + partials-signing-en-CA-win64-nightly/opt: RdhT8RLbQOyp5JDnB309Cg + partials-signing-en-GB-linux-nightly/opt: WcVUrGoQTzKmS9kv6dnHGw + partials-signing-en-GB-linux64-nightly/opt: ej0ETBXMRFGIdkkfKSZWxQ + partials-signing-en-GB-macosx64-nightly/opt: F10k1RjWQ1SnNjTwSxX6nQ + partials-signing-en-GB-win32-nightly/opt: Fbuz-W8SR1irbzPcMwq8tg + partials-signing-en-GB-win64-nightly/opt: dAiMHA7PTHqMr3iH3n8t-w + partials-signing-en-ZA-linux-nightly/opt: Z92VamhpR2qqmC9VmQ9M6w + partials-signing-en-ZA-linux64-nightly/opt: JX_7qmuUTv6z_vPlt_1GTQ + partials-signing-en-ZA-macosx64-nightly/opt: JP0BotuQRhSIwdz8C6LoQQ + partials-signing-en-ZA-win32-nightly/opt: WRxZDrwsRu2SBNVLLNPJDQ + partials-signing-en-ZA-win64-nightly/opt: IzOer88STTmEO5Oq1dsBCA + partials-signing-eo-linux-nightly/opt: PF9xUFrYRWamzw8lurLWKA + partials-signing-eo-linux64-nightly/opt: FtyStjxyTr60GVnaSMO2OA + partials-signing-eo-macosx64-nightly/opt: f3un4mmyQh6oeGAsG36L2Q + partials-signing-eo-win32-nightly/opt: BmiMLx6zQ6KFvcWwAP-zcA + partials-signing-eo-win64-nightly/opt: RIQ6gSGJTDGjwbRnPXYPYA + partials-signing-es-AR-linux-nightly/opt: NGBOGCF9RwKDakTfo-dKQA + partials-signing-es-AR-linux64-nightly/opt: UpnapbyJTk2i4HMflP9PFQ + partials-signing-es-AR-macosx64-nightly/opt: B5A3dglNTMmv5EoZJH-Bng + partials-signing-es-AR-win32-nightly/opt: Io6JVkZVS_KQ6NJRxoG1RA + partials-signing-es-AR-win64-nightly/opt: BlqZDY_FS3SEKAVfNSNUfQ + partials-signing-es-CL-linux-nightly/opt: bYSIoooTT3eQAb8Civio5Q + partials-signing-es-CL-linux64-nightly/opt: Fu3jHQUwR_ugWRD-JdIFgQ + partials-signing-es-CL-macosx64-nightly/opt: Z0js_gokTs66aVV1dN8Qbg + partials-signing-es-CL-win32-nightly/opt: FSkL5IotSQufAVK5MxEwgw + partials-signing-es-CL-win64-nightly/opt: XlaNvQ-PRZGQgHtJcFavHQ + partials-signing-es-ES-linux-nightly/opt: ccy56MZHTLCqLzOkkMDGVw + partials-signing-es-ES-linux64-nightly/opt: XO8ds6_jT0GkyNSHT9L2_A + partials-signing-es-ES-macosx64-nightly/opt: SUA10Z2QRny7XeiWtj0BWQ + partials-signing-es-ES-win32-nightly/opt: Xo_N9y8dRFa-lnznwi8nmQ + partials-signing-es-ES-win64-nightly/opt: Kx4to7tDQwCGENo2oYcXRg + partials-signing-es-MX-linux-nightly/opt: OXCN98JzQrCfx6BZ7UyYiw + partials-signing-es-MX-linux64-nightly/opt: bZPQHuMwRVKZHYhxDeWx2g + partials-signing-es-MX-macosx64-nightly/opt: fR-rcq_PQ7KVKd8bkg0WwA + partials-signing-es-MX-win32-nightly/opt: Mc6i5eT6RSulcMIrTljHKQ + partials-signing-es-MX-win64-nightly/opt: Or3pCZKdTUWzwpcNiovRGw + partials-signing-et-linux-nightly/opt: A_3SLX3PSRCOAl9_6US87A + partials-signing-et-linux64-nightly/opt: TpIe_UPTSySqyzOCEsJbgQ + partials-signing-et-macosx64-nightly/opt: LU4C3SNbTC2zJYrfSLco9A + partials-signing-et-win32-nightly/opt: Lle8PjP5QWSDBNgRLfklIQ + partials-signing-et-win64-nightly/opt: FPLIVD5TQTeo51W-jvSaWA + partials-signing-eu-linux-nightly/opt: d2_4rImRRke20XECeM72GA + partials-signing-eu-linux64-nightly/opt: BOEaNAmgRAu_MeHvju31uA + partials-signing-eu-macosx64-nightly/opt: dSuhCH8GR0KqEnrNlE0B7g + partials-signing-eu-win32-nightly/opt: eCx_wgFeRzSpAdLezIlUYg + partials-signing-eu-win64-nightly/opt: a1lri6SBQ72NOSHE-EGXCA + partials-signing-fa-linux-nightly/opt: VS28G3MyQqyGS2I0s9Lgbg + partials-signing-fa-linux64-nightly/opt: Q50vnYp5RY-LutMJO9mHqg + partials-signing-fa-macosx64-nightly/opt: GDWsUneZRiuy38w7bPoTlw + partials-signing-fa-win32-nightly/opt: fn0JzJJIQQC7_Fxzkb4e7w + partials-signing-fa-win64-nightly/opt: TLU4BYF4T-etQCR3Iakd2g + partials-signing-ff-linux-nightly/opt: TM1_-JnzSyC6AGrFIcmI7g + partials-signing-ff-linux64-nightly/opt: GIUyaFk7TXGdUkCzE5XqSA + partials-signing-ff-macosx64-nightly/opt: FRqPmANTQueDELNw0x5RAQ + partials-signing-ff-win32-nightly/opt: cScEorCgQamzPzdkTPtoZQ + partials-signing-ff-win64-nightly/opt: FGfC0EHAQpq0BzquPUj5vw + partials-signing-fi-linux-nightly/opt: R3yGBKNQQFi9xxbLib4ukg + partials-signing-fi-linux64-nightly/opt: RsFqty04TZapZbt-s3e1_g + partials-signing-fi-macosx64-nightly/opt: RhiB5JCpQAye2g-mxiCTjA + partials-signing-fi-win32-nightly/opt: TMXpLGN5S9mr2CRLT9eLpg + partials-signing-fi-win64-nightly/opt: ILBBSmBDTA-8KZ_z1opy_g + partials-signing-fr-linux-nightly/opt: Ql377gyeRraRWU94shN_UA + partials-signing-fr-linux64-nightly/opt: XbS7JlEaQ7agKr4Ek6xjuw + partials-signing-fr-macosx64-nightly/opt: UV62X3QiTiKxHbxuGdTv6Q + partials-signing-fr-win32-nightly/opt: GlSmvNGUSemonY_BQdh9VA + partials-signing-fr-win64-nightly/opt: UB0yL3LETwm2OUdbgaCXwg + partials-signing-fy-NL-linux-nightly/opt: dBL1gFIORqa5Uog4-qvE2g + partials-signing-fy-NL-linux64-nightly/opt: OcKbh_yvSd-gJT32Txjadw + partials-signing-fy-NL-macosx64-nightly/opt: B-gJHqn4RqWwF8DuUgihRw + partials-signing-fy-NL-win32-nightly/opt: Sey8SaESSv-c_QWP8MI8qg + partials-signing-fy-NL-win64-nightly/opt: YvGghd8PQJKrok5ovA6AfA + partials-signing-ga-IE-linux-nightly/opt: fBh51wkvSsOhnu7HkKfYbA + partials-signing-ga-IE-linux64-nightly/opt: WmHxZmWTR1unkmpq5cG_hg + partials-signing-ga-IE-macosx64-nightly/opt: ZR4DzfcwR52257vhxUSsRA + partials-signing-ga-IE-win32-nightly/opt: YiHK6uWORAGD9m2bqkx8QA + partials-signing-ga-IE-win64-nightly/opt: eI1MjR05RMmonrB-Mp4hVQ + partials-signing-gd-linux-nightly/opt: Tgfo8KPyTQ-Xg6KKgvET5g + partials-signing-gd-linux64-nightly/opt: QeFJ8p9KSo-KMztoRmNe_g + partials-signing-gd-macosx64-nightly/opt: O3MenUtxTW6ju-Mz0p5d3Q + partials-signing-gd-win32-nightly/opt: TNsIc8oKQ9q3q7MB1egYyg + partials-signing-gd-win64-nightly/opt: Qk6oNwB9SJCDXWLrwouK6A + partials-signing-gl-linux-nightly/opt: X2aksfBRSOKQ7hfCMhLTAg + partials-signing-gl-linux64-nightly/opt: ba4B8fRPQc2WMuQNIkaMSw + partials-signing-gl-macosx64-nightly/opt: Tb2akjwzQKCYujY_WCg95g + partials-signing-gl-win32-nightly/opt: JLajOHWxTaKlVqkgteYcdA + partials-signing-gl-win64-nightly/opt: AxChlgBZSl-XtI3e4upSYQ + partials-signing-gn-linux-nightly/opt: XPpHiw64RMiXu8qVjG9z7w + partials-signing-gn-linux64-nightly/opt: TvUzRCyDSaK3CSEdvXh-ig + partials-signing-gn-macosx64-nightly/opt: GxkMB9KpSRKQ_5H_jISE0w + partials-signing-gn-win32-nightly/opt: Vbkn7xDJRnWswYeFLhY5dw + partials-signing-gn-win64-nightly/opt: D4pMOk63QbGgAsAIOfHO_A + partials-signing-gu-IN-linux-nightly/opt: MUcMTwqUTLSb4ZJSBhFpCg + partials-signing-gu-IN-linux64-nightly/opt: ML3HWnMFTB-Or1kv2sk9gg + partials-signing-gu-IN-macosx64-nightly/opt: MJ1vbV4VT_KoQekXowifQg + partials-signing-gu-IN-win32-nightly/opt: T8PfnsuHR4ekjOoD4psn3w + partials-signing-gu-IN-win64-nightly/opt: BrgHX4MoRPG2NrE6pcb_Gg + partials-signing-he-linux-nightly/opt: PFb3HQGXTweIY3XJ-cau5w + partials-signing-he-linux64-nightly/opt: GYqeZYSrQwyOXQ0YUbJdQg + partials-signing-he-macosx64-nightly/opt: R0Vnc7FFRa6eZ_4t1L4vlA + partials-signing-he-win32-nightly/opt: cZWsMXS1SuWWPpSiYMQv2g + partials-signing-he-win64-nightly/opt: CRzdIslfSiaQJtpNgtiMag + partials-signing-hi-IN-linux-nightly/opt: bYwOOf6gQpC8XJUxX8I8Eg + partials-signing-hi-IN-linux64-nightly/opt: CSaK7ds3ScGSS_sTpRNzkA + partials-signing-hi-IN-macosx64-nightly/opt: BWZ86PHLQ2mQCFyBl68EFQ + partials-signing-hi-IN-win32-nightly/opt: UaVYC3PRR_yFYDqOllr3HQ + partials-signing-hi-IN-win64-nightly/opt: LQByOrgaS_mjjWm1jGvxJg + partials-signing-hr-linux-nightly/opt: P6tSPi4xQbinPVF2-aMnYw + partials-signing-hr-linux64-nightly/opt: B4JzROXqTYiHPzoD_Z6hSA + partials-signing-hr-macosx64-nightly/opt: K06XBPpTSiWdD0qXnzP8lw + partials-signing-hr-win32-nightly/opt: N00BdfQsQPyOjh_grOwNvA + partials-signing-hr-win64-nightly/opt: TGQUf_AsTDGE0uIh5_tZbw + partials-signing-hsb-linux-nightly/opt: Jj9OBJ5yTTySd8MfjtLBPg + partials-signing-hsb-linux64-nightly/opt: XcUuO7QRTMSpEehZwbLJbA + partials-signing-hsb-macosx64-nightly/opt: VNIpeSCzRCqabHOwTSEKhw + partials-signing-hsb-win32-nightly/opt: BhpMcqIsT8mtyzMRA6jHOA + partials-signing-hsb-win64-nightly/opt: V4TNu5KvSRuoOkTpoqr37A + partials-signing-hu-linux-nightly/opt: cJz-cuSTSgm1Uz3Td34R3A + partials-signing-hu-linux64-nightly/opt: KbgqBmS-Q7qzLQv8O0tm9Q + partials-signing-hu-macosx64-nightly/opt: EV-7LMn6QLS4n_cTnHl5YA + partials-signing-hu-win32-nightly/opt: NE_C5y9lRsihW4OXTUdVdQ + partials-signing-hu-win64-nightly/opt: FZqPZgLJTMyauMv4fsWlZg + partials-signing-hy-AM-linux-nightly/opt: KnH5x5D0SdOjdaTsONNUiw + partials-signing-hy-AM-linux64-nightly/opt: VmtiApuBSVCUejnGpshcUg + partials-signing-hy-AM-macosx64-nightly/opt: B08V2jHKR5mQqn8yoj7F5A + partials-signing-hy-AM-win32-nightly/opt: YsBzuxSlQca7cq-3vzFBFQ + partials-signing-hy-AM-win64-nightly/opt: FQNxPswTT5WfyqX0Igoc9g + partials-signing-ia-linux-nightly/opt: GsuIC61ZTJqhqEDOQJcsnQ + partials-signing-ia-linux64-nightly/opt: UVMeI2NiT6yDVWeTcyvc6g + partials-signing-ia-macosx64-nightly/opt: aTBf6wjIRW2nHKdxQNFLjQ + partials-signing-ia-win32-nightly/opt: Jyh9O_9xSrWFxbf3lbVquw + partials-signing-ia-win64-nightly/opt: AGuc-JPYSN2Kv0J6co6E5Q + partials-signing-id-linux-nightly/opt: Z9GOhgqyQ1ecKXOQ7YG7zA + partials-signing-id-linux64-nightly/opt: GIXlEFz0ToS6Tq8IG_m9Ww + partials-signing-id-macosx64-nightly/opt: dJ6pTUBrRmK1wCeQgv70jQ + partials-signing-id-win32-nightly/opt: U1ERee9iSqeJtrVYlUx6mw + partials-signing-id-win64-nightly/opt: ZZxeCI5CQGih9JRSZiA_KQ + partials-signing-is-linux-nightly/opt: CNumvUjkQWSzTQvuyMG_Ig + partials-signing-is-linux64-nightly/opt: F0nFSsjOQlGY8i0lLK5rpw + partials-signing-is-macosx64-nightly/opt: NWoqmB3AQduqMS8JpPCIUg + partials-signing-is-win32-nightly/opt: CDkv9y7PTVajXASwmIZA7A + partials-signing-is-win64-nightly/opt: PoeEmMQzQMW6j56-RxhMSQ + partials-signing-it-linux-nightly/opt: TSQMtMUkTsaUoUKUueFryA + partials-signing-it-linux64-nightly/opt: W93E81CoTi-sKwOshDr5yQ + partials-signing-it-macosx64-nightly/opt: QqRKOt5lTH2xHoiaaQkR0Q + partials-signing-it-win32-nightly/opt: HVVMRKcHQwWMrua7NhR9Dw + partials-signing-it-win64-nightly/opt: EyxoDx3vQKyFoD4CZUlUAA + partials-signing-ja-JP-mac-macosx64-nightly/opt: DVqhD94iQWe2GckkHGReow + partials-signing-ja-linux-nightly/opt: SyvHN7MtSgCx5Vy3HZAGUA + partials-signing-ja-linux64-nightly/opt: EVaYGAPeT5anllaYjDb7BA + partials-signing-ja-win32-nightly/opt: GYTxKbyoQd-TnqZcFYoZAw + partials-signing-ja-win64-nightly/opt: e393S4laRGKKssU0JeLffg + partials-signing-ka-linux-nightly/opt: EJ7bX6SGQ3qOq8K6C6f5cQ + partials-signing-ka-linux64-nightly/opt: etmvNo6NSy-1gvp5YNLOKA + partials-signing-ka-macosx64-nightly/opt: DmeQke20SiygkTDvXkPVBg + partials-signing-ka-win32-nightly/opt: bdoYOeNuT7uGvnaydgjndA + partials-signing-ka-win64-nightly/opt: eYzOV94qTMC6a7FY3rSO-w + partials-signing-kab-linux-nightly/opt: BA_UXBZzTkmhnfaoPAY6Hg + partials-signing-kab-linux64-nightly/opt: BA3VFIbsSp21UOuqh9mmIg + partials-signing-kab-macosx64-nightly/opt: eGjpT-hlRdGe6pvyYsW_Rw + partials-signing-kab-win32-nightly/opt: WWQiUbynRlKMIgCVy-muYg + partials-signing-kab-win64-nightly/opt: MuFBw4SyQSKmGy8uBxhGzw + partials-signing-kk-linux-nightly/opt: UCmRLEPcQiGD4Wo4RAHczA + partials-signing-kk-linux64-nightly/opt: HpyEZS5EQVKJlncwXKSkLQ + partials-signing-kk-macosx64-nightly/opt: RT8BYKVgR1SXSWB67G7lFA + partials-signing-kk-win32-nightly/opt: BEMAYLXcTjeBwR2p2CW0dQ + partials-signing-kk-win64-nightly/opt: GdAZzAXFRRSSSQz6n9tt1w + partials-signing-km-linux-nightly/opt: EE9z3RHOT32TM2azvvEAFw + partials-signing-km-linux64-nightly/opt: fDZzeYpMTvK02gS-qPiRFw + partials-signing-km-macosx64-nightly/opt: fZ9A6gpjQfSlA6zIE9eoJw + partials-signing-km-win32-nightly/opt: Ib6mF0QoRiOKiYhAkorleQ + partials-signing-km-win64-nightly/opt: N66n0iOPRLeruEheLfRY4A + partials-signing-kn-linux-nightly/opt: b3JFNvs2Rf-0X7FvUbHyfw + partials-signing-kn-linux64-nightly/opt: BxKGd83cSpOZP24zRQOFlQ + partials-signing-kn-macosx64-nightly/opt: Ji_0OqfzRXWjAzRDCDN3tA + partials-signing-kn-win32-nightly/opt: QWnDwSeEQg-9ZGXk8G--EA + partials-signing-kn-win64-nightly/opt: SKcgSrlaTQ6vNV5dOcguUw + partials-signing-ko-linux-nightly/opt: LNCiEW61Tla6tXGayl71Pw + partials-signing-ko-linux64-nightly/opt: SpjudpTOTG6qTkugs_657g + partials-signing-ko-macosx64-nightly/opt: Sb7QGroSTY2q0Vg5mTOj8w + partials-signing-ko-win32-nightly/opt: IB6rqpxIT1ayCwizW1JMkQ + partials-signing-ko-win64-nightly/opt: KCoAr5zLTTSJ8N10_UnhBw + partials-signing-lij-linux-nightly/opt: W3wPzV44SmKhZMzpL4kM1Q + partials-signing-lij-linux64-nightly/opt: Ye2ry2ccTISAoOvntiR7Nw + partials-signing-lij-macosx64-nightly/opt: XtijKcB0RT2PJTwSA7_owQ + partials-signing-lij-win32-nightly/opt: Y1TF2Cc8TwaCMVdH8sZzwQ + partials-signing-lij-win64-nightly/opt: NNMjQvBkSJWrIDK-ryPWUQ + partials-signing-linux-nightly/opt: T04aUUVQRzm7wCpc_yQ40Q + partials-signing-linux64-nightly/opt: Ifv7an3vS-muF4hExPfaQw + partials-signing-lt-linux-nightly/opt: EQaC1DEUQYes1rxWFF1Aeg + partials-signing-lt-linux64-nightly/opt: euYZ9At4QFKYwQjrDJrxaA + partials-signing-lt-macosx64-nightly/opt: W8CexpabQWu7JVqFDqNPTw + partials-signing-lt-win32-nightly/opt: YMORO7zIRHyueFQi51zW_A + partials-signing-lt-win64-nightly/opt: ZjBuGRgJQRmhtR-TNrj0EQ + partials-signing-lv-linux-nightly/opt: T7Won6gNQ3e3-7TKjoKAYg + partials-signing-lv-linux64-nightly/opt: HCMMLbPQR8ySxqtcJiz1hg + partials-signing-lv-macosx64-nightly/opt: RZlnc6UnS9-tboxH9fijzw + partials-signing-lv-win32-nightly/opt: UBPl3vxvRJaPrKfwyP1DEA + partials-signing-lv-win64-nightly/opt: FfXSNkOERc60lraNXu4Miw + partials-signing-macosx64-nightly/opt: aQtpOQQrTOmz8iDleFQOZA + partials-signing-mai-linux-nightly/opt: aoeCzdrbSPCIXMgz5volCw + partials-signing-mai-linux64-nightly/opt: BRkYVqtjQiqeAusA13olXQ + partials-signing-mai-macosx64-nightly/opt: XF8RfiOmRuG4hbecCYOl4g + partials-signing-mai-win32-nightly/opt: IZyYrboaQLuxbuwB3_IL6g + partials-signing-mai-win64-nightly/opt: feVYRJmcSxCmboQgak1xgA + partials-signing-mk-linux-nightly/opt: Z2NKBj-nQM-r2-IYQ2dBMg + partials-signing-mk-linux64-nightly/opt: Nct5L3XdTf6IV4So-U1jhg + partials-signing-mk-macosx64-nightly/opt: RGHFZ5GiR2KV1F-jQse0sg + partials-signing-mk-win32-nightly/opt: PRqocepiSpyd1qjvsyALiw + partials-signing-mk-win64-nightly/opt: cc33Qs4GSzWZSDE0dKOlnw + partials-signing-ml-linux-nightly/opt: Jd-m9dfwT8WIdZhjZn-W4A + partials-signing-ml-linux64-nightly/opt: J0fpeVsxT5KGPGzz5hYBKw + partials-signing-ml-macosx64-nightly/opt: BMEtJbYHT2iGPlOwU6OdMg + partials-signing-ml-win32-nightly/opt: Vwl1S-lqSfeLixyuIYfqzQ + partials-signing-ml-win64-nightly/opt: UbEsxIURQu-6oqHwgINzjQ + partials-signing-mr-linux-nightly/opt: JnJ8nTFtS-CAd_sqqLo4aQ + partials-signing-mr-linux64-nightly/opt: BsBEoTj8TPKM3btIq7hj8A + partials-signing-mr-macosx64-nightly/opt: ZybYQZBjRkaok0SuXqNDdw + partials-signing-mr-win32-nightly/opt: S6jh5HntRMyiJK10TMniPw + partials-signing-mr-win64-nightly/opt: L_0V5SqbSr-uY2V3OI96lA + partials-signing-ms-linux-nightly/opt: bXF9NJpoTmG4cQMjWkhfVQ + partials-signing-ms-linux64-nightly/opt: M0xh6hV-SeG1LhkHsCFxZA + partials-signing-ms-macosx64-nightly/opt: edZY-l6iTt6_81mhh45m8A + partials-signing-ms-win32-nightly/opt: BX88Q9ZuQQGVQKPUTA1oxg + partials-signing-ms-win64-nightly/opt: UmgzN-onQaWTiByW6ihdxg + partials-signing-my-linux-nightly/opt: SfEM2TWcQVSYqJyJREIlWA + partials-signing-my-linux64-nightly/opt: VJ7I9jcTRBGzozCecS5c9w + partials-signing-my-macosx64-nightly/opt: SRhq7ZCHSweci57uUtOWnQ + partials-signing-my-win32-nightly/opt: NgTVn8YkT4GIxXNAo9GzDQ + partials-signing-my-win64-nightly/opt: fs4QjnhFQj-v9UBsVQ_tyQ + partials-signing-nb-NO-linux-nightly/opt: Pu-iengKT064vQ3oAjbcWg + partials-signing-nb-NO-linux64-nightly/opt: dLRpKx4zQDeWaWfu4noPEQ + partials-signing-nb-NO-macosx64-nightly/opt: Ec8TX01lSf6xYOJp0j3sSQ + partials-signing-nb-NO-win32-nightly/opt: QtnhgzhhQ2iwk334sSfGlg + partials-signing-nb-NO-win64-nightly/opt: SHgNslHgSTucJ2c6TxCvsQ + partials-signing-ne-NP-linux-nightly/opt: LhvIbKajTui8eulAF0Jd-A + partials-signing-ne-NP-linux64-nightly/opt: L761ROZURkeR7aH2kbw25w + partials-signing-ne-NP-macosx64-nightly/opt: SV4RPoooTtSyzOXwEAUtog + partials-signing-ne-NP-win32-nightly/opt: XNFledIUQ1-IyLu9Ulj11g + partials-signing-ne-NP-win64-nightly/opt: KEiNu2alQmO2y8T-9EAtuA + partials-signing-nl-linux-nightly/opt: L0m2ZKIMTaWvWV6bmqTwog + partials-signing-nl-linux64-nightly/opt: YnadTaRJQeSz4HPPf4yC9Q + partials-signing-nl-macosx64-nightly/opt: BttqI6fjRd20cVYuvKDhcA + partials-signing-nl-win32-nightly/opt: D_sidXLITWO2qEp5yHRTAw + partials-signing-nl-win64-nightly/opt: QdiaGV7pQ1e9svkBnAMkLg + partials-signing-nn-NO-linux-nightly/opt: JqMbIfZ3T0SmG6tuQNZPrw + partials-signing-nn-NO-linux64-nightly/opt: FCjdyIHyRa-fEL5FpIAfwA + partials-signing-nn-NO-macosx64-nightly/opt: GyOyEWVkR1yoja7x9CmnwQ + partials-signing-nn-NO-win32-nightly/opt: CLiOhK1hQ-SMEZDTbEjhfg + partials-signing-nn-NO-win64-nightly/opt: BpuBXxAMQv6dBp_h9bTesg + partials-signing-oc-linux-nightly/opt: GB6wRt7uQwyL0pn6iXFLYQ + partials-signing-oc-linux64-nightly/opt: Pg6P2e5iTeS1MLpAYdg6cg + partials-signing-oc-macosx64-nightly/opt: U1p7L8x0RguO6Uz4hLEMuA + partials-signing-oc-win32-nightly/opt: UFRyNIdCQ1mjjpiLH_fKXg + partials-signing-oc-win64-nightly/opt: dFk91jlES52Ck1c5goeAYQ + partials-signing-or-linux-nightly/opt: Y0wJXx34TPmfJQpRdT9zAQ + partials-signing-or-linux64-nightly/opt: dkMhS2SQQYGG7Ze1fJg5jA + partials-signing-or-macosx64-nightly/opt: Bp3QbdkORZufbtO0epQtoA + partials-signing-or-win32-nightly/opt: Eoiz49t0Qde1h_6iXmdTCA + partials-signing-or-win64-nightly/opt: Va1J_0TEQ_-fbHVp-7aySA + partials-signing-pa-IN-linux-nightly/opt: CpgFQuJOSAaCg62XADAc4Q + partials-signing-pa-IN-linux64-nightly/opt: QkvSRRvATzKtuemh0Ml5mw + partials-signing-pa-IN-macosx64-nightly/opt: JGWUgYaeRd66ea_TJfJ_1Q + partials-signing-pa-IN-win32-nightly/opt: Jv4W7KyeQJO0-9CT5F0swQ + partials-signing-pa-IN-win64-nightly/opt: OHk6nHj3Rqe8LGm768H4nA + partials-signing-pl-linux-nightly/opt: QYF2c3kjS_Wmf97IML8qmg + partials-signing-pl-linux64-nightly/opt: cVTeB4tPThWJJqi_zVFVKA + partials-signing-pl-macosx64-nightly/opt: KbXhd1W2RhC8-K59NgGkbg + partials-signing-pl-win32-nightly/opt: BYfqDhD8RF-3Y3r5o_klNw + partials-signing-pl-win64-nightly/opt: epgztiHOSIK11y4MRgrzWA + partials-signing-pt-BR-linux-nightly/opt: B6-RpwnKRse2mnX4SJmOcg + partials-signing-pt-BR-linux64-nightly/opt: HN8Eu3DrRKOddOmTRjMm1Q + partials-signing-pt-BR-macosx64-nightly/opt: EKrezTz3Tx6-ahmnIZelSw + partials-signing-pt-BR-win32-nightly/opt: D8NG7b9AQwWrk-R4UuGcbA + partials-signing-pt-BR-win64-nightly/opt: Z2A_3I5JRjSvYlZl9Nr-BA + partials-signing-pt-PT-linux-nightly/opt: Sp2iFQYERK6otQ6c1lYmFA + partials-signing-pt-PT-linux64-nightly/opt: Lv1HPNd7Rei5vRDZtdSqKQ + partials-signing-pt-PT-macosx64-nightly/opt: GIVyHAzSToKAgsK2yMj8Nw + partials-signing-pt-PT-win32-nightly/opt: F8uOsEcsQvGU4oIsOde8Jw + partials-signing-pt-PT-win64-nightly/opt: aTyDHTuhRvWM8RiThQWn3Q + partials-signing-rm-linux-nightly/opt: JVpKEBbkSACcarN3dcDaGQ + partials-signing-rm-linux64-nightly/opt: QNmMaZYsQNehsxsTH1KIiw + partials-signing-rm-macosx64-nightly/opt: BkInLIFwRheTGQChBxD8EA + partials-signing-rm-win32-nightly/opt: Zav_MHyqT_utukmTEBDqBw + partials-signing-rm-win64-nightly/opt: OZe2lJwDTguiSL6b1rZ6gA + partials-signing-ro-linux-nightly/opt: OHiecNX7S2WeHlQ_MjbA7A + partials-signing-ro-linux64-nightly/opt: AT2cczbSSuiOd7mQBVaK2g + partials-signing-ro-macosx64-nightly/opt: Y5j3og4JRJ6A2t28hY_W6Q + partials-signing-ro-win32-nightly/opt: apZpUe6pSh2OHJIMXX3Log + partials-signing-ro-win64-nightly/opt: CmlwXdIGQsqqUU3A6Jkbcg + partials-signing-ru-linux-nightly/opt: VmQGCDwVQrGiaom-gSF0og + partials-signing-ru-linux64-nightly/opt: d114NZkXTdmannRfrrwjUA + partials-signing-ru-macosx64-nightly/opt: LYnTyi11TJG23OC9e5Ct7A + partials-signing-ru-win32-nightly/opt: dH-Twa89SI2VrieBk5MU3w + partials-signing-ru-win64-nightly/opt: E_4t-tMAQdm3r4TnPXUFig + partials-signing-si-linux-nightly/opt: RdPFHIYPSeSYImJTCBYb7A + partials-signing-si-linux64-nightly/opt: ZsgdEjqNSduisiTukApZ8w + partials-signing-si-macosx64-nightly/opt: R-6la3sSTpeknpQBJmlGng + partials-signing-si-win32-nightly/opt: N3zsllsbT9SGRcpLRlxIJQ + partials-signing-si-win64-nightly/opt: NRg6yFjxSYeaifPrgqfM0w + partials-signing-sk-linux-nightly/opt: T4MtDvaSSu-rBzsV4TGkDQ + partials-signing-sk-linux64-nightly/opt: CWSR6mMcSdqfhfggDdARKQ + partials-signing-sk-macosx64-nightly/opt: JNvrT_0lRxGShu247lQFPQ + partials-signing-sk-win32-nightly/opt: CV4OzJP3R2Ca0_opmA5OMw + partials-signing-sk-win64-nightly/opt: OTVpBrHRTqatOKAdJpzaIg + partials-signing-sl-linux-nightly/opt: EWgPEw0sTROiv9gEaKLidQ + partials-signing-sl-linux64-nightly/opt: DB-yjqloQOaTju-day8qbA + partials-signing-sl-macosx64-nightly/opt: NUQb9EGZQuSuiWNEJBt6xA + partials-signing-sl-win32-nightly/opt: Gxt6eOOUSb-LaD-y2ccGfQ + partials-signing-sl-win64-nightly/opt: LYcB8fPGQfmy0q4h7g3vGA + partials-signing-son-linux-nightly/opt: YC0jGgEkR4ef5ENvwvAvzA + partials-signing-son-linux64-nightly/opt: Yvt3Uq9-SZyabCMJ60vbhg + partials-signing-son-macosx64-nightly/opt: NiX99GMxRaewTq63mg2t9Q + partials-signing-son-win32-nightly/opt: Nc7n71uuR1-AZnAf8-Pwiw + partials-signing-son-win64-nightly/opt: HpRjouzNRuOYg49ha-EeQQ + partials-signing-sq-linux-nightly/opt: IhzuV2VFR0GBJIfQKidA1g + partials-signing-sq-linux64-nightly/opt: AH5UETeHRpiVMXc1IeFH5Q + partials-signing-sq-macosx64-nightly/opt: IuamAc3JTwyQIZ1sxWioVA + partials-signing-sq-win32-nightly/opt: cB6VNL0eTjG9kib0VUWzPQ + partials-signing-sq-win64-nightly/opt: VJLDyf5KSGCSt_L8_TbNTQ + partials-signing-sr-linux-nightly/opt: aODBSmmUQG-Y1eSwnR86ig + partials-signing-sr-linux64-nightly/opt: Or4SHpQCR92c2rWvPNliuA + partials-signing-sr-macosx64-nightly/opt: MEV9mDjfQpOAcr3BzfOVTg + partials-signing-sr-win32-nightly/opt: D44Y1OcYQZqY1t0EmwYG3Q + partials-signing-sr-win64-nightly/opt: DD1mKBolTXeLdail6v5nBw + partials-signing-sv-SE-linux-nightly/opt: eqSPMOAgQtS-rkTnvY9LEg + partials-signing-sv-SE-linux64-nightly/opt: dC8d6eNrSNWUJRTaBNnvTw + partials-signing-sv-SE-macosx64-nightly/opt: AuqeE3nTRTCbrQlGw4ey8Q + partials-signing-sv-SE-win32-nightly/opt: Kxxo8GVBTjuQZgjxN-rawA + partials-signing-sv-SE-win64-nightly/opt: dgoJ77slRvqSbzZOKUujxg + partials-signing-ta-linux-nightly/opt: LPE9v8THR-6jz771SwxiiQ + partials-signing-ta-linux64-nightly/opt: FwdSJNupQ3qeG8ZVioC3Wg + partials-signing-ta-macosx64-nightly/opt: bET7fpbTSa6kk-2cLgkPWA + partials-signing-ta-win32-nightly/opt: bpjB8KnGRqmBKohbFRSE-g + partials-signing-ta-win64-nightly/opt: Z1Zw-iC4SgiM3rcx5-8YfQ + partials-signing-te-linux-nightly/opt: StFezEXAQQWrdbrN-1Bgdg + partials-signing-te-linux64-nightly/opt: SSKHLd40SJ2B-_XVsOgIcA + partials-signing-te-macosx64-nightly/opt: IbKRgEhnQzSWwltw81pUdA + partials-signing-te-win32-nightly/opt: CHIHPBJ0TDm53fMy9jnHyA + partials-signing-te-win64-nightly/opt: P8HomZeSSSGW63mTm6qIkw + partials-signing-th-linux-nightly/opt: c6232nKdTqG6WldZsUiR3A + partials-signing-th-linux64-nightly/opt: Et2Wkk8AQfG0XP_0yXrDPA + partials-signing-th-macosx64-nightly/opt: EAtTH3L_Ti2dPLmw931kNA + partials-signing-th-win32-nightly/opt: KNARLNm-RKeHLCoewwjNnQ + partials-signing-th-win64-nightly/opt: FBjizMtMS1i1GR7vcj72iw + partials-signing-tr-linux-nightly/opt: E3U62hJXSGGe-PDyzFEgrw + partials-signing-tr-linux64-nightly/opt: Aq5-AhdzQhqAqvSDnPQynw + partials-signing-tr-macosx64-nightly/opt: Mpu6pi1oQiCtRZD0pf9rKw + partials-signing-tr-win32-nightly/opt: AMHH4hfZSPinGb37kakkxw + partials-signing-tr-win64-nightly/opt: RRee5K_jQ2aBImWzicKkog + partials-signing-uk-linux-nightly/opt: C6pvWIK0RHqsU6FJfBElzA + partials-signing-uk-linux64-nightly/opt: FqjeC0y5QDqwcYXBK2rOrw + partials-signing-uk-macosx64-nightly/opt: Y1qMqpkGQOWXdl9VN0l7mQ + partials-signing-uk-win32-nightly/opt: fWlBOH-RTm2M8yg4Pc1pCA + partials-signing-uk-win64-nightly/opt: MlNjzMO8TrCZw6oQhYARkQ + partials-signing-ur-linux-nightly/opt: WVXEdW5HRzawbt-jUUlOGQ + partials-signing-ur-linux64-nightly/opt: OUjhskk3TYCRg8u6Jj2eSA + partials-signing-ur-macosx64-nightly/opt: NOgN3hZ1TuaGlwQ3mk72sQ + partials-signing-ur-win32-nightly/opt: SCd1vdZjRLO8lMhAP-fWZQ + partials-signing-ur-win64-nightly/opt: cRmqw9TpSUKQnOYYCFZtcQ + partials-signing-uz-linux-nightly/opt: JP4om1FvTKyzRJX0XR6ghg + partials-signing-uz-linux64-nightly/opt: G1KLE1EKSYqA4g6gDppzzg + partials-signing-uz-macosx64-nightly/opt: FqnI8iINTOKURfvUE-z9Lg + partials-signing-uz-win32-nightly/opt: Tl3v6XQdQEa-wtZvdaQhFw + partials-signing-uz-win64-nightly/opt: WkCMuPZtS1S0i4gFCymm7Q + partials-signing-vi-linux-nightly/opt: awoXvHjdTmWET22pq3Ksrg + partials-signing-vi-linux64-nightly/opt: FvqlrJTKTbWeSyFkAviPhg + partials-signing-vi-macosx64-nightly/opt: TChQ7dFPSc-luX07hHM4qg + partials-signing-vi-win32-nightly/opt: d9G2IpdfRqSp5hAyCiupiQ + partials-signing-vi-win64-nightly/opt: TXY6mx1xSWm3DkF1EJzHdw + partials-signing-win32-nightly/opt: R0v_rS_KRh295iS4cyWWMw + partials-signing-win64-nightly/opt: YZOEGRV1SoW0I1HxEEqRpw + partials-signing-xh-linux-nightly/opt: epd-p0krQyuQ-C0A0Bmulw + partials-signing-xh-linux64-nightly/opt: GX5vA-XnTsu9Cq5edvm4Fw + partials-signing-xh-macosx64-nightly/opt: cSIDU3n2Sx-Ml8XscJDgmQ + partials-signing-xh-win32-nightly/opt: MApwHMmQRc-HlQnEcGqDrQ + partials-signing-xh-win64-nightly/opt: YQ_YNpGMQMOyoqu-vwrIMg + partials-signing-zh-CN-linux-nightly/opt: Qb3NimSDQFSTgcJD2cyZhg + partials-signing-zh-CN-linux64-nightly/opt: NjJwrOGRQuCjPTVzxnR_Ng + partials-signing-zh-CN-macosx64-nightly/opt: OVy9cU62T1-hdUiSR7CEOA + partials-signing-zh-CN-win32-nightly/opt: UiO5ZLpXSfi_dlZcsfJVFw + partials-signing-zh-CN-win64-nightly/opt: DPXgDB4_T9a3R61lS_3gnA + partials-signing-zh-TW-linux-nightly/opt: VY-4RKyoQAKUZsl7wUxhVA + partials-signing-zh-TW-linux64-nightly/opt: IkuTLVIZRSqZ-fNXd2sLfA + partials-signing-zh-TW-macosx64-nightly/opt: WRPBJpwgS9-41ID_tIc_NQ + partials-signing-zh-TW-win32-nightly/opt: UbKjBPvVQKSqjBNeh-2scw + partials-signing-zh-TW-win64-nightly/opt: eLUgAmLXTP2FFzRDCwAgeQ + partials-sk-linux-nightly/opt: JWBjz51mSnmOuNvhUBhH9w + partials-sk-linux64-nightly/opt: HfwLHZTXRbq-By5_jpHwbQ + partials-sk-macosx64-nightly/opt: e0YbExcMQlqfxbmXd37_Ng + partials-sk-win32-nightly/opt: Y_rbbkGdRQ2BR5DPifzpkw + partials-sk-win64-nightly/opt: CiNh_GC5Q9a1-tqtFeATig + partials-sl-linux-nightly/opt: WcxKNHUoSTyXy_INgIe6ZQ + partials-sl-linux64-nightly/opt: c6cLMrpURQSnaD60lpfCQw + partials-sl-macosx64-nightly/opt: Ptp4n5wdQxSHyUgtk0o_dQ + partials-sl-win32-nightly/opt: FKklbhmJSNqolzbavZ85Pw + partials-sl-win64-nightly/opt: cbSOtWXzSf-vF2yoxHsy7w + partials-son-linux-nightly/opt: DoBEUu91T4m4LBTKzLvIHA + partials-son-linux64-nightly/opt: YmH0dF9iSbaxTefJZ5i1FA + partials-son-macosx64-nightly/opt: SMFzkXRvQS2mij-P4LOn8w + partials-son-win32-nightly/opt: fb82d1Z7Tf-dFAnVDAIVlA + partials-son-win64-nightly/opt: aZxmIGLtRPGd_z54-6bznw + partials-sq-linux-nightly/opt: ZyjGaJZrS3qDYu51pMCxiQ + partials-sq-linux64-nightly/opt: CS1f0M7OS5eo8I8BPzAaaA + partials-sq-macosx64-nightly/opt: MF6b3kq7TReESyISL4pyhg + partials-sq-win32-nightly/opt: YlasrAVPSUmHKh010CARxQ + partials-sq-win64-nightly/opt: YoeX1ntqQGO5ab7jDbydww + partials-sr-linux-nightly/opt: OlfVvC6qS1GbpqoB5rWU7A + partials-sr-linux64-nightly/opt: Ln7501zLRuuXS8oBV9-h1w + partials-sr-macosx64-nightly/opt: ZLQqQGHwQIqw-ywujYTa8g + partials-sr-win32-nightly/opt: YMd5e9LFRWWZP6SG2HjJFw + partials-sr-win64-nightly/opt: D35NI5_7RY6MtwSX5qQokg + partials-sv-SE-linux-nightly/opt: Wq-p2LMzTWeOPUm6O2VadQ + partials-sv-SE-linux64-nightly/opt: ZBEvi0IdRo2501eZXHYmKA + partials-sv-SE-macosx64-nightly/opt: HhUngiTrTUi2c5OONpjBfw + partials-sv-SE-win32-nightly/opt: PZqmARJqT1WuSRiUtk1epg + partials-sv-SE-win64-nightly/opt: AlgXg-cEQtCe_T6jxmEBtg + partials-ta-linux-nightly/opt: DGWMArITQvuYANCiw4RNOw + partials-ta-linux64-nightly/opt: d2fT_R95RpuydwFkKc2Eug + partials-ta-macosx64-nightly/opt: NI0D74LaSx2mw9zUAwOxQg + partials-ta-win32-nightly/opt: BB97eDpwRgGld7fKXZRwrQ + partials-ta-win64-nightly/opt: X2CUJBKhShO5qZ8R4ElScA + partials-te-linux-nightly/opt: cxZjV4GcTemo9H3Vj3MvnQ + partials-te-linux64-nightly/opt: YR74lHRRRSWuAE9CldZfdg + partials-te-macosx64-nightly/opt: ZbuPgm4ARuCbfgYh0Njurw + partials-te-win32-nightly/opt: fueEbwe5T_mW3kM_3VbU5A + partials-te-win64-nightly/opt: NYpVIi0pRwmVRB1eqN-5Mg + partials-th-linux-nightly/opt: QB7vDPmtR46sN9ViTzlMDw + partials-th-linux64-nightly/opt: CJMuej4eSg63TDYE_u8y1g + partials-th-macosx64-nightly/opt: KzCyOkxDQpm521et3WIF_g + partials-th-win32-nightly/opt: Cp7jL98VQ1GFiXTjMlgMOg + partials-th-win64-nightly/opt: evG5J6NlQeOja13TmwnouA + partials-tr-linux-nightly/opt: R5FgxMjyT5ayP9fh1wUfdA + partials-tr-linux64-nightly/opt: AnF3U5HxRw6pRy9hzZBUuw + partials-tr-macosx64-nightly/opt: RDnfbO2_Toq3d-m6LHrS8g + partials-tr-win32-nightly/opt: SmA8BSCHQai0X3AKz68URQ + partials-tr-win64-nightly/opt: YNQzbnCqTkWs_HCAN8VxRA + partials-uk-linux-nightly/opt: FS-9hLxdRuiH_9-rVX1tbA + partials-uk-linux64-nightly/opt: G7wdY_i8Qca6bMKKpNIcCQ + partials-uk-macosx64-nightly/opt: NmDJJ9KCQ3mIYmwwkUmauQ + partials-uk-win32-nightly/opt: EP-LW18QQueBfjkGaYM4SQ + partials-uk-win64-nightly/opt: GxtSL9YiQhi9fS0Tm-aonw + partials-ur-linux-nightly/opt: XLNzvLOYT2CwMrAx81p66g + partials-ur-linux64-nightly/opt: MwTNutzZTGmBzbbDhjy1hQ + partials-ur-macosx64-nightly/opt: GGd41stbR9OenOwoE5KC5Q + partials-ur-win32-nightly/opt: SRM6Bvf5QVWVf8EMc2-erA + partials-ur-win64-nightly/opt: XZoxgjRPRQmEpwGama8QTA + partials-uz-linux-nightly/opt: ICSwtIM-Tnqx1GZt15GtpQ + partials-uz-linux64-nightly/opt: Ce06NWnnTdm7GiRkyt2JeQ + partials-uz-macosx64-nightly/opt: e9K1azbuT06J6HmRzmS54Q + partials-uz-win32-nightly/opt: fMVBX9kyR3uo7lkCccj73Q + partials-uz-win64-nightly/opt: A3JRM_-MSEyngYWzlNQMyQ + partials-vi-linux-nightly/opt: L5zkQaepQA6gbWfDuzORYw + partials-vi-linux64-nightly/opt: BS2JOn0ARg6p6XdjFG_qtQ + partials-vi-macosx64-nightly/opt: eUCnrjRiTFC2URiKfoTsFw + partials-vi-win32-nightly/opt: EgcnLZKnR9aruqO8nNTcLw + partials-vi-win64-nightly/opt: dERNAo43TfafzoRB6YW8JQ + partials-win32-nightly/opt: U2Jlf-c9Qy2d4ffUaWMKtw + partials-win64-nightly/opt: Oc13MSXMR8-1MI2UaQQOZg + partials-xh-linux-nightly/opt: K-t7E1R5SAatRj4696WS6g + partials-xh-linux64-nightly/opt: ckHbWBYxR6azJsbHz3AwWg + partials-xh-macosx64-nightly/opt: M0YVQJm7SRe5HxRklz4zBg + partials-xh-win32-nightly/opt: F54k6sIHQkujUDh7iPTnAA + partials-xh-win64-nightly/opt: QK5GcEC_RZ2BPlQqd-aoow + partials-zh-CN-linux-nightly/opt: MByojppzQNqJNO2cxDF-TA + partials-zh-CN-linux64-nightly/opt: ZSxGcjlvQ7OSGRJv9AkU7A + partials-zh-CN-macosx64-nightly/opt: bliPH5_qQ2qkQo9-K9efjg + partials-zh-CN-win32-nightly/opt: PYQkh72_Sz2T45ul5FK-cw + partials-zh-CN-win64-nightly/opt: RbtvPiOHTH6sPydxy5EATw + partials-zh-TW-linux-nightly/opt: e2meTx-vQQG6yrOFN2Y_tA + partials-zh-TW-linux64-nightly/opt: IuVm9JqSSTaWGEDiRfbHTw + partials-zh-TW-macosx64-nightly/opt: NizyZm_ZSVySFykPtOxkdw + partials-zh-TW-win32-nightly/opt: dV3MpU42StGK2ys01yGGfQ + partials-zh-TW-win64-nightly/opt: aCg_H9I-Rs2Iud9Ggm37oQ + post-balrog-dummy-firefox-linux-nightly-1: MGqSFisGQsONNpfAthJZtw + post-balrog-dummy-firefox-linux64-nightly-1: EkPHkJJsQQiFSuqiZlx4iw + post-balrog-dummy-firefox-macosx64-nightly-1: YMnot-NTR-SukLmgZwqJmA + post-balrog-dummy-firefox-win32-nightly-1: MSE6DNoiS7Wc-v5CZKJPtw + post-balrog-dummy-firefox-win64-nightly-1: KfqM66AWRdWXlp0jvGjnjQ + post-beetmover-checksums-dummy-firefox-promote-1: EbHB0OMJQsmhrSjf6VBa1A + post-beetmover-checksums-dummy-firefox-promote-2: fXJoKrTJThO-latWN7bt-A + post-beetmover-checksums-dummy-firefox-promote-3: AuJIj5WxRY65-XUmn8W8lA + post-beetmover-checksums-dummy-firefox-promote-4: CFAwRGVxTHuzxEgx-IJJSQ + post-beetmover-checksums-dummy-firefox-promote-5: eQpQAvVmTaCzvC9zVYSoQA + post-beetmover-checksums-dummy-firefox-promote-6: BheuQTuWQAix0lf3R81Q0A + post-beetmover-checksums-dummy-firefox-promote-7: LGU8P2TJTpCG4YICOmBNLQ + post-beetmover-checksums-dummy-firefox-promote-8: Gk3jqWUZS9iDFyyrl2u81g + post-beetmover-checksums-dummy-firefox-promote-9: Ciy0YKjyStyJuYCSSA6PPg + post-beetmover-dummy-firefox-linux-nightly-1: VKKyqbdlRBKiAbOjKsUHjg + post-beetmover-dummy-firefox-linux-nightly-2: TKWnieYcQySGwviNOVyg2g + post-beetmover-dummy-firefox-linux64-nightly-1: C8hLe18-QH6mHIgIPT6XTQ + post-beetmover-dummy-firefox-linux64-nightly-2: f9GFT5TtRLmFE43WYo8S0Q + post-beetmover-dummy-firefox-macosx64-nightly-1: fnmT-MKbRTijEZhh7B7paA + post-beetmover-dummy-firefox-macosx64-nightly-2: JQVK6RFWS_yEUQsVZ1EaNA + post-beetmover-dummy-firefox-win32-nightly-1: HjMmJZvtSRa8LQVfYaj9Xg + post-beetmover-dummy-firefox-win32-nightly-2: IZon-Em4S8O72XvPLLvzIA + post-beetmover-dummy-firefox-win64-nightly-1: C0iZ7GACRnSaz4bVpWPVKA + post-beetmover-dummy-firefox-win64-nightly-2: BMRyJOQETseq-FVZyDmNrg + post-langpack-dummy-firefox-promote-1: Z-ltNiBVR6OtcEvYoGonXA + post-langpack-dummy-firefox-promote-2: fUMLTRltTcKzwEHTUgO38w + release-balrog-submit-toplevel-firefox: AsmTM6aNTZGz136nc1sicg + release-balrog-submit-toplevel-firefox-bz2: Nl3bOXrFRsKXNTAEWGQ_AA + release-beetmover-signed-langpacks-checksums-linux-1/opt: R70INVx1SQOuL3c_HQupxg + release-beetmover-signed-langpacks-checksums-linux-10/opt: L_9bKU7eTaK74ees9OPsQQ + release-beetmover-signed-langpacks-checksums-linux-11/opt: RQmaWu8yQVGatGJKcOukwQ + release-beetmover-signed-langpacks-checksums-linux-12/opt: G1HJ8HsETQObBsqEdW4RQw + release-beetmover-signed-langpacks-checksums-linux-13/opt: A5CChUOLTc-6sRYKEXOJAw + release-beetmover-signed-langpacks-checksums-linux-14/opt: PX0BZE9hSM6xO3FOLqfl2w + release-beetmover-signed-langpacks-checksums-linux-15/opt: eX_tcf9VRVG6A3h8iZaTYQ + release-beetmover-signed-langpacks-checksums-linux-16/opt: WSQagOrzRGKsCyBwzuwP8g + release-beetmover-signed-langpacks-checksums-linux-17/opt: BsRIMsXDQmKA4PbMlY3RdQ + release-beetmover-signed-langpacks-checksums-linux-18/opt: e4QgSToQRFmfi3pr3nNP6g + release-beetmover-signed-langpacks-checksums-linux-19/opt: Sy19Rt3tTyeD-f9d1p7EfQ + release-beetmover-signed-langpacks-checksums-linux-2/opt: XOc4YsTnTjqp8b9OaBIS6Q + release-beetmover-signed-langpacks-checksums-linux-20/opt: XO6fl2SmQf6utHPUKxbHeQ + release-beetmover-signed-langpacks-checksums-linux-3/opt: D6cVUe91Rl-ujNKd8V9AIQ + release-beetmover-signed-langpacks-checksums-linux-4/opt: CiOdCxp3TIqHTItYx0J02g + release-beetmover-signed-langpacks-checksums-linux-5/opt: TOlgrlkfR8eGBxvJ3fCnyg + release-beetmover-signed-langpacks-checksums-linux-6/opt: YAfx-_KQTny49HBSw5qq3Q + release-beetmover-signed-langpacks-checksums-linux-7/opt: aZKj5_ykRhmYHkPR9puFjw + release-beetmover-signed-langpacks-checksums-linux-8/opt: Ydypa16JRKKzdA0rRYAvPw + release-beetmover-signed-langpacks-checksums-linux-9/opt: X5H_LvuBSsKCekbEZ2bRjw + release-beetmover-signed-langpacks-checksums-linux/opt: cZDYaiiDTFO6L57KigFm2w + release-beetmover-signed-langpacks-checksums-linux64-1/opt: OuH5lBMHQl620_XL5KVxbA + release-beetmover-signed-langpacks-checksums-linux64-10/opt: A2LH1wE6S7Woeiq173VQlQ + release-beetmover-signed-langpacks-checksums-linux64-11/opt: b_qxYv5uSKCKwSpOdQk8EA + release-beetmover-signed-langpacks-checksums-linux64-12/opt: FTXV0epESqWEgLG8I42QNw + release-beetmover-signed-langpacks-checksums-linux64-13/opt: HuTeMIz5ROmSGx0q8yJTtQ + release-beetmover-signed-langpacks-checksums-linux64-14/opt: TdwknkVeQpW7An96PtcCuQ + release-beetmover-signed-langpacks-checksums-linux64-15/opt: UfP7dbqmR4ugUU41ibPNqg + release-beetmover-signed-langpacks-checksums-linux64-16/opt: WHDuKjg9Rzyu0nLiR_JF-g + release-beetmover-signed-langpacks-checksums-linux64-17/opt: DaUSzHp6R6WvFvkEBz9soQ + release-beetmover-signed-langpacks-checksums-linux64-18/opt: NR98OF2FR2GpRppbPlrjOQ + release-beetmover-signed-langpacks-checksums-linux64-19/opt: fFNyMc2LTAiD59n7uI9e4g + release-beetmover-signed-langpacks-checksums-linux64-2/opt: NYL17RUPR2W5mwHxFqncuw + release-beetmover-signed-langpacks-checksums-linux64-20/opt: J8gWyDBJRoOhylV6EwEqLg + release-beetmover-signed-langpacks-checksums-linux64-3/opt: Od66mcUVSdW5qzjET-N7aA + release-beetmover-signed-langpacks-checksums-linux64-4/opt: IUrV-KGrRI2jiYdmuH76oQ + release-beetmover-signed-langpacks-checksums-linux64-5/opt: S4lP9btRSg6Fzv09M_ADbQ + release-beetmover-signed-langpacks-checksums-linux64-6/opt: TTnzkE3fTlK94aON6fOTAQ + release-beetmover-signed-langpacks-checksums-linux64-7/opt: IJzTX-9VQxi-z6-o_fMUHA + release-beetmover-signed-langpacks-checksums-linux64-8/opt: GrHy0qB4SLCizByHCWzk9w + release-beetmover-signed-langpacks-checksums-linux64-9/opt: BkGRkYQYRmKcJ-asc2B19Q + release-beetmover-signed-langpacks-checksums-linux64/opt: K6TDWIu9QxSt75TLxA_9Mw + release-beetmover-signed-langpacks-checksums-macosx64-1/opt: Xd2W-BS1QoSCWj9MYL-DuA + release-beetmover-signed-langpacks-checksums-macosx64-10/opt: Z_DIGGjVTQipBaM-JabD9Q + release-beetmover-signed-langpacks-checksums-macosx64-11/opt: V4RijlP4Q6aAtWK5K54tzw + release-beetmover-signed-langpacks-checksums-macosx64-12/opt: Sdvn1F_-REeiZzJpC5cH9Q + release-beetmover-signed-langpacks-checksums-macosx64-13/opt: K08Zn9atQ0mrgThhNIs77g + release-beetmover-signed-langpacks-checksums-macosx64-14/opt: bm5FwMr0RzyUzdsUIK93eQ + release-beetmover-signed-langpacks-checksums-macosx64-15/opt: A0aI5N8wQ3ys2KZ8-GZaMw + release-beetmover-signed-langpacks-checksums-macosx64-16/opt: RnViq2D1TZepEeNSvnz3JA + release-beetmover-signed-langpacks-checksums-macosx64-17/opt: Yy2lGBeYRwCyUnI0XET9zw + release-beetmover-signed-langpacks-checksums-macosx64-18/opt: YtDHfhLYSxOUxKvnxBoIOw + release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ASOGRPEsTqCz4N4T5sl6lg + release-beetmover-signed-langpacks-checksums-macosx64-2/opt: UnlPmgjUQEqc53FBFe5shQ + release-beetmover-signed-langpacks-checksums-macosx64-20/opt: YIkiEnXGTsCNd_Lhoj4aiQ + release-beetmover-signed-langpacks-checksums-macosx64-3/opt: AgTWGe0lRUOsu8gmQXsTjA + release-beetmover-signed-langpacks-checksums-macosx64-4/opt: QOa32xX5R4uIB20yy6S4yw + release-beetmover-signed-langpacks-checksums-macosx64-5/opt: E8vg_Yb0Tf2lqT4WZOPrVw + release-beetmover-signed-langpacks-checksums-macosx64-6/opt: DcZiLugGTfiBUv12pZp_4w + release-beetmover-signed-langpacks-checksums-macosx64-7/opt: TIH_iY2vRri9h52aXik9_w + release-beetmover-signed-langpacks-checksums-macosx64-8/opt: ZQorGYbWQEekHE-nl0YBHw + release-beetmover-signed-langpacks-checksums-macosx64-9/opt: dYeIXt3UShyNEkGTywKMGA + release-beetmover-signed-langpacks-checksums-macosx64-nightly-11/opt: dhYHslNCSZualrXJFabzCg + release-beetmover-signed-langpacks-checksums-macosx64/opt: BmAcxd1GST2FTjusrIWaeg + release-beetmover-signed-langpacks-checksums-win32-1/opt: US3RHBUPTG-9hQyowgN2Ew + release-beetmover-signed-langpacks-checksums-win32-10/opt: YlPaRQmmTrKL8O-QBrQHxQ + release-beetmover-signed-langpacks-checksums-win32-11/opt: U7FfqgouQIuCDI6XL-uK9A + release-beetmover-signed-langpacks-checksums-win32-12/opt: TG8T7cftRZyc-pAVG8vlHg + release-beetmover-signed-langpacks-checksums-win32-13/opt: Una3xeGwTwKLr06bWLK_vg + release-beetmover-signed-langpacks-checksums-win32-14/opt: So7N4x-rSuKqFvau7NLqwA + release-beetmover-signed-langpacks-checksums-win32-15/opt: GXB626K2QFyB7B2G6_5Dhw + release-beetmover-signed-langpacks-checksums-win32-16/opt: c59Vt2npT5qIwA4j7MbD9A + release-beetmover-signed-langpacks-checksums-win32-17/opt: DdID_qxASyy7Z2YFcUevAQ + release-beetmover-signed-langpacks-checksums-win32-18/opt: FjtKq6afTx--4JfvG0IuQw + release-beetmover-signed-langpacks-checksums-win32-19/opt: FhWQdBRUSQKBFZJlLM4n3w + release-beetmover-signed-langpacks-checksums-win32-2/opt: ftkaiX1dTFiWYkJ1OqchUA + release-beetmover-signed-langpacks-checksums-win32-20/opt: D_sV6M-uSAOVhsoTe_mQxQ + release-beetmover-signed-langpacks-checksums-win32-3/opt: GrxSlh_RRuayNnidwK1QAw + release-beetmover-signed-langpacks-checksums-win32-4/opt: E-SjMvoJRQ6YaKW41O8Ufw + release-beetmover-signed-langpacks-checksums-win32-5/opt: GOCMkzJKREiIZQTqLMaD1Q + release-beetmover-signed-langpacks-checksums-win32-6/opt: DNQQqPRrSNCJlBAnuWDsZQ + release-beetmover-signed-langpacks-checksums-win32-7/opt: XU47qN0yRmKKZmnSJyqyQw + release-beetmover-signed-langpacks-checksums-win32-8/opt: YuMQ_KQRRg267Z1kEqPJQg + release-beetmover-signed-langpacks-checksums-win32-9/opt: eIXEboE3TWSK1MDuD-KyoA + release-beetmover-signed-langpacks-checksums-win32/opt: FBbsk_sKRo2N_aKBAyr2Jg + release-beetmover-signed-langpacks-checksums-win64-1/opt: OghyLqj5TtOokFUxN8MccA + release-beetmover-signed-langpacks-checksums-win64-10/opt: cO_DyW-_RMuSQaDJDtsifA + release-beetmover-signed-langpacks-checksums-win64-11/opt: Ni1zl90iRlyR-NgDega3yw + release-beetmover-signed-langpacks-checksums-win64-12/opt: XX2NXc4jQv2_tgP3_iZXIA + release-beetmover-signed-langpacks-checksums-win64-13/opt: EOj7Tt2JR2qb79R-X3M3IA + release-beetmover-signed-langpacks-checksums-win64-14/opt: DL7j6E8lRliTACQ__GmDGg + release-beetmover-signed-langpacks-checksums-win64-15/opt: dOtqXD8DQ6WdUkyh8RnRcg + release-beetmover-signed-langpacks-checksums-win64-16/opt: aY6PUEwCTUys_XmD9CukpA + release-beetmover-signed-langpacks-checksums-win64-17/opt: DsCshlOLQ9W9SZB5325oFw + release-beetmover-signed-langpacks-checksums-win64-18/opt: InaLfuvwRUGYlBBpuyX2HA + release-beetmover-signed-langpacks-checksums-win64-19/opt: SsSimkG3SfiTblM0zyZ0bA + release-beetmover-signed-langpacks-checksums-win64-2/opt: cU2Mv82hTSOA019AT2uu9g + release-beetmover-signed-langpacks-checksums-win64-20/opt: CNhF2DeESRaCy_Fzm09P7Q + release-beetmover-signed-langpacks-checksums-win64-3/opt: aF29QPhJRoumDl0CwSQogg + release-beetmover-signed-langpacks-checksums-win64-4/opt: MYER8fj6RoaJxSn78FwjCw + release-beetmover-signed-langpacks-checksums-win64-5/opt: H8gz1DX4T9SDU7F0H1RC3g + release-beetmover-signed-langpacks-checksums-win64-6/opt: VfhefXMfS26QCT6_slRysQ + release-beetmover-signed-langpacks-checksums-win64-7/opt: RvSV3dj0Q4OA1AcqPHMdLw + release-beetmover-signed-langpacks-checksums-win64-8/opt: UPb-oZ0vRoqi4pL8xho1_A + release-beetmover-signed-langpacks-checksums-win64-9/opt: AmM37dQ6SWSOMdHd-csMsg + release-beetmover-signed-langpacks-checksums-win64/opt: CUPP42X3RxWGSz4e0qykVw + release-beetmover-source-checksums-firefox-source/opt: auTB-TbaTdiuoPqu9J0JYw + release-bouncer-sub-firefox: QZmmT4y6RBevS3_xlodUoQ + release-early-tagging-firefox: cTpT5UupQAWb2_r0XDKWww + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: dY0esueWSFGeVEVu8kpPNA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: DhboGhloQ7-EhpRDARcUvg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Pj-K8H1MQeKUZkHAMsAYXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: SkEzez12R3ebC8RKop941w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: auo9ALdiT1OxQuotwcn2gw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: LPCYqTauRPimYMdjV9t1Xg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: EKwI-DgORtm43k9L7bpxpg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: Lnw1oL5QSQemyO_aLalg-g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: MoQnwjzYQ_GM4j-pKk2b8w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: SjWwoMRhQUqqaQhG8elF0A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: NLgOUMR4RwiMztAYiJa29w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: Vwk-X7V3Q7-pPDtZdlsn8A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: c5269dUKRtilqTlfz-R7jg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: FP72EgUOSE-jNQIHo5cCRQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: PPltRXFRRnSFNihcxcbtrA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: RgnUiCx9QRmq1S0VLwP6gA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: YC88xwp7RqqxhcbDep3mwQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: FuIqLClzTkCVYxMiPKrbcQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: IMBHi3-sQWGXE3ABwT7CRg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: DawGB73sRou73ZB8wGNpZw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: aAEVQ7_NQXKPbI5gi0eqvg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: EQpQ1GlaT1GXW2ToRw4yTw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: G67fZa2wRdKk2kOSgK_WNg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: IxJ7Qi1NT-O5GFBEIPBLuw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: GcAGgm8KSj-crPfqF8Dcfw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: Xb-A_ryMSOa0JJ7KmKfolg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: MuPLX4beSaC_u87bFakorA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: TdDt-A09RcCe09tdXNEpNQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: J5DByMKZQBOF-FriXPWJFA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: YoGfOuYBRu6eF6IDH1i_OQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: DGkEAb-1SYiat7cNJMLKXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: YftXe7gATeyqDO1Gc73TmQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: flskCG0WQzCLKcLfu4khtQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: GCOoGioPRFulQzBBXQE2GA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: PIp-BNAURRqTqdBSUz9qdg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: RweTPrH7SXa_ClWWgA_1Ug + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: NqB7gnbjQkyRRfQpx45P6A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: Zv3XfcbMTxiO14ZhNTZjNQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: Wx0jWVAHSa-w_ocBk37uvw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: IDl8L35oS9C3oXuQnMbklA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: G191Czy_Q5qoiQEBIeclbQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: PL1a_ob9QSOh4JYbQ1ck_A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: WtAR57KgQgGkANlNoojI0Q + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: bxlVnm49QzaJWX4KOp3thg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: foKTt1grRkmOTbU-YhJBnw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: esO8hiLrR9ObQ-5sj8wRHg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: bD3-D7DRTHyvTQvjffCjXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: fG6eOLUmRuSUEPUXcnKHNg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: exqf1W0pSNCQcUk9DAoOeA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: AzLrEqu5Q463lfsAjaFU_Q + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: UhMTDRS9TRSWkFp1SrnICA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: S8sH3tOTTHGm0eGiOw-xQg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: QdGIBr7eRZu8R9sZc0wh2g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: PY6VA2txSLCEDmZFxQv8ag + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: RJ463zVASA6MOtQquP2a4g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: C8bYvKeWStGmNt7h8eOsPA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: CB62snvhQ1e-w6IWiGNDlg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Db_jHYswQaOLLZDT3eRfmw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: EHPLlpyuRieS7T1xyEezHw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eG-KO-MbQ1iix5FwFmTuRA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: X5M_NKJmSYyXZ0-xPQ9XOg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: UuJdetagT7-F4E5Tuvhv7A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XHW4SAvjQMGE-iBSCQ9d0A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: WruD2_myTx-yEXLA2rL1Xw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b_4SZhToQbOCIKI7NEOwMA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: dsYDhTkLSQewHyZcQEF9wg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Rm0o1H1QTgSb-fbfK6D22A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: IRF0yhezTvauEaZojp47qg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EJOs9_IsRIqdVrXrGT-JOw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: W2o7Z_-6S_2vrgZgxEHPqQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: UwnbCPBPQKCMugdxpcyvZQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: I2EdB_L4TlqK2ivPU7qazg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: HFeI808XTgifDrTZ7Vo_yA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: CMf3JuH7Qe6ro29U-eKzhA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YO30yLPURWGBow_NIpXubA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LFBxiHHzSZq5JtHgqdD7sg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: Jh6ys5zRQNK2RHY6YVqZzg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: O_pXIuxrR3Kv-lHr2RO6dQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: a0S3yB7iShiKFHxO69LLpA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gz5N-lI8R8O0zIfiP1a7pA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: GeBHBTboTqKc4ENIfuosZQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RiIjkmxvQO6iAPN3t6i9dw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: agxfPethSLyFPiIw0dG59w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: URMFVlJgSPmv0O3SJWGvWw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: CXWjfWFxSgyefWYIYOrIeA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: RXB4H57YQTKFl4rMLDKC_A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: RXU4eWbvRRaTsRynIJ8Z7w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: QjUJDX3nQWuxyc3doJOTCw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: YsrVhfmVQ1uluEwJsJ6zIw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: a1z6LfwYS7G9earU6vhbKA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: f3MgUap0Tzi0fdbWsJwu7g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: M3opDjN0Qj-h5WYmSE1AdA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: OgafI7DzQhmsLu0LFNya2w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LitlxYlwR6qy20625S7OoQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: dxPaUcT-QtKPKwUvwwLukQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bmTSmpNjSiuLl8Ced2g_qw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: dOhqHGIMQneL64BdkSaUrw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Scmka-6UQ627pxNtmsxUEQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: NAIme4FlQm2AIb4oP9o9Ig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: Q2MQtX0sSMaoi1nDVpKuGQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: cDTro4SWSp6MpiUksOC3Xg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: N0W78Mn0QKaF2G6o73d0dQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: cd_6M5J1TmetVLD--6oBig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: XcB9PL-tQHOo2LsIzwSaRA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: b1P94sFYTGi0EjmqRjNSvQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: IZOSG4W2SW6us1DujdJaKg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: dgGeXhtwTC-Vt5e2bYbG-g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Y852hZ6jS2GluyuWxVe_NA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: drzlYevrT3CNjhZCBmXzQg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: KYZfrVkKRjeftPFkKJbmGw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: O4rm1zmXRgStcJcTlfrxPg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: LPiaqMRDSgmUZoC8xL-ycQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: NULUAOX_S7qrljTYzDGeZw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: NRlbzYIHSkeMzYhDgf9vCw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: A0wKQlHMRvKC4myAuP1ubg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: G-C76QqSRBO1H6g0R-ZubQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: KRFKgU0lTtma83EWbHXakQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: KaG4YgkeQEaknmWPLr0Kqw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: GkPDzeXBSLSk_XQGVBh3nA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RTppSncRQPyRvg_uG-JGPA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: BhTsgyQkQPWTSp0L2_IW4g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: KXWYCQgZShitj6mgS1ebRQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: EMSZcxpyTAGVUetW__3kTQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: Pc-EuItCTLmXik0e3gnX6A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: TJtZAuqqSfiKmfZxQ78vTg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: HXIQBy7gS0G47LbaqemUkw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: bnT_ySYcS8awRiVd0nXxVg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: KRiak2eXSPq-XRvb0bBhvg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: Fs26qwEiSluTmokmh-JPRQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: UuXG6TedTmi2uA2bfPplSQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: QF6JoEwTRlau_U12TBHI7Q + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: F0VJZNsaQEWQkTYcDuGm0g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: HZCSLzHiQcqSpK5zhcgMAw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: E7261oTHSTSMHDQhAL62bw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: AnZNznBOQmmvlLrq6cx92g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: csCRlmYpS6OWAE2n_Dwa8A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: JacqlK9kStmWGQP7rjimAg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: PHb0vsiSQZy2fxYksPLzAQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: c1NwQJFHS-mHnNNZPODJfA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: TYJ1tdGgSBOBiKy5VRtk6g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: XoVgnHQ-TN6IIdKqbkbxJg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: Sa_pdt5CR3SVS7OG1DBxig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: JMrge8QzQzWGL0x6l8LqUg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: WPT0YB_lTlS9_xHUuZ_bVg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KEMID7U4SbyRo9zpaNLReA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: U6XySv1kTvCvOzuluPpabQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QQCVSF3ISMSV2Sgv3uB5lQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: XPVo0ohVRO-YTtmoDz-85w + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: IVMkX91oRC607qoGyj3DCQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: HgRfwGZhSLGXsgaRQIAZpA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QF2GoKMaReOo-kWExwD3aw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: e0ICT-pnTWCfE8qrtE9e1A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: c6BHsAJTS6KJh0wySRO1AA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: ecbZndZwS3SErbGGdMMRIw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: ULzjnEQOTEaw4s9l0-YzOA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: F4ZHa9K0Qr6kz57wBKKtNQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: f3pkoltxQrG1alFrq4burA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: JJ5GVeiWR0KyuJ3efZEVCg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: HuV3V8AZTHa-kOz89XIqew + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: CuqRzwsWTlWyJRa_3C3R4w + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: P-xssrA3TgCkKWZYFZuVdQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: HFyFNWzvRSGNNzEY58Fz4Q + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: HLLkIkPOQwOkAp-Akl_xqg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: Y7HH98x2QEab4ZuJNT25Gg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: K26GhwWjSKOknzh3T6gMBQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: VOjVuOYtQwexK65UTQ8Cbg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: dXnZPA4ETTm81Wq4uWJGcA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: Mzf_FoBxSBG-yqkTFXxlag + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: MA4ljm2CQVCnZZsZpShwYg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: SbUW2_B0Qiyu7lPWGiQ-mg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: ctQVAW6eTka9Gpv8jCO0pQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: d90FttZkRiS9clJYHrl7pg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: f5j26KJLSa--Vp_4ajaeQw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: co6ejij6TbKoISQgTc9yKQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: WfsSEP89QJWIuqrgX0HFoQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: Z594QhVxSh2IiRhkvvwn6g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: P9-C9Md3T7WJhFrYqyknyA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: OTIIuRCLQ2CScpnd2JHTfw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: U8bXmjDYR9uj6u4wYWCAQw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: EB0ROwyGRT6b0oE1aYugdg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: UdwoDh-NSMq-miIM1Qn5zg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: O1GaafS4SFOem0SLz1Rb3g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: d7-Fb8fQRrqpkKfP9qOrJQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: fchMe6k-SCuOxxpQPCvL5A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: evpm9AClRgGieIN5l1f2SA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: BvCrgY8hQMaID5ipDuyOpQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: JmlGQs3KQdygLpDAiGFWyQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: fUCE2Tg7RvqKzFTteSuqhw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Nscv2UbjQVG4Xzk2jF4Gdg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: PSOVci9EQeifiV4XFvOaGw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: VxU8hRioTP2ZnI5AczySJg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: PmxKPMV2QRa2T7t4Etwv4g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: EobNsgSUTiWj-N9r7erFiw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: A3VZFZEFQfWx811skzdIeA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: OYa92TwqSVWuFGnjWeB0mQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: BlagTDvdRkSe4BGreY61eA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Ctnbo96cRZCb8e0Ul3frxw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: NYLLZFWPSsOUCIVSTQDkeQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Yw1noVG6QAKjepWevPsMng + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: MRw9YU4KTJ6f9FjkP9Xc4w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: I5LbYHEgSTKbD-_hWQQBbA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: O5HAM19YTLyCbsxqJFeXOA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Yv4ydW7jT_ORi301t8gqTg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: LNZnZgfdSW2cOVxBUfqqtg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: S6iKWRgSS6O74500V8pa-g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: FHlDareZRgOEIpDkmyPKTw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: bLVWaOBnQtCpfFRasOySZw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: VeYbreMsTYeBKeo_CwKFmA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: Ll5gpz6rROy0N3dZuH48TQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: PdOpftjNTRWvdnzmJgbMcw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Zz5pxUEcRTKEpA11RfBIMQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: WdxzrTimQpGPwOesFYNrww + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: e2J84_VKTEWcVEbM27ds_A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: FYY3sFMoS0CuBLhvprG8iA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: UcznsXgqTsWxwWkZkX2Log + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: PMdfmIghS2uki3i38kySLw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: Kood2IGjTfeJEu2rqoFOoA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: MAqIKIOuRJ6EToCtJH5qXw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: AFppzlYIS4O3nj-wjtUT8Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: XnBO5yuDR9eUhrAFRZB4Gw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: H4uE03n_TfibMwnEGqBB3g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: XrXRDCpzSfS00WVRIVOeYw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: e36w8E8TTEyBsmUpYeQfow + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: AXDQMSJUTvCWwD-_xm7CsA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: Y94gleXXSi-uuezcUPHvbA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: KhrCVs1QS-qzaXAc12Xssw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Q_glFllpR6Kaz1nhjevL_w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: JbxarqDjTSWcRHXbizqevQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: KJ069PaPSdqWnqKMSxoIQw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: XGUA9M_IRUGkP2Z60VZMhA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: D6s3U2RSTtGiugqMVcWh5A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: MfzsDI2pQd-1C5ENcaCd1w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: cGNfr2rLSJW9HXIOgjYVAw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: WY3lR8BpRAyNTh0M8Tirxg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: Kn_YNY9vRy6Sd15JDAMqPw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: IpQfMy4-RgK_KvE0WaEnHg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: ZBkwq8h7SxaPXKl6Mnq-tg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: NZnzdJ6QQLSUNzF0UdOPLg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: dIwIFQIVR_6OI7tR09ZzUQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KlMY7isETVGrPrW5W3WLUw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: XmKmt3CfTOe4X8zKCUqjMg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Ngiw1yDhQIuYuvOn-xTKDg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Bpixh8TkQmGX2r_5OcOVpg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: TwaueRbpToClZHnd7RGq4w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: XWeBSF-eTWiYLaV7wo81Jg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: PtRQO1ukQWWWKu_0Jq-pMA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: bI1jYwW4QD6pO0xId5I31Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ca_2l4d9QNyHLlHwYTl8CQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YZ-znrj6RYa1euUNKJv3OQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: Ok5NbcBcTYm1DISqJyeJ0Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: OUUg4S64SsC8o4vxgywyXw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: Et163xNSRb2Mb6niHgJGtg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: SEubLfBiT42cVczIchvxrQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: bbo5pXNmTm2XEHqUb4cdPQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: NQJPc3faS6msEm6ifMHo_g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: Nm6Ho5RlS8WD6W-wp5lSqw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: cXz49DGaQh6_WJnBDQsOEA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: KJs7olrKQSq_zuu_MXXViA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: b0lEut7uToyly3X7PM5bRg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: U1I6I4jISW6EKaSMyJIdbw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: BijwbZNRSAufxiA-G-2i9w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: KRDl6NBqQC-EVGlM0iDyOw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: QQM59K4STKa4wxMXzG-YNA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: JI-mNfF0Rw2Q6eQzNBhb8g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: ND57W-HmQkWEeLO8K25wqg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LzlAP5RhRMacVcztTkHyzQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: VyHXAf4vQ3-IEsNjzmBM-A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: NkTAE8zaRGq3e3h7ir-G7w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: WuF_bpBgSma951JY4_8SgA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: bHhi2C1ARPiXr9rJ9Lvdow + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: fRHa__NxRxSCoNfLSsx45w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: KAv45tUQQCyyXxECv88BBA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a2wO2tnOS9a0nFwwozaJxg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: KPq-i_w4QkCG2hJowTHpVg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Ne-m9_qoT1S3n1eJpsW3wg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ZvtjZYyUQEG_nhmUsiEQ6g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: En5Y-vDESDqU1zeUkhrbrQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: ahiHQxTTTKGmSbtJrRNsvg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: bCVX_xEJS2ClEcLa_ad39A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NMIly4otTP6knymDu4EM6A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: Pb2uPs-3SzaWpKLyRcm5TA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: fDUY8TqOTV6oiRxH-0gMaQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: PB6u0L2DRtWtk81ahDB8iw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LOlQxOLQRiyTFrDDBLMkfw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: e_EPQ7biRyyKKuA-e0oQDQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bdgdeHFWQmiX5su1vopNCQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: UpsCg8dZS6q76tw4QylJ0A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: FLQBgCP2SEOZuUMVXJSIew + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: MCR6fIE-Ql2xnjAUiXxB7w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: BCkdJqXoS0yxEkAylpXZcA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: fvuQHDyIRImpXwc35-W66Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: TpBFMYbARG6ARk4SME6h_w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: MkRiZM1ZQsOF9cQ_6BllYQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Ea1UU51gQ82tm34WwFf5XQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: aXrlEKpoSUu9kAspvhcaKQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: Q7tOwo5LT3GDCNjvH60fuQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: YkJ4lp0eTXWPcFr773IKkA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: P_Fr6ayxROO8D_tca0vZNA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: Xt1Gok7JSLmgvoDQwO95-Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: cLV13AbhTeieRhXus0O7CA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: UkbTBIJdQEGO0udxq8xHyQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: DDrmGYA3TTChg8t64jZAfQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: CEM0Ez2qSmSNgY5RI9AGHQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: B6JowQcTRIK1QO6mgsI4OA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: MF9cfw_ORkm1B5OBtMUGOA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: PvLAacXeRzyeQNldDGlARg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: aGMOZrvKR8yc7LeP-Orw5A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: JbCJGW46RFeNaiHQg5zd6A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: JhNMXyfjR1K7XP6w6L9PEg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RShvdkn3RJyC3v526e2CrA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: LWgA8ZxzQC256kxHArE8Tw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: BKdw4GFrQGCmNKfNUkJKFg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: FkqiMgX_QhS640Yn5Mbaog + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: UySXSsLjR3yvfYdlNH-0Eg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: aBUOi5HLRW2-reM-UzafpQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: futYbQJqTj-ukv1d7_23hw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: ao7__LErR8K_2JQM4tjZPQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VFJo_zizT-eHKkwVY4rZ6g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: dr_mqZCKRsm7jjAU0u59KA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: D_hP8Hr-T9aoJqu3yY5yDQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: UmAL6ebpTWa_6GC9g06EZQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Oy6260nPS5GmQbC9K7zYJg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: ckDuOPK3TGK7p7qjN4VPIQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: AWP74qo8R36DJp6A9ev5GQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: QQ5x0nLGTY6Jss7Fh6IxiQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: etn3D4T3S2ejTOnC4Rj_xQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: UaUXM0pfTuG1GmIoL-PGZA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Twe0iyNwRC--Zmd0TfrCbQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: MbEl4DKhTSO-mmx3OHl3ng + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: YzowmadKRPeTAvy2P0dpQg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: Y-CQfMsnSUChutKUypxVBQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: P6QFlhYvQ2mtEgVEKJX9hQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: KTUWHj6bRkWzwRkOIP2HmQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: V3aukMRCQj6jW6IVieyTLA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: VKVPk1kXQE-lwkCxA5IsfA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: ShAfiUeTQ56XcNmP0dBNSA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Y9hbKGKPQpmXHZ9Hdkgt1A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: ATris7DfT3qSJ2P7vGmhmg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: Pn1y5-_rTTiRC_SoMxjcqg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: IZSr7LvUTcCbGYGErEqhbw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QTulGmYpT4e8P0HHxz-dCQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: USvqhkYHQyOtwmWj_5n_Hw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ba178gfgTsW4EzNpzJKuDw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YlCdenwZRDCeIr250W2TAw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eaHlStjyTWeQaiVVBKNOwg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: DbSLjuk5QV-TB_u7A7QU3Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: KA7LEBFeS4egX174_Emp5Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XF7CWi0xRh6ZX61dm2fBrw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: d38HH_hbRjeVOVNMgkQcSw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: fFRFtBOIS7iPAVLd34go3g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: TNDQ9imTQuqAVN90hOBY2Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: A8i1pe1_SXCsGlTQo-Ne0Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: H7Xh_mcdSzy0HOdbtbli3A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: XCWfV9EMSwmtHs_tO2Rkog + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: AjwcCv7JSOGP3Cy5G3LkdQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: d8G-NmDqTL25um-YsFtg4w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: fI-TOLbQTdK3kkBYqELUGQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: N0Pei4IBQN-2HRRyyxq1lw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: KHmGasCHT_6rTt9QorX3Ag + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: WGBWtxrBTbmgXZggWToCUw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: CGEnKtoCSO-M8CMk2mtBXg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: DTfNCcAYT1GwwlhhjSRRVg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: dgoKTGnnSHuzNx_R75OnGQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: ZayJ1FS_T0K4U-ZLOrV5ig + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gv5r_3-ETSCuuZ_C1aEceQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: bcoRe6HOQjiDKj7wgq7_Lw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RGfxIcStS1i4nwmRPMGIlA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: PBs68FNoRou5mJ8P3yhnxQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: P5Oh3P8AT3uuz9cMkX9OtA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: SQVfhOxcR4m5RQ8kDtBkJQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ASQa9BnfRWS4PqdM5RJ3lg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: X3y_Zf3JTSydm1aFwp3ytA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: Kd0jnFSdQkOtWp3shp_Fjw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: I3rLBcrYRmOwmMagBFO8dw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: O5S01xrwTr-a9CEpltKqsg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: U7RnkYD2TPChiI1iQVJ4zA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: KZJJm9JgRfKJthlTU7pF5g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: SI6i9WcHQK2bjjY_-LUCkg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: VEDdsvgJTnieopWDtj57xA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: XtjJUkZcRqmJo8YI28hlEA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: KhGTagglRGCN9GH7qpa9Zw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: S_LFVOxKS-u8ry15a6tDJw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Ssa3mxvlQ3KiNBYXUSpH2g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: HoZgoY0eStOSoy48gsf3cQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: XPoTpSNjTI24mhOuYxyS5A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: U4_ThJ5cSPq1_zbX1fH-rw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: UCWq6pmXTRaRj333kB0xxQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: B0lG7BjHRTSdEw0WkGtRDg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: ZnZCy3mXQoSxyYh4ObocXg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: fDC9-zPrTeS9MfI6n631pw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EpgPpaTNRQKVgH29VhJ9DQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: D5hxhHlQS06ghjevauHtYg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: X0o8P-J9RSmf5F2v-2eNdg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: W9ppgscaSbCOr2riUK_zkQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: EwpXGWSdQkO8QV3M7agmMw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: H2r0q6_zRsCNlh51WS0i5A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: NJpBwxaQThOArQC-d5d7JA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: L-nHHFt1QlOYE8DjHmTbvQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: AqUAh0e2SGGYcJzw-8XW3g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: JsgyJseZRWaiNhGgBMUcOA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Izkqddl-TTeG69l5LHZUIQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Fl6vOCBVReKU4TQJAzXrjg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: AO-7wI9OQYm7NxedCuz8Fg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: ceznJ_jNSbekNzpUwnv8wg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: e8W6uV7GQ4S7zbphALCnxg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: djLbFjkPTPKk-g_dAyfYvQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: CVAGbVH7RfaBYZyQCpryxw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: YSzpDHeOT9uvz26pb1HLAA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: R_MPGB59QeGtk_Okb30f6w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: fvu1i1Y4SguP2PMQ7gUK4Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: aXIW9BVNQnyZZof1AIKHzg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: c7t8K0dfSZaIeZVROB_4zA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VPl--q9sTaOYBMijwbz2xw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: bJuP7weuTTiPWLmYTmYTXw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: M0pgDnUIReu3vcT1TnzZxg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: P8BHUK6cTz6t-xlsmhYhlQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: ADQX4ppXQOWHySGKkj8hxQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: cpIPi0ywQmmH6zc-bznA0Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: JB6DExQ-T2mc_ibOvdMyLQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: YzJPx47uRyejrvJYyxGZ-g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: MaYwViQ5QkmCI65dwxXgLA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: T9Mhkyi3QwWkdDK4flf1PQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Cetf_3qURDyHqyv3mN021A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: CEd1vCjGS7CKdq_MHHxinw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: LHadRR9MTlO8GCHgc6XizQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: DeveDMA3Q8yyU14lermDuA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: I9rUIPFyQkiVduujLpzAsg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: AftILQYIQ5qtpIabfRL_Sw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: cMG4h3L9Tti3k5ayH7CtBw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: UjhpgctdRSOwvYHQJddM4Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: Vsyu_LNYQu2XhgckYUZhCg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QZyIT8_fSOu5mLVW89Ey6Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: dWfaNtxdRUC5VNr-tFwgpA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: ZCtTpQMUQoydDCVMQUIV9Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: WqQznDoYSRaow48_X7kCOA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: EXlf8le3QdmNmbkphhsklw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: Aciu5GpxTxWhs9hdhB0F_A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: OqDGxtlDRV6IL9RABjBcHw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: HAwOMwrqRYSZnPCcYdOMqw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: EDb2sq_nR56Pk8DtRYR79g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: fVNXTIlTQqGKig-n_FBWMA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: LaURw3zaRoSvhT8VflLHDg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: EeYz4BSGSOyhDxwOzduieg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZIZctQsLTv-aS-YFR5Snkg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b8uPXECYRoOe-GYZLWaC_w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: OhfUYedWRCKVd3VmGb1T7w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: RnCKTKEBQjalQ7-zKetSfA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Wpa-YKydQQyF_DQTnEtv9A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EXbaFH7RT4OLlTI1UZddDA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: Up2aok6bT0WsTpcbuVxJRg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: YBOeT9QwTHGDkwuhQa0_yg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: IEsxtDWRTy6NvlZkw_F7Dw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: RxOPpiorReqFnIygx4eZ4w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: eRQkypwuTOWgRksRln7iCA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: I-QYmDoZQ9mK80q2iI6ojw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: NlMGF_FHRaC7XuERQseXPw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: LFq3MC8fRLGedlwherXWUA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: XVByGOUaTR2fj0vi2XGP6w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: Bh8EoXmNQJWFX2QVhZwNsA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Vk_FQmi7TRy8u2EeVJhTww + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: UGesbOH_QcSAOGySXeWkvg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: Qm1M0iWfQTmvnZuLLiqTeg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: Jjxk0ZZPSSeT2mCg_3RfbA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: SQvBiY9aTVG0EZISsF1kdQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: cL5Q-umXRMecYKAlXZlmQw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: F8HMLeElQR6pX98lZJWH1w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: NOzXhuUYSZ-pHL3nbnf-Dg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: JlnIJQ8kTFWPP2l09qn_WA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: f-UWSWNYSl6bWzz4zGYg5Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NVbNed5eQeupBZq1vGqk_w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: UYUtG_5vRR65GSoddaBheA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: V-5N9xqcTOm7Kss6J3Mysw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: KvEGw4nlRquYoJTc6xZ8iw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Pz-AqHOqR0Ske7C-oJNDcg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: MXclepKJTBuuidoSviJrCA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: UlE-_79qTDy6kZOCN1rwzg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: SLkwG5gaQUavB3eL4f-n_Q + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: TXhk8uwLTQabK0c1tV0Auw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: YBLnpW5FRVWY6XjGcfxXvg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: eYOaxIJyQNe9jKsdgaQMYQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: PosYXfhLQFeHPj-WuWW5QQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Cs4eo5UiSGWnzK9EWD4KXw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: WKgBJa07RxyMkJRkZULG5A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: HFiNr1ogSZy0onDbWw6crg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: ALSiVOHmRy-F6ko5EzLcyA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EtqsqUL8Tr-jfql0Bd7LQw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: a1qa8L8yQbWkVU6Tj4vTyQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: aSmIqYsJSRqCrIzVfHwsJQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: HXP2vzJ-Q--4e_Fi83qfMw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: Jh97-ZsMSYe_trHVvWfnaQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: f29UzSFLSyS-VTolXMShvw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: ThD-9mMASN-0PMseysPJOQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: Yk4EcxhFQrm2hxRcplHUvw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: E9srDEVETDWy8RFNUw6b4g + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: X_aAa87wQ9Sz5FZEAJgLyA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: EWz_fo9wTg-72cbs3ZblEQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Hb8hGezeQ_220DQaNuHQIw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: TIgbAeUbTFOKt7SvjZJmQA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: fmyB2IzzR2eguxVG6kPaxQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: VZqjsRvARw-CUf9D068keA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: ezMZZ-B_RvGFqYC_p-B4uA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: dO3aZW4cToiu4OQONTW91g + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: HKR-lsYqSZC76HeE6pOrsA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: ILfrQ7gbQCq3DQ8m98EjTA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: WXQSz7XDRHCnMqx3DHd_lQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: b9Jl7O-WQISo7qTybmnHkQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: B3mi58vPR0eQAPq895os_A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: Cg3xIqz4QJ-V8tqWF221zA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: T3_8dFn6SO-iT1HegOt4Ug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: B0dEBV0kStGBdB8jijBgbA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: Xh5XGmbRRmiL5RfCicdxJA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: WoQuItnjQMKlYAJHglpn3A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: TKYzUgpzRbGou5Nlm7saLQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: EEteQDmjREKA00tJtgNQPA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: eKhY0D_sTuSLN1cgVXghKQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: YlnGCNBpTSKMzOZHijNaYA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: Py8ZnU89TFq_XS8-8w8ubA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: OOtjGXW5Tba01kF53ehhPw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: R5_IImVjQACikGa1hJ6dJQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: JowVLwQgR0qA8jlZlxYwug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: D_eL_fPLQ2y3eQ6IF0xTZg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: SvbOrlpxRGyb0MkRnUjGbA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: RX86xznjTF2PEJxPk9vh0A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: P-d7QWOmQlibT3cuSM2LZw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: DjV53xw6SmeWtSP_iNTvFg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: aod9P02ZRgO02Em6VIuJ0Q + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: TpJtD6XFRbqjaup7ViThuA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Ne_-MtnNR4mDpgffYkjxHQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: G7JLRq2hTOOkaFNzTYl0RQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: D9elh1y8R2O89qGF22YLTA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: LEONW0wESZydxb1fxfU04w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: b5aDZCpvSuarqJ1iVhNOaw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: beD-0SAsTnyERfU00149qA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: WiFhvKnYRGKX64X_sEdhjg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: NFo39_AiRXWldD5C9zdnOQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: deonDFvzTKKj_1eidBsh1w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: X-qV7ONPRVK2zmq-V5BaYw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: K6ZZni5sQde_9nnBthjDOA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZwPDThssSASMGu-1pqUlpw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: Th8H_IZYS4O8Pm3OjV8Tsg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: DnmltDpeRbmkP_lRO41zIQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Wt0lM88JTvqJFW25TfzUAQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Fvudxw_CQRCKiMeWjaqtQQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: MqZo_FmwTt6SF3RR2Zd9zA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: VOfp7WssSySnyj7ORQ0wWw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: WLix1r5tQ9qzldKiteNutw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: LSLyBvNlSKyqIv1YQwzDAg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: WqY_1nV0SouUdOxEi-N83w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: A8s5mY7QQDu9CaZi9A3hAA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YEbQwqWgQ0uNw3FtnWIBEw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: bV0JJGldTmygFKyYPV0FFA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: XI5b2VaFSc6Ig0gvCZWYGw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: ba5mqufwS_qk0mIapRkUVA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: USNlNty6SL6kHE4eB7XHcQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: DUte6fTnTNO9tvSlOjrrug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: WfB9X1qmRgyUy3dFUJOwpw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: IX5tBOxrSAONm4ER3dmE9w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a7gob-n1Q3i7XyP31CQCgA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: CimkaNOmTMqcpTwCEOrfqA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Hnd393wMTI6it2hB9r5u1A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: Ik7f88URRByvY8iNa3WXgw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: TdOekF1xRZ-fdvmuL0beUA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: LXIdeXkORr2nGhhNyBjlVA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: N8s9vdUjTDWwD65wblbrrg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: XgqrlSmPReq89A5LD1iSMg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: VOHCk6AgS6CEFqDdgj6rbQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: UumEL4FQSPGCTiRK9xXDPA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: GbRcqXcTSN-2Cpc_6Op8pQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: DGzlx_D3Q1a-pQvcz1yAxA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: ZDWMIUJ8ROmwpSBc2rsqEg + release-eme-free-repack-macosx64-nightly: TtsvYDE2QHWzv7TjPL_lpQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RChsgqxYQguNDafkfL9q0w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: Qvawj1_fSJ2r2CzMTuouiQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: Jvt_PJG5RZ-x8IazROOF6Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bAXLR3gZS2a1soJt_QmG3g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: VA26fDTpTgamHZ4LP-CG5Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: KDToiq-aRqmFFOh8z1769w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: HCPLt8C7TWKkZ1FwZYBiJg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: JmtwI9qFRoCBw443LBilSA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YK5FCPBQSoe07AeukjrCwQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: AYRNzyKMScCKxKoTHBlISw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: A_VmwgyHTuex2mZXlqrWqw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: MNAHQYU1TmCojfgr9Ji_Tw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: bS8LHdLaSsaA163CubSfXA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: ehu2oJqrRTiwMU6o-3oSMQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: Dp2jEf4cQCWC_T29i71f5g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: JqhBG08BSJCkmIgGE6U-eQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: O8U_AHp-RHmBrxf7DrwIkw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: bNwYoPWkQRmh6-l7VKcFkw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: O0HgcHSYS7inP_oy3wTydg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: CyyVeItETESoIRcPH9Ap6A + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: fZHLDm9gRg24-xTMUaPtOw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: PjhzGusOSvSRNX_uvaDqjQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: FZbrF9RYSymxxdrTeVvDvg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: bTHwdgKbQBuC3ljVzjfs_g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ZavhHnX_RN2GhC1Mf31Psg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: feDB1ILZSw-slB1GDrUpeg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: D9zBMxMsRlarsmS9Xf6J2g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: W0MvB0lAQ2y1LXN38AoKJQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: b2IQDvnJT1ayxSMgx3yDxw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: f1kIbvBRTeqqrRC-LmrjaQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: aTlnfHLrTw2ysuZaOw2kVQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: bcuq-yfFS_mLB9OhWSePOA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HnzvmHCiQY64r-WUGKrlLQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Ww_gGjqYQoCqa2B_uT4wwg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TRvHm_x7TDSfKtMARB_62w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: KbpXGoTeSB2wfnLTfTTzYw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: da8ocTojTp61vfjNXCzpNw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: Nm8-cmONRyKs-CHoxFGr1w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: HrHDE8FmSwi4w3jI2EbrEg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: PZJx9PsKQOS3sc6CzuaABA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: NW2mOt7hSC2dfZ6c1wkWAw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: R-9WgGw8RaezU6AXo_d8Xw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: M5q04sJySVaYs6ye_uKKfw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: GoEUPW0ZREm3GJHrvcdhzg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Qkej-tmPTRSCSiP7mU_rjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: B6FCLViFQueOrTHpxGFNFg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: Dxcganm9SjmegCUA5Fmj_Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: FnAPIs5ZT1K0vLvVpisRmA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: byk1GutIS0y8ww6bzvvfKw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: U8QHrjZAQAiOzdMTiWodEg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: G-xtOQfpSsGhYFxDJpApeA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: Q3wLQME9TOKaLqIRonHQ5g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: avtSZT8dQlemHd7xUpD0-w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: VO-00tuPSPmahF7ryGkCng + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: V7S-kxToTomtgKvoeIXGHg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: IuxWJ9ibQjCrhFw6Qti4EQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: NjVp1B4gTCuXA9T0_EnPQQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: Ve5elrx_QkWCQMG24f0uJg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ps3PHcwBSGiOlfx6EuY2xw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TnkiyMMRR-mB-Po2VSuh8Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HKKQ4DxNTh-Wu57I2G-oWQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: f0pewahcRBajx856N1z3OA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: JPWIOEl3QCiQPP6XPE-6Lw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: frdrD75JTamA5pclBGbqqg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HrAH0pnpTE20Vrr4rtIhyA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: V4mj4e0jRdOYhROT_d3o2A + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: LpXnwECmTwaouD-EXraQ5w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: dZt0tlYpT0uYkrd1ZA0Czw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: M4PBNRmmR8SexgyC79n55w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: WnEjrfR7Ro2slnC6L84V8w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: GtXKQeocR8yZjkbxjtY2zQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: fTNPZgRzTHyKP_HG97tDEQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: YldKUA-xTESm2HtIUYnIFQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: KuukaWNKQJ2lmeGjjEH-0Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: feRrl426ScOU5N6lWQ_ozA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: dywq5ZrWQV6dT2NyWA9SFw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: F6DGaEUaRAW-Ek9nm1uoBQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: NdsnWVPaQrC6COB3RQRPCQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: X5_vtQBNT5KvOZyF2B3zRQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: EjSvrMj5RXG77ft9NW7ZgA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: Nj-qwVqsQnKrBo5MRZIxUg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: bzhkIcKXTN605Bi4fH6B5w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: X-EOVAiTSbam5w3zqNxrMQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WjP-A3mtSBezdFbYrmOvGg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: WJTu_WOBQCihd_aMz-OnIw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: KOiua81hRZmpKlDRVJjHtQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: GeCQJB3TQZGZFty4ANCVjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: YD1eXFMTQkGgwYy6wRUE_Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: E19cA3V0RPKjxbvKcU0TxQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: SamqegJ7RbyuCeb-JilvVg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: R_ldD7_6TF68wtXLnX7isg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: G_96vM_3RmieUvTEJVvMjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: GI0k_4YQSqaGPEh8Gyfnew + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: Nq0yTbkAQMOqs1OEuDVdMA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: ZZEFA6obSfWWG9GQFQlvrw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: KpCKtGflQka0P03DFHHMOA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: d3j8yTneTcqpsbzQoQ6DRg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: WioISVpZSeqZ1QWQSm3IlA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: Ga-LYxMoTQmdj4sQsHlD6Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: fS5JF1WJT4-soqmQOnQ9TA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: D0yKjNkdRvmjRZ6wvfoX8g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: TjJCdYqcQoa3IuT8_UrzLA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: J6j0ozfqTLeadDTQHz6NPQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: FVTpRfvhRRyuNPuhTbJSKA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: cHQkIU0lSMOZR_pYRLmEOQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: aQft06SpRja0G4iNjH65Jw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: QAzV69l_TcebHwce6mgLgw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: PL6bgWFISra_nl-HhQeBeQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: QYV5bbvoTleIiZ31xtm6ng + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: alR-cZpNSKS4TlrujQOwXw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: L0dqR9NHRHSEVJU_KGmbcg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: YA775icDSFGYfvqJzjmAsQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: SMxu6NU5QZyyLPrfVn2Trg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: Cz8M2L_dTbOwWl7h9xS09A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ObCpAHa2T4aOEfhqPWJN0A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: Iu-R1vQhR4yg4-u-XekT_A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: NMxOLJ2BThiyeREXUCMfjw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: dYE12GtsRAiyFcDfjGFL2w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: FzfPo-shRU25gK4PvAs9zw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: MN-J0WvJQX-eQqpMyptTHw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FxIHLQ38SRSvAwAHM91GIg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: OxP5kOHpQrejUxaux1PvsA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: DX-JYoCtSwWj05Hr4585Zg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: J8F3UZEVR2aYflJaanEXfA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: NBO8AkZWRcOXeopc1MjzgQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: SJa3RYxDQbiG3VwLoTujEA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: F9Ew3iMpS9yRnM_Z0jFjbQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HaHl_sgySIKVBSCUlwdEtg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: JN_GxUWqRXW06VhVtWxiOg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: aNROH74YQdSuuYuMiW7x9Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: Mz9crJtSQvGbCcn4GLO8_A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ChHJvJMxT0ypgNCp-P2oBQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: caZRuIHwScGDcsJA2lYP3g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: KkgQQKi8RByYpkd4h7VIqA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: Yjch3XRGROK4uIcSuCsN6A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: UJSn3Ud3QOWyxC7e2zUZfQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: f5FXBqJfS56VCNCQMMfQzw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SgNbFeoJSnWQaJtILpHr-w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Hb5pjVFwTVu67Vz9AC-sPQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: WHYD_17DRcmWfL406YgB-A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TSxw9cggTzCEFs47hki1eg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: ApyW-43aSa6qG50hD7dqEg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: eK8inN_pS4eA-Q0EN2jIew + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: J1ZmHm4nQ9G5xCR5gO2I0Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: N_hkGXsATmyD6vs4Gwb_6g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: OsU7dc0QTBCnyj4JYQtmuw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: UcHy1xF_RGi_uwp-HUEHlw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: e4_jwPAOQNi-6ItLlSw6Jg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: c_fED7l6SvS-tvDPa_k_zQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: H99ovAjMROy7La4zJFOMrQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: MSQhyrwORQiFM0J4RU2kaQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: VRneFe6OTvWbtshLaYjrQg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: dgG8nkQPRLCsK4eZiX8tZg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YWX5QqZsRl-AB--7lYgMDQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: cVZ7NsuPSK28VGwgG0mEjQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: FooUdzKBQ_a2iHnI9TpuNw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: JagEddkgR3CC79HiSylW2g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: FMix8PvIRfa6NKLdq8JONA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DQQRskWCS1GjGRfslSyNcw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: AhgN5ymRSbKQ8KTfLvxFHg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: cxJNmRcZRiq5rDjR8rh41g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: bon4bte4TlqCevDeBJkuaw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: MJDrLKn-QH-M1RIt1QJJQA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Ezzbb0X5QFWVtvOe_ifdFg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: LaLA4PS_Q_yI9AnI3CkGpg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: Ru9A-g_dTQiuXI56nnOCVw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: a2VgM4vwSBq6BYgjS9revQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: fb9yzjYCRg67I9emXZOAHg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: Tp-0HuAuRMCEJOaD-fmiIA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: Q1-cnKgBQHeGkcvzp6ntKw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: I2R-eU3nRoii1w8mzESJVQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: bKLawfrVQhWeZ1JzOmQ0yw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: SJrQcpVZSC-MlIzOWA1njA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: BR82ivS5RR-GaBlMvFdtbg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: ElQFOdf3TsO5yM7ejODNhw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SsMwvVKySzGd9R_MXQOp-g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: NJXHJdCXTW6fF8wjFfzwmQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: d1ZAhrOSS2OK6gp92Fo5CQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: SlFRQCKARHmEc4EDiYqzMA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UojSC7jOQR-wmcmnlcz6OA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: Vr7BD6E7RRSVS1iSJsh9Mg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: Nu6Uu-58SkONsA5LwHmx2w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: HpT-JvScRcyz-D8w1aTH0A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: ScJdy7SOQjmOcubBeIELyw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QnrR3reHRcSWBTMp7znAiw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: Bpkc9sNQROCaQ0S8P8JhwQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: CZkvvLxAQg6O4bpglR7FMg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: cNlFKuKHSMy5a6uoUJGn4g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: D2fxKZzGTPShydka_YMhSA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: acOIN0IDSXy5-lsjnpiGDw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: aWYWzzZzRYiw2d7rIvzMoQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: Z7dwy0wBTjCVUcIJDdT0jg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: bv_kauxmQemY1ULDI4LBaA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: CGeTb45uRfmhW4JZJw2r6Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: REb2PKPYSOankODh0pwedA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: LsfO-nSgTBauylBQRosaww + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: ADANO3GTRESuwTOYGRusHQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: KAhT9LvxTnqPxxtiPGoOpQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: GbdxC1OOSoSr5SVAfhmjwA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: FLwdv5NqTEKirAFMxG8THA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: EJpGYAKBRk6W8VHGpeNH8w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: Ny8_tidtTlmnoR4X0bRAuA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: YQF99IF8S4Gf26KntWt6nw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: YRlZmmDKSoqwZRrd6E8wbw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: fd5Qyz9HTnCYiB4b42whXQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: AS3czye9Rkm56wF7U3KcdQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: Nw1o7k_ySPiZJ2Fa8vaB3g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: cJ3S4BghRbOHTekqgXpDxg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: Y1Vg9rCbRIa2Q1IYFTuGmw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: Zo3T47unR1iLbD_FJhJzEA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: emKp3EM-SnGCaQC4O2Q6GA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: UU4BmGLRRSC5MX7Nh5iTzg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: Sganw_Z3R7GuKQeQrPJATw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: eix6ohC7Q-CN6zvS3U0mzg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: FnRuBWp2TJqvLMeKIa35RA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: djXTghowSsaZNG3NhyHU6w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: EvJSx9mJTV6BTwYbKR0W6g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: eKWY-U3hQKa1Z3xGN5d7Qg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: AcDMukzHSAOvKV_5SfoGSw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: J0rvodQ6TVW9k99W7Q99QA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: KEYqUSzMQiy_YPOdFFlvjg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: E2dCIsJjTFK6SfJVqXtk7Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Tk7GbzDCRfC57ByieZ1G5Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: UQ6Z46KvT8K5NlcTu3LNJA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: fMCTSY5oR3GKNV6bGa3lLg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: XqIHBtWsQRSvIW3MQXkL-g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZMdIIq6VR0KCAQf6Se0jhw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: foz4txNQRVm9cpvaXlIsrQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: SO8RtkL9TDm1ir_cTZbECg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: LAqNny9TTpaZLOvcZXItBg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: ayVKJnFfQlGbXxD7Jnuxww + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: OS5zOSAOTsGDOFWn0nA9jQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: RxOl11NbSiWNmZqr2mhc_g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: dB3CBvicQ5umN5_MKz4Djg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: D_yjAemjQne3PLq7rpm3uQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: FCAbzakKTI62nuU5MTsAug + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I1qskSYvR0qsd5BSLRBhyg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: PDVBdgyESPGscItQvHt7Cw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: cT9dLpbhSGuUK1qFbt9TcQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: cTmXeLFrQwSwuxOfDLNT8g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: AUYQzUOAQ6mliu8USUBVdQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: PQdK-klnSlicsn5WEs6Z-A + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: e6140sPzRnik_6JhoaI5Tw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: aPZ1tNkWTsCav7WU1iebHA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: EZ5HVJ7cSlOu4OtpxCFmaw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: Nb-ggQ9CTKquPsCKLTuXTw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: OO_SsN9MStmN8iC9SToj5Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: JBs0YRaEQIyn6_UZZ_eCLQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: VupOWu21RQWDLQ4AxUy8Lg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: ZasYoP5ESR6-jsnT0Rvx8g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: FbAstUw1Qrew-nUb29eS4w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: UUmGOUmaRLyKEiUZ1DNNMQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: HmZ_l9LJSkqdO-kWTIBAqQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: MN_NAyQdQ5Gn7-jLlD2YPA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: IGb0gyWvSvm0HSQ3Fz9CRQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: E5VMcTtqRHmOqJfo2aY4Zg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: W6QEgbocRC-4iFfoXS2Jig + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: fvRAiDShTFeivkvbrLTC1w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Bywt12RIS52xavNYIL0qSg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: CAdoIf1GQhWlN_LjXo4NXg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: JGlcXfsyRRuTfmIXXWWjDg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: X0t2LNPmSZKJRUf_RpGbWg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Wr8qjMnlTkatNAqlAO1DCw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: TRrZK8OlRDeh1VLiOXy9uw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: R5Xh6CQTQZKoOUZTteS7Mw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: KqB5Wl_xTban1CWLjwsOTQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: DEDKMj1sQaCTpooVJFEA2Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: YTtsyMF2Qc207irqX5CjEQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: QesJG20KSIy39WW2E49B1Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: DkJvccLDTSyVbevpo4LSKA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: LcrdSOiAQ_etrJbye4vkqw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: NVQFqenwRCGhLtLYSCt_5w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: PzT0YRBMTB6DZzYLNgWbOA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: ODSNWHCuQQ6-9W8zXxPhkQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: RzzK1Qf1RjWs-pTLDCoPUQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: A8K1Rg3xRjW5ylZ9tlKMqw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: GR2LQDPpQdi9feIUT1FnOg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: acFE7dctR6SBeKFoR5C0YQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: WT8Ida4kRmGAXyWi10Zpag + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: TtwkGYFBRnSHHhk1erFWGg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: EJPRt7XySeSUV5deViIg0Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: U7wOiUzcQcazkR2WjZSNEA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: E2regI7RQomDcdyYer2CBQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: URGuTTOoQIOmPjt8qMLsQA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: JtwQHHcfTxejIycIylK68Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RZ94_aJRQ2Cq5Ap5dNZ1PA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: ecyMaVXaSXeZEkK_zQEl_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: P7ZhuJEiSqi7PUD7jWJUcw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bc6thNwgRXu96JtI1q8Ufw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: MszMBYjtTUWVBivfp_Vg_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: dP5bmyziQteyWRRnsOJmmg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: VZ-Z_pHMR-qDdzrIUDM4uA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: fRBtVKdDRh2PJ7c5NOjYQQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YJyUIeyhRISnydMwzHJ9Bg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: GqcHbHuoSqK0_2vkO1tEGw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: I9zYELwuSjiyMqWxWY2BSw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: LWDjaHYVTDqmeWODPVuW7A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: EUpQuatnQOCMFCCzSFcvoA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: c4rr6mVQTROh4wvcTpnTLQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: YfHkBFOQQuqHzFecssOLhQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: ZD2MfX_sQ_2FFtZMGkBEFQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: N2fzCaPZTHKEFx2DufzrcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: EMLBdjbuQkKz0LaBvGBkpg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: a9AHPMZKRmOOJxCjrmKoRA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: I5zHEmIfTDS8AJkHSVGs5A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: KnRw2FYgS9SDZnq9XU8H3A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: bpVd7VLrQo-ub1B7SLupJA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: PKvCnQH7Ro6vW-ZMYrOsew + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: cROUusuYT_2v3tKf5oYJpA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: f-rJP6R-TFKQJLJub4O_Xw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FNyBmdXpQDWqN7TuC92SdA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: Jsz6oPx_SO-ZU2cyrYjijg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: bzEeEmJATLGeKr8ActGn2A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: G4GphrVeSGmOKJmwNn1EXA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: SkACvJc7QzWHvgHdfOX5VA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: N9O2UX4yQKCNaHyxTxZNFw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: E7cMKkhfSvOk4PznBJksGg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: fAHTpnTVRK29XggVYbADFA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: fvy0P6aHTxWb8IVaXDWrrg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: c_vbW6U2ROqK1dRLUOfz1Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: a6vrsYHMT6-apwOe8cv2uA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZgaD0Cn3Tn6usYh7Xswzaw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: ZjDSOIyST2OHAZ9oIBH8Sg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: NuW2YmUGTfSNKCTHOJtAyw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: YQ5yH4lfTPyw49Lscsl6ng + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: Wrb0m3qGTNqyhhsIW6MSkA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: BAUve6UeSmqoOBgY71DWcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: IUzoLspHROuNE_VeKRHOVQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: RyGkRvkeSDS8DXjJ7lbSxg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: At25N1NqQI6W_9wlg3KXdA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TcTFuGnoSIKiydbZXhCGcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: eMq1zDxDT9qEw_B-1QU-5Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: EGfXzAdjRfGAKwaUixEiFA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: AGUOrV0cQruSOx2DVVv-Rw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: Bz3YxGXcQY26FRPBu4mx_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: Y5jGH6VpSQeJAOGkbvMEHQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: ST0ZCPNcTiih5r0yeflpow + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: J8S8m2ujSoCUzWlB24vwNQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: EbeWe-2_QdOPf8LczPLLIg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: ac45y03qTY-8MuYvlEViWg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: E-ZeCl7yRyaCXNkHr8BGDw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: YXBCtcfISr2y0rgT88VgeA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: DfLkPGl2SNWM845JLvAWrw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YDet6EHYR-yS3g8q26LK_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: Q3kr8P1aT6O621wT252Dbw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HQ1JDYJqS0SymSpTrnyf_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: K58o_g2qREKbPa_0WpaSSA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: LiVe4SghTMCDz460cWHoDg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: e8W0dfklTDG9quPcE56sqQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: Lm1LEE0pQqOMbnMl3-9upg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: KG9vhmK0Q7Sd0t3VILP5qw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: a937UbVMSgSp3v7pwP_XvA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: LYbVfOR2QmCcp2thzJxMig + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: OqNDo9TkQhitvggCXkdUsQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: OxBKg9MZQ76dC9_xlcT7aw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: XSRLOINhQdWemiA4VdCJBA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: bSndblg8R9Kz6nYXzbkWkA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: LjHP6QXSQHyOYqS9lJM8DA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: MHFNzBCgT8WLZKjvfAW0aw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: UVb5BiYgToi-LqWZJRcUUg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: WTS8e36yRx2Y6zp3i304Bw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: O8HZ-UwbRwO3nc_SId9Ndg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: AzgIcmyyTGydXwgibF2LBw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: bSvfzBeASBO8FBr68P5EeA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: JVbYWKnxR3GG9bxuJ1naRg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: PW_AK2jzR_WFawvIv7ugcw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: Bt6ZZOiARxacSOHnnbSoTw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: MACQF1FhQI6TvzwjvYluWw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: HnZ5aCGJQ42hEsI7YuBN_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: PrefJUjhSze7s6Z_0y3_Eg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: KUcrcwz-Q4q8HSACpl92Lg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: Q1P3UliPSoqFwxw61Lmq2Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: XxKMypmvRPi83NCVo9C1ww + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: fyn4Ll7_SY6PvgEcCRMOUw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QPFMOzedTP2B6lkAiERoBw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: PgERMFn8QsCKen47SI-AcA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: AJ3EuzQTTLes9uiauatflA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: I4X08ccaSii0t9Jlum75fg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: IR2xY8p-SfKVKfAaa36wqA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: I_Jvj8I5SMSwecMKmett3A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: TGgqj4_DSD6tXCO8MZUWFw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: ITRwATXRQSmdyUN7R5UY2g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: KDbdYMPcS5OYPcaO0bM24A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: OmFJ9NUOR7y8QcHdqd-WMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: EHwYHNNXRieZRAemf3w9ag + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: Eon7KWZfRaWRxf5VYsTsvw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: Z4tBmCB0TbCM-6v8o1Ju7Q + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: CY5FpCv6RoqX15Axsr-ewQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: W5tbV_b-RRaZCkkySWYNjQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: LC56VVMhQdm6kb2ptGHssw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: NixuxkDnSFe0PouGYTUmMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: I5I4843RTfWZnnoiCvWMCw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: A_vmMeq4QbagvGwKCDwVVg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: ZyqJwrhuSU-l3do22cCuDg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: a2XAxi7DS32x68TwsXO6uA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: eDABLx9SSQKPzoCoyuT12w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnGHSTsmSMO1nzFlZvbdMA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: WfuT77FUTC2RWT4moA0GtA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: fXsAoKxnSFGmHA7uXi1OEQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: eZrdOfM1SEioV4XmjeuAPA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: JEVFcilFSpixDfcUYT2tWg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: McvpYfPLRYOPKHxHJLn18A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: NSmta1TkRICpaEjJk34MXA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: clnxfY_hS2epAPzYXVPKQw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: JxBM1kxoS3m_hMAhAHBlkg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: cK8ofYt0QQ-XEqoVWaEQgA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: YKz-V_jkQvei69HlNPUfIg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: ONKhqoHUTmmwW8s_pTeeJQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: GPZ1u5fuRcyUVZBdfgRyIQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: Kv6H1ttYTpeuIq0k8Nfrhg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: FpE4qwj7TSenhEWJrB4sMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: NNyx2YllQ2uQdrQUY-sHlA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Mqff6JPtRz2PQvT2Pesk8w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: EAErs8fLTnCHD8iP4WGjIg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: ZznjUyXRQq-gOzrcfsAOpQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: V908ajZgT8-QKR1rV_pmIA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Glktw21sQQifVhyJtB6EVw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: UrZgEV94SBeQsPhZeI5gxw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: bEQlASpyRf2-qRLh7_h58w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: YdGfS6ZsQGmCPRi5mnBcMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: fCypB4vOTF-8wVB3CMaejw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: O0QE75QOQ66u-zJSqsFhxw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: aZOS3aUrSK2cfxNJH4-kpg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: PSAaBO71QOGsXm6J3R4MFA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Rt7fer6CQOa5_qitk_ojmA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: Z1pKbNqgS1K6Jp4nSg9Vng + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: IIhVh7lKQUqSpQ2a_sTk8g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: IfCB51gaT-6iMnYQlIRiIw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: DqS5ZzqHRa-Qowup6XM3Iw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: JlwruV7fSZqt45KFc2Wdmg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: CHN_ohUFRPequMGpQFkdVA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: eOus9CzPS36GzdXbGp8H1w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: duGRlDz9TBehIJmz9fagGA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: K1pqu_MWQBS_LgBlnImgBA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: U-TY7R_iS0my3_DwYPjM5g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: UN_2M9fsSr6sswfJHdm9dA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: WfGl-8T-QVCU1bV2WD0wgw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: TxTvw3G1TUinpAeMQeaQnA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: AOAQu1O9QnGIPbsGqqeIow + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: IWAJM_s8SA2G0Z1PLenz4A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: MggoqMeVSCKvFMb1dC0eBw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: OhLGgMZiSc-t691bNKu-ZA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: H5cW2IGkRee9lrofdNUM-A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: GwhNG4-UQlet2TLhzV7AYg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: D2GFOrqJStuIrWcuTkvt9g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: S0-HSNK9RMaWKxKv7czUCg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: fW3j3JhXTjiWIDf1LClIrQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: Ph_BYX8vRvG8zEnzVmjOaw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: P6U9k9yDT7mnPp8zhSUEtw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: VeJk56bmSam6dEm18gyjgw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: ZKzsZtFXSumvIMXVA6EGlw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: BDbu9NX0Q0SQTiCE41ErdA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: OXvfQTRoTUGwX9685acfHQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OgOsow60Qgqzt4ssd4cwqw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: YJnYTaozSwe7US4QzF6l-g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: YT3I0fXUS62Q1LuvEyDiJA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: cvh1LGIqTO6dLM6I2luXNw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: IK_uwLeuSHiVOYi98DdtLA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: DhmccWtJTyqABe6no97PYw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: ZeangmmfQwaXMmvhQ2m0yw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: HYm5TJHCRW2CUJ3jGwGQGQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: Kyrw6LSRT1CbXxMMNQGImQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: fED3zlGaRXKtUQRaGio4Bw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: fOqxjmYiSU2H4zTFxcIpng + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: dURDlYzRR9GY7-Kn-rWv3A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: K6YdvCGFQ2uRtm2rumMSsw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: RXSP92luRSizxhs77gMabw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: KfPzM5oCQ0yv8uIrcnJZhg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: Id-N8diNTrOTl2G4hmzc3g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: VLWLclNWSZKXFgp3kBLDRw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: UmjLuROTS_2ia4ZdJfntHw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: Ilv8BHAnQ-6PjCZ0SewzBw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: SaYubREJQW2JGOQBwSf4Dw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: L1nb9PDOT9umCJj-CjPqHQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: VwDe9SpDTfWaDA3iYm2jeA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: FGgr4detRLqTixs6C2qWzg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: IbX36xtMQVSiquRqNNU7mQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: QLxSQADDQKm4-vNRS7HLjg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: IKZ5RKtiRL-_HB8nlf05Tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: Hhw5ylb4RpWFaEvRPqpdYA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: FovfX5d3SDiEHk81pZFKsQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: Re4HHNMxSgSD7z5I6DkVuQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: OQSTx3wgRAO3-oB9dGNQPQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: DQS8nbZZR-iAKzh2A7cg7A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: A036tfIXRsu4nNryJMc2Sw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: Lfv1giZGQtK5LvUnTC5sZg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: d2TyR5c4SUK8G1GzJ3G7tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: QD0h7HdRRIimNRyvf1FC3Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: RTb7ilaZTrqfaFVEeAOg2w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: OPzxKgtiQzKhpd43D-S8EQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: Cq_0S8iySteUlHPC86wHtg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: I09EA4uhQrW0kZzZn_uePA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: XmoqiR9gRoCjCSwy4iOrUw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: BW5z2EB8TguX2Ad6hpoJPw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: OMCu-GiRSDip-YxzNPAySA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: XxQzjzhVRAq1qoDzsocfFw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: e9Ku0hkLTW2PeDh7V7RZzQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: G9mTnzR9TBq3vMP-YkKrnA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: JneoEpECS_mhhIIDZ0HMFw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: Bl5PAPY6RpKEdj7QqmixEQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FSrcUA-4Rc6qvHfUDVmBvg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: FX_BPSnjT_Ccf5b7U-l6oQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: TW4_uwHCRU2KSZ7Jy_ynQA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: F2_VtQWnSty-8TWCXXRSKQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: bUrxCCcGS7uGjj4K3pqj8w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: FvDLE83-SfuvhUSPE8-ljg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: ZPkT01AaQW6WKUk03g8E0w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: CAcAPm_ZSf2zIivK-J80fQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: RvEKLmX_QdW_Kl-qmv9TXw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TbD2nv1yRHGw411Yu27XbQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: bGQlaQsMQZu__vDVX9JWeQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: CQog18c8SLW788xqm9aUvA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: c30bNtb2RnSf0f-kYxw7IA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: YBWDrsOeSn-kgdkGC25dBA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: HXeJD8gdSE6eRyCzU5-NKQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: eU6_5alwReet8GAwZDzoCg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: evDpOaXjRNuSZBi_apLagA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SoFcjXt4Q86sUz5m5MBI4Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Bg2P5g2-Q_Sjo16SJ4q0Iw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: ctex2B8aQ1q1jjRtDTzmEQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: crnSokMoQi6z6mv_h64XIA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I8B0a2g-TNKqG_NJMUjDHA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: Y8-P4iySTH-HGrVeZLxTEg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: eAe6UUBqR_KPauOsXQBkRQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: asqL9KakTFSDtoI5T1E_Tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: e8ER9nFUSWeAhFxCgdelOg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: YqxXSBu0RpK6SVoru4PNbw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: CfZ9bDEiRrewBssXNHcqEg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: Vc0NcROxTbms6T43onJN_Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: UnmoDqPKT_u-0FXQhZDcbQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: aesIyZUoT8GJeBSGC1Fg5Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: X8WW0BecSzuKmqjXrrlHhw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: LE08t72rRKuRLgueGf8ZdA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: SyikPmzwRDWOTPmRjMVz8w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TrCyVp-NSV2ZDnhEJh-New + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: PpjPGRajSDmyxoqh_5E4Xw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: PEAlVPyUQPeB8B2nTLCRcw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: Gv1eMdWpTg2gGlO5PEvk-A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DcJcIHpMRnKGFMdRF4P5EA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: cHraxJyOTWmIyk5czyavxw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: aGEP9OFmQEazt--hOAQL5A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: Pwswl7bKSPKuWGeTJ29jAw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: ZepYHjMkTuy5C1wqOJ_Qlw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: bvcrLsAtRTm5hT9UIiPpzA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: dUmakoXgTImZDRxuHh5e6g + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WXT8my1vToa8pEikCrkHhQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: QZjha-zLTva0gl98RBXefA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: BWvtiNaRRYSCYtkSydL2JQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OkpYPccGR6einVSDsjtVHA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: OwZJgDyQRqi2HkVWHGKmug + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: Du_dLDr-Sqij_F2ooys-pg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: ArJb7GfORX-nNbPRm9NICQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: aPVASSZoTAaSWwZoimqQug + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: A1yhrnbxS-OD1vGMKwh1jw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: B-8zzh5KSaatFv1VxrHn5A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: c0BuUNb-SuKmqU-kJs2dVg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: VwIkVGszSOCyjH7Rqf-tUQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: f-Sh2C_gRIWy3osdvxXOnA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: bxx46gIfRRWGVB9eTzpyCw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: IKbuaaLuQSqRFKw6c2x1IA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: SRUfdkGdT4SoIJJ6qcl-mA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: ccJPviUhQqigOsTI4VQPZg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: MZX7YjhqROmL4RFgBZ3EAA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: JgyZ8Id8RqePDiaiwcxQwQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: e6nO1wGlQLmzxsFcAlLW-w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: ava8f3qxT9qniDd2naFzUw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: avRGD37ITm6FeZD_E912QQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: JvwFJzglTm6glIwpsPHi1g + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: dcLfLlhXSFiur1sfpxZMnw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: bSayWXAmQu2YjDSLz_kA5g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: YDXTTcCYT5apz-VbiBYwKw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: cwTvDN3tS62Q-4NuxysPgg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: a0UdmCCtSSW30Vkvswl7ow + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: dudDj-99RreHLMl4GPzRfw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: RT8z7mQtRIC7vQi3_5kqQg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: UdeLBXYmRn-2YJC-86xA9w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: dlu5vzgkT5ygvmo_3VlA2A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: QPoskV4wS-u0gNhnqnnHbA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: dlVUWW-VR1yDrIgats-0VQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: eHPu6xvFQgWhychzcc3xXQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: RekQ6nNOR6Sm6l5VLr7SOA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: Um0DXKB4TdigJniLK2_iKQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: Z55URMNjStCp5TxBXzNJqA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: Wl1XQc0kQPOd7naV6pZlRw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: GXwj1LHcTu-8hnw2_ZvGFg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: agLK-hGtT2KMr_l4kk5F5w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnU6AXPFTxCSXeYm2gw7wg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: W47uW_mmSpefQgfcBVo5Nw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: dAPwnJNVTrmoAHdYHvn87A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ViAd71ccRu2K7CS5ALrr-g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: N79Ja2atQQyT0U8ebqN3KQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: Xl1AyetMQiWfz8UMl6SavA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: eIFqIE4MQn6wV_q3EBqPig + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: b6GuM4LSSwyZj2J3gKal6A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ChK_2J_fQqyGqNgrwytdAA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: JPF2vLNtRlCqCe1Rc9hJ7w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: fByNQl24R8aR7x6ZormXPg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: Kx8GhRUiTyy6a9kc9hBq9w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: L-RXtrixR-6fWCmt7C8ARw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: RlO-fTrjR06C9P8jXATGOQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: CMBA14FPSPKUoHOCAsxhtg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: QhoySkEtTueb4P537n16Jg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: MBv8Lmm6QU6NW-P36coDZA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Gi6Ief8eTKOQl7Fmw71-Ng + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: Ywa0BPETTJ6gJbbGJDo_9g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: ABpbZoMdRvibLS9qqxe4Ug + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Y9IYz3kOS3GgtL6c4H9R1A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: au-3E27OT-i064WPgtmUdg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: VGDwlYIsQSawCdVJIY6aug + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: e9V63cMYTGGvjyRYeP4FqQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: WRwHlRmCRXiy1vLyQKXXRA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: bfoYjUsaQBGI5CGeLV8Fxg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: Nk03mtgeSLqU-Lc9MeIBUA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: aajsVAWXTImIkII4eRFBaQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: X_7u2iEpSTaOIILozAKiFA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: dN1wFoNJR-mugxqdbMGb0w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: UYQ89_akSFmgr_KdEouAuA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: Cb7HpfeeSSuqtol8crVIHQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: AUMt0RVDRGCagaQNIwp9QA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: aRwkiDMLSkuhnoKpdshmDg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: Yu_1ChPTRbuJwKTuyZ0oMg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: MMjPFav8SLGHNDt-HR8TQQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: BGAGS9-gRq-PZMCuF5Bf3g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: NMdJifgiRtGicHO84hkpHg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: ZXniYbnTTgm0ODv4eruAyQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: Lb9hUaKYQVakmh-VIxs2XQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: BTOSnRSGTYe31U6hllnRGg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: PGc57loPTey-aCBk_5TtPQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ew-nv0izQfWBHeBcPOaJJA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: YNV9QUCyS-qNzH67-L3SjQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: P14Iyf3mTYqyYYztirOgxw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: aOBXSuhjREmDQRk0Dzh8Dw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: SNcG44-CQpqeerBijd4wXQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: F6SpRRHxQ9-oRZGQxV34Zw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HbjP1IQ7TjO3xkYy6mjlcg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: fZyhs6kDRjGlWP6S_uxBTA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: aWzlTb9tQR2K4y7-6f5lyQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: Bt3iwBieSn6om9_G-ZBV6A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: YGTkKZMFSjyqHYYfkCURFg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: Y_jy4puERmqtuqOTXgYT4g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WgM9hp9ZSxKZp5sRjGiJFw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: cX7Vcz3BQv-MSiwkw9dZ_g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Xn585rx4T4e6Gq-V5iE7og + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: ADugTJ8gRg-bOPOD1Z4I2g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: CQGJsP0vTRCZ0-n3iaR1YQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: L4zkwW7qRlm_7r9BzLsO9A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: b42k6NS-Tnq0oqzoge2_oA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: VQC0nsaiRaC1zr3yDWDqxw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: F9-d3fkNTBWTCyqOlOrpAA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: YlQcqpuDTMq_xFaJwuLTTQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SuZgcnHtRRmN9Sx33zVExA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: AM8HH80mTQ2y4B9Pfk1c2w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: YDop8ndNSZCx3hJWGztZbQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WIjz2CInS0uB0zUv8K4P7Q + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UIfuRO3GQwyHgkiSf4QcSQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: R0xEmAQtTiukitwKctGH-w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: UpTr9UAqTyaeJfEyBQYsZA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: ORvR5yPCRTqc2NisSuVVaA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: GlnNQGFgRvatgmdqH1OuRw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: GIQyE8c1Rta7292g3mG5vw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: d-4JH_bvQDifBG-yYMvR8g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: c_MEYLlVRZiezVSGhIF9uw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: LQ0JkNXvQ52gyp9r3w1rsQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: YmsrimgGTgikWLOjev8T-w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: SNMqTJ6-TXG4Ntg1-5C4XQ + release-eme-free-repack-win32-nightly: cf3mq3trQjSKrixc4SIkPQ + release-eme-free-repack-win64-nightly: SOL75cl4T8OhzCTUcb3TBQ + release-generate-checksums-firefox: McPLDh8YQXutVQy-Pmfrrg + release-generate-checksums-firefox-beetmover: HMwoTKsvTwm7JHxUb0d6cw + release-generate-checksums-firefox-signing: e1Hmbt8BRFykxt2JvhUzXA + release-mark-as-started-firefox: JvtrEgGESxijh4YloPEyxQ + release-notify-promote-firefox: L3KhRz6pQP6R30Q57YIHmQ + release-partner-repack-beetmover-linux-nightly-aol-aol-en-US: cQHHX0NHSY2l-Yv8Njh39Q + release-partner-repack-beetmover-linux-nightly-aol-aol_desktop-en-US: HOTFYq4kTPWFTptoCoa7SA + release-partner-repack-beetmover-linux-nightly-aol-aol_huffington-en-US: WNpy1LrTROqczrbILBAUfQ + release-partner-repack-beetmover-linux-nightly-aol-aol_uk-en-GB: X82AsffSS2uxRU_ZWo9Gng + release-partner-repack-beetmover-linux-nightly-funnelcake-funnelcake134-en-US-public: FChVob7uTd6sS3GAj8J7PA + release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-en-US-public: OMioDsKPTKaedVU5v3NQtQ + release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-zh-CN-public: O5fOOqa0RsylV3QI17-g5g + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-ca: OEpdGUNaSAy9vjkEiKF2nA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-cy: TjacQelIQMq5CyP3VOEaPA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-de: Ak7j0WJcQam4Raj64acjtg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-GB: B4a-oV1-Q9KVv2pf5-lKLg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-US: RpMfsE1yRFy_WtkTiAZwWQ + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-es-ES: DnkFsRsET3-Ig3lj477e2Q + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-fr: KyZx2chjQMOv7P1-G-tPsA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-gd: cRt1ahpNRHeR79kZ731dfg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-it: ViIpxCQaQB-BvySpsI21Nw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-ca: QeLe5gx3TOORReX6VNA-Uw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-cy: XD_wRDmfQ7WnyD72WV9vfA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-de: IgKeFHVZRb2W8UAfTX0X6g + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-GB: J0eBrV4SR5yDMSUymUeLog + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-US: FLVASylYTT6jLD8lrk42uA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-es-ES: R7ssoRFNTDSj9v4RL9IRuw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-fr: VKZYChTzSqinL_KqjlOfBw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-gd: atJPuleoR0GkFfLIJcXjdg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-it: cPi2wcv2Q9GcaNeWsPL3ww + release-partner-repack-beetmover-linux-nightly-seznam-seznam-cs: CgjORzvkR_6gcg9TvTbNYA + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-de: MMWbieaESW-_g3HZ5aZ-kg + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-en-US: XZKXZnTzQaiQOI3eVXDCAw + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-de: LJfeXaDBSDOmSoTuH2rNIw + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-en-US: Qa2OSIYeRiuV9BAFfYFZPw + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-de: XeH2wihYQHOBgr-e8LuvjA + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-en-US: YjYzRNspStmPEZYvlckO6g + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-de: KR3tof6_Sh--1geQIwF1Ig + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-en-US: KX6dn6gmSZeS7Dt7ZHXz-Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-de: Wau2EfQsQyqKoxrlDN0ekA + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-en-US: ds20s8qdQm-2h6vGcn4LAQ + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-de: AHBXZ8cxS6aELkthmmLIyA + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-en-US: Hn6A1b1XTzGpPLdOx2g1tA + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-de: GBBAmAgORR6yAYCTUew2Gg + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-en-US: MFX0FA0xQh6JZnSNSS7f-Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-de: T1W1tDcLSk6llsGSbSKY4Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-en-US: dHc1IeKmTU2xNxGjceQEkg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-portals-ru: Sx4IlvLDRI6_jHdszDJ0Vw + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-mz-ru: OwnhmgjoRyuD7ZYQmlZqwQ + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-ru: XiIUDLjtQKWHLxM2CuVAIg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-gezginler-tr: RABS8Eg3TsaPSfaE95EOAg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tamindir-tr: af4Fn2t4Rcmxld6Q3JmpTQ + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tr: Xe89ca0USK-powdWoVXZWw + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-ru: Y3g_ogJQSiCjpdGKGb6fGA + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-uk: BzSxqvtkRjGXZXYarKB04g + release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-en-US-public: P6Ja2uuUQdmtGkxSN9QmAg + release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-zh-CN-public: cssKIiPERP2oLRqK176Waw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-ca: ETVfyAnKQN64oJUXqAbwQg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-cy: bwh0IcHLSUmZxqnkhmoKbA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-de: H4QQw-MvQoGbpg25SUg85g + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-GB: PqSQ-so2Rxe9sU9X2By0uw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-US: TcAszN23TyKP2TZH8_1vRQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-es-ES: FoBwe6ExR9SYHP_OJ3BR9w + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-fr: WbclX02iREymmOB0-MfsDw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-gd: EKqrfzUCQsSaGSaeTK1fyg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-it: R2E3ZGaOTfm1f6LSAEaAmQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-ca: O93xVMGpS4addmApyV61xg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-cy: O3jHGav9Sri0f1YV8pJz0w + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-de: TK3-YXJbTpSSCNQMHC6pQg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-GB: F1dWSTxETK69B22OJj_bnA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-US: NM76bjS3TbegyztcSIl4LA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-es-ES: SlmHEv-jSiOvDKeLsTWa0g + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-fr: TvqofSs-SeC4Ee0IOwiplg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-gd: ADAqSb_jT8WpI0Jqwd76fQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-it: Xzn070FoRlCorrMSe2bFjg + release-partner-repack-beetmover-macosx64-nightly-aol-aol-en-US: LGxo37hWR7O7w5vcCm6gUA + release-partner-repack-beetmover-macosx64-nightly-aol-aol_de-de: MHgACfA_Rsy_aR1uJRcnOg + release-partner-repack-beetmover-macosx64-nightly-aol-aol_desktop-en-US: RYQvanc9RzeJKNQek1Vi4A + release-partner-repack-beetmover-macosx64-nightly-aol-aol_huffington-en-US: SPqCCK0rTTmcm6fiba0j3g + release-partner-repack-beetmover-macosx64-nightly-aol-aol_uk-en-GB: MNKMGqQ_SwyRlVTe7kYzkA + release-partner-repack-beetmover-macosx64-nightly-chipde-chipde-de: JWl50iqySk6K4mS6pPKmxQ + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-003-de: OUoPLe2RTp-gcBC-bsxCxg + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-004-de: bk7RvZCXSjSkJtp5sfYhkw + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-005-de: dfRqoe2ESpiAPQKeeQVROQ + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-006-de: EjK7OxXUS8m_sZMik4Gkew + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-007-de: cD-kLCS8QGKebE5f1AszvA + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-008-de: TKbT0ZiOT2-p3Nqgh5itSw + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-control-de: dugSbKE8QQyI8Kawon4TYA + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-de: C9wmapcRTsmuUbuwEO91YA + release-partner-repack-beetmover-macosx64-nightly-firefox-firefox-election-edition-en-US-public: fLSjQ9-kSM-J8gJOwRUWSw + release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake134-en-US-public: YVV8prISTkCdyz0mAmkUFA + release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake137-en-US-public: IV6hDCDbTXiVGu0WSmjKtA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-de-public: GEzdaCmPSruxLLAMPMxPXg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-GB-public: EkJwaTJNSeGPTKfZQ6J_PQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-US-public: FcG4pDI_RQaliTswbIZ7MQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-es-ES-public: Tj4M7qNiR1eomyFLmywmGg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-fr-public: GRf_S4-hSQqlSOWbblLCsQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-id-public: PUrNgQwwTdyLklAh8RvV0w + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-it-public: adp5FBsfQs2s6uqIMmHZ9Q + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ko-public: Wfme37H4S7aeMNmhRrDTug + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN-public: Nlob54CMRy2y_eP8NiwqxA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pl-public: fU_cmrBZSjian9dlB9HCLw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR-public: E9g6CqbxSmeAJCzv2OKhSQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ru-public: N_e3sDz2RiiJhXwP0SnJtw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-tr-public: AgU1rgGhSBGQFOzM_SwEQw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-de-public: GpwqtZk-T42AsJ6AJF37BA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-GB-public: I_Bb5kSHTyqBh2it7TR-pQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-US-public: PvS1Fk_qS_mC2oToi184WQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-es-ES-public: QFH9FzHHTWyUM9X-eO0xAw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-fr-public: EPzEi_IOTXSqpk5wC0uwxg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-id-public: DYhgUU_qSzK1kEVjh3EwVg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-it-public: EJWdIeR3QbmlFJtHQVTJ6A + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ko-public: Cb9ToHwtQia3bNs95wraRw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pa-IN-public: fT2kj5bxSoORejKvY-CB-w + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pl-public: WoKMQgcLQhiZdMbtaWG8Iw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pt-BR-public: PAJmYqVCQIOCKvgdMO6VxQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ru-public: IR2T9pMjSke3x-TSJOaWxw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-tr-public: F3cbGExmTa28vnO_XE7fGQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: FRtNkGs9RMqBH7tZHS-KEQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-en-US-public: UpBWrvLlSXWGxag_CmQ6LQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-en-US-public: WfHipiriRpia2c7Y2Ca2og + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-tr-public: MEkfBnjFREyD_NrjmtdlXg + release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-en-US-public: ZEKwv2hNSxmVUa3VXn3EpQ + release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-zh-CN-public: KHkZwXmhQ7WvDeqTYvbFZw + release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-en-US: bsYQIafbQuaPlmEvmoqSrw + release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-ja-JP-mac: c0JWK1_rTnOVP8QnAh_SHg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-ca: KFmryuKNSdeeAqIaPyweTg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-cy: EXXooUbFTUe5r4w5BUrfJg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-de: Py3qzuaoSS2OtwMSrbWV5A + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-GB: WhwdOdpuQP6BRV_9GCqq1Q + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-US: EWo5Kk7VRWWsGc9VLS401Q + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-es-ES: LOdUn8v4T2CRfQp-IrSWkg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-fr: Fgoag_dGRj6ApUfKLgv4rA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-gd: OLnmiJLFQBKxEvo28xgDXQ + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-it: KPOLNz1JTIySiusQX2CiZw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-ca: FvgFeWbcToC5fuRd0wTcHw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-cy: H9DQ5rwFQf-tlHEHnZVTDg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-de: cDFnYI8qT-KdrRrj8xYwdA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-GB: P96X10efTXSUKQ4LQLgJCQ + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-US: DXIboAgmT8CxeRytW8_apw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-es-ES: ES8iijsCTQ-BczcFC0hUeA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-fr: FeKQo7e1S26PMAjtCkeF-w + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-gd: DsX0QLixRDCNr4AomSp0AA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-it: Qtix8qmJRfidtlMCsSUr0w + release-partner-repack-beetmover-macosx64-nightly-seznam-seznam-cs: DzPiXPrlRKOFAuYbm47log + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-de: Q1tSs19_RJK_P5Ul_uKMJg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-en-US: aK8zIvuHQ_2y-6WmG2bl6w + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-de: DfIo9MSGR8KBiB38TvlyHw + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-en-US: J1fhYTKDRF-5uMH92oGsUg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-de: Q7b2g-Y6S5O8ZWlX4HKF8w + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-en-US: LHaeTLNrR8GUYHtY_C6ByA + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-de: LgpKWrofQuCeL7BomsIs8Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-en-US: NjG6Fon9Qg-fBYQURViT2Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-de: YmuecbOPTLCw-YcwuTXtEg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-en-US: QG72LA8WSBGxs8FX21io3Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-de: duTn-30rQRSt7-zvOXA3og + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-en-US: bAdgStvzTwei1RP3IpAXRQ + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-de: SRgodtcLS0yZzmqC2ka-9Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-en-US: G9OVyAaYQSO4HWqcZ0Q2Pg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-de: ALKwZFJBRnqdJEWfTpcGIQ + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-en-US: d_co2iEDThCsBvInor46zQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-portals-ru: KFE9TP95SomMc5EcnTXNiA + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-mz-ru: BqJIG2dcThuDNToV0BZllQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-ru: LUy6LDAsQ5OXXDRD2WJLOA + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-gezginler-tr: VWvWb_kdTWGpJFsc9bOPlQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tamindir-tr: NMEUlwOBQEah57RZLFbKqw + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tr: SdHfIiSZRQyuDGvSUEEJmg + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-ru: dMXg8-EVSBq-cZ4VXtRM0A + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-uk: T9Ae0ZnpR_WOvvpwVSZHIg + release-partner-repack-beetmover-win32-nightly-acer-acer-002-en-US: HnFnERSvTHuAZJrAaa8AZQ + release-partner-repack-beetmover-win32-nightly-aol-aol-en-US: TbCl2baUTzS2gIyF1f865A + release-partner-repack-beetmover-win32-nightly-aol-aol_de-de: ERd2B3c7Sl2zNsacm8EgRw + release-partner-repack-beetmover-win32-nightly-aol-aol_desktop-en-US: S8mumgLESMa_t59Rr4BLnw + release-partner-repack-beetmover-win32-nightly-aol-aol_huffington-en-US: TqeIEoalQPaH0E2V53F6kw + release-partner-repack-beetmover-win32-nightly-aol-aol_uk-en-GB: CHBFaQyfRAS85P-Cxf9UKQ + release-partner-repack-beetmover-win32-nightly-chipde-chipde-de: aGvc_IBqRE-9k55clX2Rxg + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-003-de: CoKDg1HAQXeo2KdX4ULVow + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-004-de: KvIXWqEcRyeZorY0YmcoCw + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-005-de: ROBDcnBfSm-Q9Vyp2Qu5gQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-006-de: ckybGZWGRrOKXJnbF_wJJQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-007-de: T92z_tthSxO_A2k0be2wsQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-008-de: TrTEtzY_SLOVwAh0-AFU1A + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-control-de: bck6M4V4QomOPgngmA-uvQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-de: TlgaFZ3sSG24vzkyYkY51Q + release-partner-repack-beetmover-win32-nightly-firefox-firefox-election-edition-en-US-public: VL7JV_U_Sx6IBPia-rmiJQ + release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake134-en-US-public: HBRvEoRXQkC2ZScN2yEtYw + release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake137-en-US-public: RQpFkjGTTzCP3tXtAyrUkg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-de-public: LKTXjL1zQOKN1kzwv9jObA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-GB-public: EM0PsRw8QOKJLUNIUGRrbQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-US-public: cTfeFHL2QF-GM6ijYaZRKA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-es-ES-public: U31JSRguSeuzg6KhOxQDGA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-fr-public: f006fG2LRbqSL-E2awIABg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-id-public: Y6HRJxXnTpu-nQakvOKviA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-it-public: FsVyynooT6WIQtS961ELqA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ja-public: Zu3p9qZfTxK0t0VN4IoCng + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ko-public: bGi_ELhlQNWjZZN87BX64A + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pa-IN-public: IwvLA9-ASI61f1TlYwntiA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pl-public: WwHRoIfuSEWBrl2HQWooTA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pt-BR-public: F9uuPBuYQKiYZkfK0Rlm8w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ru-public: Lbt204khTz2Qm78-aZVkbA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-tr-public: XLPiCZXbTdCUkYDu-cjD1Q + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-de-public: Jdes4JjaQb-29v1ZumNO_g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-GB-public: YamlK9gnQW-AwQiCY0ZR7w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-US-public: Pu_4fme1T_6o0dBy2hmY9g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-es-ES-public: A8mycs11RYWefMI2KfP2LQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-fr-public: fUEeolZEQr6DclkJxyEgfw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-id-public: ASNdzfqMT8yAgR7_6myEjw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-it-public: KoCxWjzBRcu_wXQ4nUvbRQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ja-public: cNtJKNY6SQ6l-kABg1ps5w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ko-public: Aw-qQddhRNysFQ0LK1uJEQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pa-IN-public: DTpZjxuPTH-B5O0k7I9szg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pl-public: MARL3XiPTO2rBlu0NumP3Q + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pt-BR-public: MgPPrPSbQS6Ig-61zOv5-g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ru-public: PRkswFE1S_2JJfoKdbhGkw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-tr-public: OYFW36BWSxaxX_elAOljFA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-aura-en-US-public: DopENAjrTQa0aH0TvvsTKg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-en-US-public: XQGT9t-vTCKrILUjY_B6YA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-en-US-public: RgCfCiifQ7eBhGsKo1ZlzA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-tr-public: S7Ase0-LQ-axtd9Kr-80dg + release-partner-repack-beetmover-win32-nightly-mailru-mailru-ru-public: L9In81mRTKWQc0QIurbsJg + release-partner-repack-beetmover-win32-nightly-mailru-okru-az-public: batepSucQ3-t_QgdaBDU9Q + release-partner-repack-beetmover-win32-nightly-mailru-okru-en-US-public: TWERo8A9RvCpQPMNE8EYNA + release-partner-repack-beetmover-win32-nightly-mailru-okru-hy-AM-public: MPSJhc9tQUKMluQvTFDfxw + release-partner-repack-beetmover-win32-nightly-mailru-okru-kk-public: NHq-6xTgSr-YJKZbBRtfWA + release-partner-repack-beetmover-win32-nightly-mailru-okru-ro-public: PG5A1ISoTVKE-sxhRxfECA + release-partner-repack-beetmover-win32-nightly-mailru-okru-ru-public: Reh7uNPGTNKOM1zF5WWekA + release-partner-repack-beetmover-win32-nightly-mailru-okru-tr-public: DhGQvy2NRq-2fZvNZKZkeA + release-partner-repack-beetmover-win32-nightly-mailru-okru-uk-public: BfJWu17NRm2TWumZ_Zn6vw + release-partner-repack-beetmover-win32-nightly-mailru-okru-uz-public: UQWm4_-uTmuE_1UdnfMpyg + release-partner-repack-beetmover-win32-nightly-mozillaonline-baidu-zh-CN-public: LcAIKN9uQ4O8p2gjnh3a9A + release-partner-repack-beetmover-win32-nightly-mozillaonline-kingsoft-zh-CN-public: WVHtWryiTf2vmU8mjutqUg + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-en-US-public: SHFroZr9Rkqw0EWEd6WeZQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-zh-CN-public: fNB4p9wiSW6PPRTPiQe2Sw + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: QdD27iZnQKaRsH0kkuCNLQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-others-zh-CN-public: aCbNZmydS86hzeT4FgO2hg + release-partner-repack-beetmover-win32-nightly-mozillaonline-qihoo-zh-CN-public: LwmLcZuNRtOFY77ZVws_SQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-tencent-zh-CN-public: UC6ilBpLTBq3oMY54OFFhQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-xbsafe-zh-CN-public: An-gvxe6T5WqKSiFTODQ-w + release-partner-repack-beetmover-win32-nightly-mozillaonline-zol-zh-CN-public: XkEDv3o3S9a_l9eJD_uRcA + release-partner-repack-beetmover-win32-nightly-ntt-ntt-en-US: R_-VzghBSrC3hmY1mUV70A + release-partner-repack-beetmover-win32-nightly-ntt-ntt-ja: RNcZkZTjRDqblMSVxsOXlg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-de-public: e0O3M1ijT1qCOkvt9pcNeQ + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-GB-public: Ar9iKCMkRf2xL3jVi1Spbw + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-US-public: Y-x3uqLGQ-WlnqEv3yPHWg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-es-ES-public: anXH2XO8QH2Pagqi-AlJwA + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-fr-public: b36bYlzMTnCn3mTGqAktbg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-it-public: RHHXtV8fTZq_L8QxnzTBzg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-us-en-US-public: SzJZWPbSTRCW81D8tUEz0Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-ca: NOCVY7wITcSW9lofhedxKw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-cy: XpxntXjgSDKv2Hyg1U_ftg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-de: YdtdKm-iS_aiLmU5W6KiYg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-GB: KkE0ZRXpSFecbrRijxSkRg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-US: dgw8KQbVQhqTiZ2PGoUP4Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-es-ES: NY61HGKKTeWNpk1izw7Igg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-fr: dUipTfysQHawNop3HX7L4Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-gd: LvvRgYmLT1aSExIQkIdPVw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-it: Kbi5pm2yTfK7WjhsuuXE8A + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-ca: c51un2uASoamuzGu-tY0Sw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-cy: TDIfG1gSS0uiyW4T8gl_MA + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-de: NH4osUe7RBCKsRzGAwjaRw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-GB: ZjQzpfttQoqBAdo5avl0Gg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-US: fhZGjF1bRliKsLan17uDdw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-es-ES: aXe9VwdcTMqiIj9at7FcLQ + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-fr: S9Jy8ilWQZ-VtbFH9NeQwg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-gd: B8Njp8VqSvKE4O0xEIGQrg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-it: SsQp9MzfSx2lf2ciVJc-mg + release-partner-repack-beetmover-win32-nightly-seznam-seznam-cs: dKCi1hueRWKYYz9NtUtN4A + release-partner-repack-beetmover-win32-nightly-softonic-softonic-de: a4H-gSVURQGKmdBmYMmMDA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-en-US: AZ8lXf1lRd6ngCdiagc9Pw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-es-ES: Rae6s-K0QeC7HfiikiFb0g + release-partner-repack-beetmover-win32-nightly-softonic-softonic-fr: VKoRlQLVTgy-ZKyBdV5WOw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-it: Icm9IpkqR1imR1nliI2vMA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-pl: BjGd7LPYRBKXEqbRwG00gw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-pt-BR: H-plcK4sQha8zkMJ7ektPA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-ru: MaJGBVgvQXSjIN5v-jZITw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-de-public: FMO8xxV9SpGr27U7cA3AvA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: SkIPWe3XROu9kgzIb-J10w + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: GyiHuISIRTGeFH5mKLhPkA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: EUMAWk29RNSMZWTbLTKlAA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-de-public: axhrW0gySBGHL0uDmfzwRw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: DrpkNo8SQJqXnj1qVQNUpg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: O_YnhNtGS1ajmt75MOkXOg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: Exg3_o3wRHC4Red_yuYi0g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-de-public: YP8R8JdcRqanuePKOfzw7g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: HRy8urgqQE6UeRG3f4MGyw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: Zi6HMv6CRpKaf_Itz2XkAQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: AITGgz9dSw-K4vf-zGDDzQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: RGzIaKdJTJCxWM-8KasH4g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: FlVXGtRbTC6mNWP4zUhObw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: IqUdFkDlRX6B4BsGgPebKg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: fg3z7gs8TBuzmmdq2zPDLg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: Gj841P_tQQWEp8OTdyXdCg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Oooe7GlbSxC0qWCTT2kTLg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: G2ZIsE0ZSqeeFVOoWMQJZw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: S-oEVsoTQlKDEmtaXPFysQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: W3pqeYhPR16CZeRUFdSIXg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: RzJOL2fLRzK2GbKOZvD-yw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: SbIBS_kwS_qU_hLtxOyp1g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: dHylJgeUTG2TXALQ3frzAA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-de-public: Mlfa_zKHQ0CAd3UW_oLviw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: DUGXU6elQ1KBfS_doA1lxw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-US-public: HbYuVDSGTF28ETZIsSElnA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-fr-public: BwRthjc4SBevf2OchAuNWw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-de-public: GaQuMdWKSWerOnSIbQCYvw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: QbeWsWvJSvKBjonWnBVFug + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-US-public: arw05s0XTGCs4-UHWhvdyg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-fr-public: IydGIES8QK-oEu0ScXX-cg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-de-public: RMMNhUOySRO1H4lj7uuM0g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: eWN6-QqtQtie_lguiXoLgw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: bZb-PyJeQ0OJ0y8FxTrN8A + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: Tm3Xw5vfQ7OJk01H2-GG3w + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-de-public: DEm0sYL3QmCEWPpQBcNSSQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: CwthOZ_XTba-y2p8FrpMPA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: LV58jHQCQPiSo2djTJmw6A + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: e17U1TBATN2SpZipLqY_qQ + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-MX-es-MX: ELlNoGY5TNKwDz3i7NH5PA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-US-en-US: GQNUW7oGTtSwBIsuLMcIbA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-b2b-JP-en-US: CkET61BAQ-ys7QFQqIAnRg + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-B-US-en-US: TCOVwiQHTz-roR97EgiWog + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-MX-es-MX: DX9wDTmCQqCs1OtHh6d6sA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-US-en-US: Z1WGjIFBSOWTJnHjkO39SA + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-de: ddEZQA_1SaaLx7w43AYBTg + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-en-US: BvPjfXNCSdanfa5eBuhhiw + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-de: GrnXhdYnSBWijvJrxny1Bw + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-en-US: A6M938oLR8KVTgPeLkYCsg + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-de: d5r8e-u1TEWv7Il8nU64ig + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-en-US: EmrjTwtAQu-ep3va8l-BYA + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-de: bC4nvoPdSWyYFUJyjiehkg + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-en-US: e3rFFS2NSQ-eEBLf5hzpkg + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-de: VMKA694DT8-LjTOJi5ZEHQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-en-US: Y8Axfz10QxWTYtEbyhnY1A + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-de: WYSAxtWhRI2Aly0NV1Pa4g + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-en-US: exdF4-X2Ty2tluEqfFfXfA + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-de: ZGIC_uVvSu-zM5T5sX8JtQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-en-US: ENbofKrjQvqNomETN6VwQQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-de: VtPZzyUrSfe7oJCk-oonYQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-en-US: BmPs6i8tRoqtFv7DA8UO8g + release-partner-repack-beetmover-win32-nightly-wildtangent-wildtangent-en-US-public: SxgBS0HMQwewn73Wf9uhKA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-drp-ru: f83cTx08SOCAEZ9MtI6BRg + release-partner-repack-beetmover-win32-nightly-yandex-yandex-planB-ru: ckMdxeGaTOG0AfSj9sMttA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-portals-ru: LE6NZCyiQ8SYWPS_eYl3zQ + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-mz-ru: FHf-MVGQStunXu5GQ1bDQA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-ru: dSHraoq8THa19WQTSCFg3w + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-gezginler-tr: f9b_elHISlGCAFaovMVCiw + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tamindir-tr: Qqh-VmMST7yMbBvwj7aLbQ + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tr: Lej8LZ7MQ3OTfxeQHEWkzw + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-ru: K9o3koH8RTyakuynD5Hibg + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-uk: Ebv0z7EQQTKqhM8tG4ZIXA + release-partner-repack-beetmover-win64-nightly-acer-acer-002-en-US: dMSPPs16SceNIEuKfUtbZg + release-partner-repack-beetmover-win64-nightly-aol-aol-en-US: RZI80m2iT06v4JitiFTXXw + release-partner-repack-beetmover-win64-nightly-aol-aol_de-de: Pk32T1UHTduslx6WWSa4VQ + release-partner-repack-beetmover-win64-nightly-aol-aol_desktop-en-US: cFkKluN0SxOWsP1taxjkYQ + release-partner-repack-beetmover-win64-nightly-aol-aol_huffington-en-US: OfHYKwj0TlKJXUijxOrYSg + release-partner-repack-beetmover-win64-nightly-aol-aol_uk-en-GB: EctuiYUFRD-rCrOIM8ntEg + release-partner-repack-beetmover-win64-nightly-chipde-chipde-de: c40jasziQRy71Qebjf45DA + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-003-de: eYroXbJ2TLWOQhO3KmdRmQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-004-de: Sax-W_iETw-FnXSmqVWNPQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-005-de: GTNx6IxNSdeJJg_gDAld2g + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-006-de: EKEEw0s_TsO6xOWxWTfx3A + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-007-de: dvS6cVqoSmmZ-sWK-cNEjw + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-008-de: IGz03s2RSzOa81zzSNaVQQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-control-de: Y2_Cd5UTSlyTz8n_Esi9zw + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-de: UpY4Z7boTpiUTBAO9HkI3g + release-partner-repack-beetmover-win64-nightly-firefox-firefox-election-edition-en-US-public: IWTgiVM7SjC2CWGMzfy6RQ + release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake134-en-US-public: M6b01YkUTfWhlq6ylzZmBQ + release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake137-en-US-public: TLaQF0bNTbaozjBY4E5y2w + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-de-public: Nj29R1vxR-qa0q7SO2M-IA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-GB-public: Qzkwl8cYR8qQbyprHQugTQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-US-public: bhe8QICQQpapN6YYf7bpoA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-es-ES-public: UYapZs9uQL-RpFdJg67WYg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-fr-public: eS9aHqZhSFK1FcD6P3ovPA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-id-public: Jy7Y8vdGTQ-aItAdL-PZoA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-it-public: BkQrYZrQT_SqqHa2kPFbnw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ja-public: HbCtfPHqTxezNC4a3jtaUQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ko-public: dJA-bzumTdmc30aUCKgWvA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pa-IN-public: IZaU-iuiRjKdrMfstzqsNw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pl-public: Sp05Y_ceQHe8WKcd-Lstcg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pt-BR-public: RQKBl0d5TESz5A7tBlUSrA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ru-public: O0GrdZa8SrSnD156S_eTwA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-tr-public: RNQWffZVRSqji8kf_3j7TQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-de-public: Z20m3p4ETRmJsk2YhwzA8g + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-GB-public: dMEAUZ4xRzWLhzn8LXvFug + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-US-public: QCV4fi60RSW_d_Ugtd0tzw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-es-ES-public: Im23RIwESsWkGkYcoUSF1w + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-fr-public: ahvvWMhqSJ2n0uz4AD-w6Q + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-id-public: JbouLxJFTlmwKyw7-rG3Dw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-it-public: I9gjpH5IT8uN9XfZxR9AZA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ja-public: BvYEyiwDTZOacIvaPr7RWA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ko-public: C9XMFM9HRyiuG6CSlEiqDg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pa-IN-public: S9IpN2ITTlSTgGGj_mSZ6Q + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pl-public: JoooizHVRx-Zbp1HNECDGw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pt-BR-public: WRYOS5n4QWitxNjIK16kiQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ru-public: IyyZTQWDQhOz3oVx9JQ-IA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-tr-public: QdVinVsLRmOl_fSuszOhwg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: L31DKiwqSB-vM2oN6jtLrg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-en-US-public: CkK_p0wwQoqF3sGLyowJmA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-en-US-public: fwKMZhhKRSue18s1uIDfLg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-tr-public: NdwJZJ_XSI-0kQUyeUdzGQ + release-partner-repack-beetmover-win64-nightly-mailru-mailru-ru-public: SEC1Os8NTuO5vvawZYPnuA + release-partner-repack-beetmover-win64-nightly-mailru-okru-az-public: V5RxPB4UT_-k864B7XA3cg + release-partner-repack-beetmover-win64-nightly-mailru-okru-en-US-public: JrSfNj7VR4aJnZpW0Ql_dg + release-partner-repack-beetmover-win64-nightly-mailru-okru-hy-AM-public: d4l66IL4SS-FRHcNwdk-RA + release-partner-repack-beetmover-win64-nightly-mailru-okru-kk-public: Pu_qm-6cRNmppXTkmBv__g + release-partner-repack-beetmover-win64-nightly-mailru-okru-ro-public: OWmt0XuMQkW5gaxjKAx0Nw + release-partner-repack-beetmover-win64-nightly-mailru-okru-ru-public: W6eknarQT6GJSUHoQsT3Tw + release-partner-repack-beetmover-win64-nightly-mailru-okru-tr-public: TaKiH74RTOyL4kGcTLTesQ + release-partner-repack-beetmover-win64-nightly-mailru-okru-uk-public: ebp_T1LNRLSlENInkvjUEQ + release-partner-repack-beetmover-win64-nightly-mailru-okru-uz-public: e6yokAjmRnSMChwWklJR5w + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-en-US-public: DsH5tr1cQBW2Gx45hxqZhg + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-zh-CN-public: Z07uGFiCSzG2ZjFS7IwzBA + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: MtF2dFF5TVSXLItr6ajvUw + release-partner-repack-beetmover-win64-nightly-mozillaonline-others-zh-CN-public: Q7SWXvJkSLG4-W5MNclHiA + release-partner-repack-beetmover-win64-nightly-mozillaonline-qihoo-zh-CN-public: Y7uhFyzhRYGCe1BuEU6XaQ + release-partner-repack-beetmover-win64-nightly-mozillaonline-tencent-zh-CN-public: UGg3ZshcSRqM8RI0zgZ9vw + release-partner-repack-beetmover-win64-nightly-mozillaonline-xbsafe-zh-CN-public: LFm7bz9hQtqkUs-9aIIJQQ + release-partner-repack-beetmover-win64-nightly-ntt-ntt-en-US: XiCIz_87R9GuDIyZNXHxbg + release-partner-repack-beetmover-win64-nightly-ntt-ntt-ja: EzFeNEwWQLyJpSic37X9Gw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-de-public: bl2lb51QQjO-fn-auWRyZQ + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-GB-public: PiSKQgS-QEy4NUGipyzB8A + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-US-public: HqJt4Vz4R7yyhP1TmrQjJw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-es-ES-public: DDjaooDEQAqCTWkFAKkYvg + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-fr-public: JOAGwMoGS8y5ldakExfeJw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-it-public: fqm8GWsAQMuiewOGFNFvNQ + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-us-en-US-public: CQe5eFbFREq6K5WyMEJWjQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-ca: FBBT92_PSySY_NuE6UbzWA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-cy: ZyGvwyC1RzifKJSVu8dy4g + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-de: Wfy5XUvyTP-CUIJ_BM1riw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-GB: GEKAFz4MSkmuwjZ0ufkqtQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-US: Nu20aPbdTSOVV-zwzMTrVQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-es-ES: BeL-58rLTQmEtzc0E1Ut_Q + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-fr: J3tVEj5MRSSSXZapxqTSCg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-gd: J3r4Sf9YT46HXL42GsYKqw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-it: N_LIZPKrQpKa_nceOwe1HQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-ca: QPAx1VA1ROurbO_7ZEb1nw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-cy: b-R32c3cTm-TSlMrmScQOg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-de: MgV-IVoSQwqX_rUWgcWLDA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-GB: WHOm-TttS42okKv8CooiZg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-US: HljGQ4KfTp-52QdcWtqy3w + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-es-ES: LysQsoXITlCVnG2DHzD8Bw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-fr: Jjr__pAhR5a_xdxelV0duA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-gd: N8DsMRHWSzOnhGBs7SOSUg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-it: D_FJcnVeTfCrp_EOVbVGBA + release-partner-repack-beetmover-win64-nightly-seznam-seznam-cs: cPMMn4A3RQuWrXBaWKQb0A + release-partner-repack-beetmover-win64-nightly-softonic-softonic-de: PzJWCZeNS3ayXdW3gJ8aTw + release-partner-repack-beetmover-win64-nightly-softonic-softonic-en-US: aFqMMpzVTeGiQ86Kbz7qsA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-es-ES: dfF_kts2R7CRUuNUCAnbzA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-fr: BlFDu5yTRL2ACGQqPK_IlA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-it: FSKkdTHBTzekJ91ylIs3Pg + release-partner-repack-beetmover-win64-nightly-softonic-softonic-pl: ZK_R38msRe-OYjBbSkksEQ + release-partner-repack-beetmover-win64-nightly-softonic-softonic-pt-BR: LoBoZEORSx2HoEddWapBXQ + release-partner-repack-beetmover-win64-nightly-softonic-softonic-ru: a1Dj7M-QT5Sgwwbiz9q6EQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-de-public: T3yU8L2kReKrLm_oBTNxuQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: f81zlstYS9Sk7eI83drClA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: BuWewCVVSoSqO2oocHqLrQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: dvCYashmTLySbtZbAfM8tw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-de-public: FabBNM9JQWKl38WowdGZpg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: e0D-A1sHQhKCQD_cVXue4A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: bvRDY0LTRleqg7hsMZD2lw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: eNxQA2rSRZyWEDgV9yew7A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-de-public: MgdHif8ZTJm8NDc2j87aCg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: b1EzO0NpRLq-f-nh6NKMIA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: HM7t_AzKSHSG_fWmBXViwA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: ClkE0u9dQ5Oi1V4aAg18Dw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: NqvYvaYHSaCLqRJlIA-nxg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: DX77XEqcTGKaRuF9_iLPTA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: XkuH5373SK2vmxuPmh7LPA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: ZvGBlB4bRKiCkYEw6dtBXA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: FGl9bvODQu2mqtZy49QNvw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Ke4jIgOARsmWGSVWHc6pJg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: aDkAl2YSTjOL-7WzrZO2hw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: IYiKHxfYTFuWHRUdcDmvJw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: DML2EoeXTDOmJIItZ3C76A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: Kp-e422FQeGC8ITZikQfXg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: E0Q02kRFTdas5ziB8_T_2Q + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: Zw5uXlJvS3W4J-eKOpRtjw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-de-public: HnuxBaQ3Q4mk1fzic9FiiQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: eHxi659ESVyqsnL2TEeEIw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-US-public: BmAgJt3QRTWANZ8Pwy0mJA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-fr-public: NJIQ4rBERU6NFh2m67fWBA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-de-public: KqQrefSuQ2mwNWfC5O2zGg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: FLtLcd1yQqy1vSJIk2osHw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-US-public: OKCS5BZESI6xd-vZ_BB0Rg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-fr-public: BeqU0L4QSxqE45y5xSbBPg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-de-public: bguKTodhTnu6p7hj_xaIrg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: BdPsIwSaTHGXWZwgK3P7fg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: Q4Og0UoPThK4Dn3Cufe74g + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: PJ4a3_HxTHGvVp2D96QN5A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-de-public: czBvsvmHRayMJzh2xJ0IpQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: WD8pu55RSgycpKROmSymBg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: UjbKbAJ_R9KRUCnPyIJtNg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: QporqiJjTPibDjPgd4LxJA + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-de: bSz-LqvmR9eeVLarDBYk2A + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-en-US: fMVKsPCPQWOoHkRqoEFSxA + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-de: LcCJSMvmS3u7WNSnF82Omw + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-en-US: JmP8Rz_JRNqcS0-n5UrZRA + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-de: JzvYvXs0QtG8lDq1pwSYZA + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-en-US: SdVEmNFITwecgpT4nUuzuw + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-de: eORLffr8TjWBcn5M9hlBew + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-en-US: SPkDYDmaRQ6b6anE8PGXow + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-de: UH_s8qJERumqqD0FIXedhg + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-en-US: c5ZQpNFER_ujPETmQ1659A + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-de: IsNI9uZKTWa9921dPkk5eg + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-en-US: Xbp9vpmRR0KFAgOoHotUpw + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-de: J9CWv-x0Rd-N1cOBIKIoDw + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-en-US: DiiMu2t7TbefBT5cQ0uZBQ + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-de: MgMn4fWmRxq5yWSwEUwkEQ + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-en-US: CVR3LEZJQXCGHJSSeqKp4g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-drp-ru: fw9jGkwtS2mhtdgg8fK-mA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-planB-ru: SYhB2A4kQFig4RdXvMxX7g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-portals-ru: cmyyg1NtSW2hy8v1x8hCiw + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-mz-ru: UzIDPvbOQd6izYhTANQ7OA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-ru: VWMR2NB1RRSZWbH1zWZQcw + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-gezginler-tr: WkWfzAT-RSa2eHxMK71AwA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tamindir-tr: HBYQ4YEmRb6yeiWMz2xUKg + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tr: LCSe72AoRpy6aPmyR-9ptQ + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-ru: KBb9BmdnThKJqDPh_XL21g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-uk: R6ShpAeMQmeN5f3ta5zRWw + release-partner-repack-chunking-dummy-linux-nightly-aol-aol-en-US: Fl4h6BC3SwaKYLiTwhUT1w + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_desktop-en-US: WxWdFF_hRjCfX7ellm8AxA + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_huffington-en-US: IbZ_9NTnTW-aE0YxnJjmxA + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_uk-en-GB: IEn7b9tQQuyMTAt54Iy6yg + release-partner-repack-chunking-dummy-linux-nightly-funnelcake-funnelcake134-en-US: YJn6BqduSWCpW2WXhmlM9g + release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-en-US: cidFWd6oTQK86psDSczbHA + release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-zh-CN: ASbrmNvdRT-4N5ByXSehWQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-ca: G0814a4TQgSU6NjRCjDaVQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-cy: Kdy612q1QP-0GdFjDin7rA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-de: fdZ3PGDwQWO2D0olKp_v9Q + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-GB: FEU35DS_StWNEABCAvjCcA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-US: apEUC9YgSVi1rCLhVQbaZA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-es-ES: PoHzU7j-QRyCJ6riX1-Vow + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-fr: DWsOMlNNRm6g_ZzEs75MeA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-gd: dFDKzmy3TF2B9dLJqbEBYA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-it: KtN5S2eqSUyOTdpgITg_LA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-ca: PW-mLeUMRcyVOHE_qkHLSg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-cy: PNkK9FZuQ223vGyKy-9rJw + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-de: SjyQjBS9QkyJUDSpu2DYrg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-GB: BEQTaMFQQLaGMydwNYUdYQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-US: WjzfALMdS02PWHaKqRZjIA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-es-ES: V4Yf6DLQTrSBhj_ZzQ6nrg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-fr: STa4Vhp8QGqXLb5LpvcogA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-gd: JZRSsT6ZS7GFHFSP59JkgQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-it: PRf-iVugSuKzrVhL6cmaWg + release-partner-repack-chunking-dummy-linux-nightly-seznam-seznam-cs: Bvj_EU07TI-rN7MsY0QVUA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-de: Vu67oEMTSQS530mVijYvFw + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-en-US: XWVcZ6zeRWO1xQkcphOy4Q + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-de: QWaMxE-AQgegwkl59BpBEg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-en-US: WB5nB27PQy2gKTTZJWYyQg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-de: Yc1jYejGTa-FnZVFu63uMQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-en-US: VEjcR3XIQPGwz_8kTAiVBQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-de: Zbl3lcEjTCaLUPKj7SWqPg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-en-US: Iz_Z74DjRP-BTO44sXTQyQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-de: By3IrHyFQeKLlvAF9Nv9qQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-en-US: T1vC9oxSQkizoUCMMcDf5A + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-de: RScYNwRVSPmwOTgJ2XtGaA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-en-US: QA8uGrNWTY2FkL2ymIXeQQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-de: Jszyh_lvSlSzQy7jU7hQqw + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-en-US: EzB9tSGWS6mU3HL8nD1CgQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-de: agf3o9pfTpWydU699tgQMA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-en-US: KDR0sFYtQmaVIzd9-op2Rg + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-portals-ru: DxwlUCEvR2a3At2e7J6ZXg + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-mz-ru: d0kY5vnoQ1Sqe0z51WT2mA + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-ru: HYY2jNi_T12Yz1zmOKZ2bw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-gezginler-tr: C4lH3A0gTKi_VS4KQ82ZTw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tamindir-tr: KIo9d1qXT8eOjxylNBZBFw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tr: Dpe1934eS06dtgjhESmAgQ + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-ru: FaGqpRoRSGOhkOK0UR4RkA + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-uk: dfSr1x1LTuGHCCDFqt1wGw + release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-en-US: FadnvUO4Ti-9OAL7qwRrFw + release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-zh-CN: QCh-fvHITk6yqL7NiS00gw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-ca: TjQvz95wQJWgYnJkFXWS8Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-cy: Kl8n-mFCScG5f-fMw5Qq-Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-de: DevD7YtSSF-CGWbrYI4Ntw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-GB: PNmRY94JT76Ejl5yYX3HFQ + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-US: VhHtTtCPTdGJlyGT-jPsrA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-es-ES: FMQ-VEm1TuaPtDgyqF7dXw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-fr: VDIxeefNSnCdBy6N3D8I_Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-gd: MYjDhbJ5TgK-38Z--oDKHw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-it: f8tprk0hSf62fEPhqbavLA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-ca: cDgrdvfRSZCO-2wSGwSqRg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-cy: UD8pSzkHTH6yH-gRGWL7eQ + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-de: JrprVawUSUKsOL1as3QbWg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-GB: UrPatzeQS4OJf7b2ri7yLA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-US: BWc417QwR5yDSRQ25xUONg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-es-ES: d-zMXurYTpSjTJhw6laTjA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-fr: B3OYCWKNQCuIufOuS9QuyA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-gd: Av0UiDEvQKCmqTLKLXA0zw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-it: LUlPCcopScS0asxdkiLRfw + release-partner-repack-linux-nightly: UO4uplgdSbap_5QpagWAtg + release-partner-repack-linux64-nightly: f8mgMXjSSxad0HG35CnxDQ + release-partner-repack-macosx64-nightly: SzpeIMSDTYeSpGWc999qxA + release-partner-repack-repackage-macosx64-nightly-aol-aol-en-US: cZW-czE_TMeE6ER-THQHcA + release-partner-repack-repackage-macosx64-nightly-aol-aol_de-de: Klx5x9wJQ3Gp4VhzWxllig + release-partner-repack-repackage-macosx64-nightly-aol-aol_desktop-en-US: fFIRDguaR9a4yHbPQBxuiA + release-partner-repack-repackage-macosx64-nightly-aol-aol_huffington-en-US: HjF5gacFQpaEfbt-xCEytQ + release-partner-repack-repackage-macosx64-nightly-aol-aol_uk-en-GB: EluUnY4FTzSNqNlzHXyT2A + release-partner-repack-repackage-macosx64-nightly-chipde-chipde-de: FBWI_sOmTuOpM19WMtkTIA + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-003-de: Mnc6tMkyTkCIJUWmqC8Blg + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-004-de: d-ZeGR3xR6mt7Z3E3j6fRQ + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-005-de: cHX5HFTfRCub4eHZt22UXQ + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-006-de: PziUMlaDTNG61yaGRuhe6Q + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-007-de: PwcF0OMjS7KoH9_tCgyIgg + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-008-de: bER4g0jJQKCv1MpeGH_MZw + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-control-de: DCmH5TDbSNiqsvQ0lQ-Exw + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-de: FRXzg4O9Rsa2IktaG7C3Nw + release-partner-repack-repackage-macosx64-nightly-firefox-firefox-election-edition-en-US: AeCg8JyYRQawGNKpSzeu8Q + release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake134-en-US: PKAlXMUKRtWnIwKPXkhRHA + release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake137-en-US: MNn45cg1T9iGWNOCsi8VsA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-de: MDgKzekrTn-M0ADySHU2fg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: PqWEHhBAQZG0-jgA50ZeqQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZOB6-qVwQD2RLmXc6Tzplg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: BsxSTWS7T9GPDcpbfXTkMA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-fr: C1WxDhuuQo-a8xRNfkyqrw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-id: XR-ZTJPqTyKiPZXg2sPkBA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-it: PpnTB5RfTPSQdUO_S_45Rw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ko: GMafq2enTam1vy_4MdLDUg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: KqGinlJcQEaxW4-6IffNww + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pl: DGkoViLXQ-aFNdv38nrR9g + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TXNkI77kTaSO0q63sdTK0w + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ru: TDhUOknFR_-PBKUEBs18-Q + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-tr: VlFJRofOSVWkWbvmoDXReg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-de: M3F3eGtzRImPwA-nKbkILQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-GB: fbDcAZcVT9mcwjKzFeGQPA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-US: CO2XRa5XRIicOn7l_G8JTg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-es-ES: Lp5SzER7R-2tHixqB5fOUg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-fr: K6MuyJW4Smqv14H1FtT29A + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-id: asdCp65nR7KyMcDHqN88Bg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-it: Qip7bL0QQ9OQ01Uk3zZzqg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ko: RBIxsdNCTiKpMXq97MGHAQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pa-IN: IkCXosFPT0m6B124I7PDcg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pl: N3m-SYN3Qn-02Kyrc_PTAA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pt-BR: K-ra1l9LTjuOJkwUOU4exg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ru: fvi5Q5wIQ1uWYZvict7Jig + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-tr: VvLHNkUUS1SyMrLmnHveDw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Gw5a8KNcTluBuJdCvDIibQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-en-US: X69bdqf_RaiDyjEMYCTyJw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-en-US: Ep2J2L9WTAy3Q2e_iCVjQQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-tr: DbILlvm0T5-fqIccfO_QgQ + release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-en-US: N5xwjXTtRtmwfnLj87MdJQ + release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-zh-CN: KEv6U2JrRyOxpWGaSvViEA + release-partner-repack-repackage-macosx64-nightly-ntt-ntt-en-US: XiRND8a6Q3et0pl7NExR2Q + release-partner-repack-repackage-macosx64-nightly-ntt-ntt-ja-JP-mac: NlQ3gqM4RXKPOXTnpbdo9g + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-ca: azxF_70HS7y1mEPeH_lMkw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-cy: Hm9lQXgsSVuXzbrmk7X0nA + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-de: fBSKtepRSbKQZVOuaEKJPw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-GB: LyWK1ZqkRHqDRQ8nKlL8kg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-US: Su3NtxirSSqBKSPeuwuz6A + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-es-ES: MkTFT8SVSta0RRYNHuTJmg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-fr: BiR2QFC_Q6ux8jreOM85xg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-gd: f-3HWh8cSPqjN2IT_MR0IA + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-it: TlYxU8AsTxWmFVyJ0tA02Q + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-ca: AQ8Z07ZcTZ-rbqp0HHzfZQ + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-cy: ENVbIUsyRL2A-rPHaGPz5g + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-de: NX6EO8tWRga9XPxV8aerdw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-GB: dtCWtYPnQ_mWdxw-lmyvAg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-US: M60-S97OSdW4AmZ4tCMahw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-es-ES: TCf6fz7LQXSbkQ5QOy5Uvg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-fr: Tm7Hp8hDQYKdNTCq55kyDg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-gd: UhQUm0EUQ6G32mTqmJtpFg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-it: PEgJHiuHTymthsW-1-IuHg + release-partner-repack-repackage-macosx64-nightly-seznam-seznam-cs: fLe_59oERT2lOFHfcnu-fw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-de: VigDGwSkR2y74yUZtSeAqQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-en-US: Nq6ggH_gTZ6QQERWuvp0Mg + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-de: f_C6tcW2SwSx3pKftcpywQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-en-US: UKhPQR2gQOSz8fcOlkBQkA + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-de: Mp628RbBSquvNYs9AnxQMQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-en-US: KkEKpaipQRC2Q9Kv5IYvEQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-de: MUqfp1U3Q5WVIsFvoB-ykg + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-en-US: KsDtTDaLS7eG_pew54nVag + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-de: K_Q4ZoinSL2IT2KpNYL1ig + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-en-US: e5EwmkVYSDuKtib_DffhOA + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-de: RHiKJ_x0Rtiacg6iVDE6Kw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-en-US: Z9-aA8nwR9-_SnRaxKuTHQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-de: LVg61mxsSjiz8qvI-E3Zvw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-en-US: YJHJJQaDTA-sjbNTpjZu_Q + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-de: Rw8-CAlQRXuGH1iTz0Vebw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-en-US: CRc39GuQQb-jU7HqmpvjAQ + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-portals-ru: Z1DLLqEyTH2vPiwHIzBl8w + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-mz-ru: aYJ1f3sLTru9kRwkm6uVtg + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-ru: L7pL8ev6ROqO5jljAsIfUg + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-gezginler-tr: DXbZXfLVTky9wvp5ARq2nQ + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tamindir-tr: e_DJ1jl9RkeVqqXXhxa2ag + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tr: ZVZne-avRheffJDwQ7k3_w + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-ru: JVgSbvGgRqWVZFiOVs5ZJA + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-uk: dpfjrTKsT32j4EBBpMV_kA + release-partner-repack-repackage-signing-linux-nightly-aol-aol-en-US: fmfyjBqiSnqgvLhYZjqx7w + release-partner-repack-repackage-signing-linux-nightly-aol-aol_desktop-en-US: O0An4cBORUilylitG1L6YA + release-partner-repack-repackage-signing-linux-nightly-aol-aol_huffington-en-US: Y_c74uPhQWSKBzbKBVkXSQ + release-partner-repack-repackage-signing-linux-nightly-aol-aol_uk-en-GB: BoVGx-5tQ2m0s-j9UQRdlA + release-partner-repack-repackage-signing-linux-nightly-funnelcake-funnelcake134-en-US: AzPsfV6AQaWGzVFGZ2P5TA + release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-en-US: YeyjMIm2TuCdUEhjjbhKNA + release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-zh-CN: a38VmAACRKaPpYS9vWG-5Q + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-ca: SFOOeMaAQ-2UXWNYM7_KZQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-cy: ZzlAFM5oS6edXV-UxaxKBQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-de: EytL054jRI2oEW3iTGXRQw + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-GB: e4rKpCU5S9aZp8rLWnYU_w + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-US: Yk7eCqZcRHK7aSWZ2xCOZw + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-es-ES: WcCnTaTLRBqTkR3O00R6eQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-fr: YQnV8IxTTkCmE3lzl8-EmA + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-gd: V_0p2VRMR7KzUZGBjjnQBA + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-it: TzcTkjt6RYu8kvEbrL2QiQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-ca: BxVQLYkjSB-El4-cTKD8lg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-cy: MjnJ91pgTfSYvZKrCVscoQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-de: Rz-IIDvXSU24EH-A8eOzMg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-GB: OSVAjo73Tx-h14UpmUVwjg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-US: Ah6AXDiAScyo88iAiwEmkQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-es-ES: EU0NJZwmR4m-q4pomOQ4FQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-fr: AeTEaXuKS5C5w1cVIgqJtg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-gd: UiFrAFsBTx6o6zgFcT--Rg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-it: GE8RdeizSHu9l-BXC2oABw + release-partner-repack-repackage-signing-linux-nightly-seznam-seznam-cs: NW5PD22dStCB8t21ob9qOw + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-de: TBcgDrlYR9il0XgoRRtHKg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-en-US: Pc7ax-LbQQWlvX7xOUCbHg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-de: SEKzGHnvQQqhIVrSwOEB8g + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-en-US: G3tXqPVYRdWJ2hAlHSbShA + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-de: FUyPytEsRySewYlpn0yOWg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-en-US: DsxE83h0SqGraJH9o_Oa7w + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-de: DbXPvZu3T9qPsJDBYJUUXA + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-en-US: Wnc6A8t5R8KTkFMOBYspRw + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-de: N4k0PV03QIOkqsyMc52qCg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-en-US: e5W7vrtdRFWfqUFsNwB8IQ + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-de: Jd3YmUDxSv-i-Epp06L6Yg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-en-US: E6EpY6T4RdyGMOcjrs5P9g + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-de: ObYb7ifERg63Mcw9USy4hQ + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-en-US: FST9apwdT8iZR2an9twKRg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-de: LnmcVQsCT_Wf5Lzsu--FMg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-en-US: Rao96LAlS5acRQ4jbSzYXQ + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-portals-ru: A_OvvKm-ROyr-jKEODPC0A + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-mz-ru: Iq49RR1aThWcQHQn2jXheA + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-ru: O42VEReoR1GszNWdrHEvjA + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-gezginler-tr: OZbH-k-FQbOXLqSbp6OQkQ + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tamindir-tr: Uydzud-_SLu44paGfS0Cmw + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tr: KsQaFfjxSJiloIskPy1K5g + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-ru: Gr-6TcvZRryyocxgn_sVhg + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-uk: InEOCDcaRGiRXG_aU1M0GA + release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-en-US: Pzz8p2gORnmluoRh4pSqmA + release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-zh-CN: HmG2JrGwSpy62uGlOg96Pg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-ca: PHYqIoc0SaW_E6PMm7aF_w + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-cy: czBJQXCFQrWuA4OvNgRLOg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-de: dR1OrHwTQE-DQzsLBGgaiA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-GB: T86oavrITFSJp4eF08W2Kg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-US: Z5YYoRXaSyK4rE9MW05L9A + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-es-ES: bb7BT1j4T_a3u1o8s6aToQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-fr: TRulVLTKSgiMArTx2_yARQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-gd: c-E9SLTsS2eZwtuvGxY_Pw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-it: O_71sHH1S8iu59_kFKedTw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-ca: UXqUxcTXSLCwqrujPH_IGQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-cy: TlbhPM9lTc2Kfz8rhjm7IA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-de: NKMkFXfsSES_7J0gpPrClA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-GB: L-gPITEOQQi8PNp3wNzGMw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-US: EiV662PdRVKgM-H2xutXag + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-es-ES: On7yelz7Qk6n_pm98kmzaA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-fr: YQIqCz7vQmmln0Cxg8REzA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-gd: I1KEbTqlSCuzOlQidC0mTg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-it: Zehd9xHbSDCpz6NZueuNSg + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol-en-US: JCMoz1ykR-qkqt4-qKv9CQ + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_de-de: fAmbNs9EQbizCoiEW7rgpA + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_desktop-en-US: ShTUrHtjSxmGGYnYNXQPnw + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_huffington-en-US: dXyo_KMaRMeRRxnQY_amJQ + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_uk-en-GB: dzEFFYGlQjCoS5SFzsp95w + release-partner-repack-repackage-signing-macosx64-nightly-chipde-chipde-de: B8vvO6FfS1Cu_mZKLvjZVw + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-003-de: L8nt40hQRByTfx6hcDP-Lw + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-004-de: YJzRB7QkT3C8m66SQQxfxQ + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-005-de: Y3_UEwWfTiCAiEDyh3NZ2w + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-006-de: U3spNthoT3u45MsOAYtzVg + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-007-de: JjzcXKqSSee_mS-t_dtxUg + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-008-de: MR7jZNM_QiCs3iy3AF40ag + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-control-de: NaVV-o6KQ7i0PEKHj3adfA + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-de: cTH3z9AXQF2lVL3aCbp0cw + release-partner-repack-repackage-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: XBEnPqARRn6A6kvRfkLCUg + release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: HA5gv1tRQ-aAmKUQHJVUsQ + release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: cxt4oosvQYSCVfPJzOIXZQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: YaWE4B_0QUOONj7i85DlRg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: dFXA0fEsTfKC3Ci0WP8MJQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZgCOk84KSBmESob7xuv0Fw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: KA9Lm5N9T1yPTM7QTK2boQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: XbzZVIQnRPONgrrK9hZalA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: NvQRUiHbRT2aPdkcnb53Sw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: CkA05810SgWZovO6p4rsGg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: HgorKPdRSFGghJznzBCzyA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: V4LisnjuTy26NOOPy7P-yg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: OmHmx7SwS4yWCuSEwAq_VA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: bfXYwCIKTNSr26EzUHZ85w + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: VDBicfCSQ56ugRvMxLHocg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: KTWL_XX7S5KacNH-REQZhA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-de: ZFApNHfzS8GIW1DV-VyN_w + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: BBA50gyORL-Edq18_DbR_A + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-US: L_4NjItuS6-BLdCdrESEPA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: arSGT9-QRFuRQG6Z44iDrA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-fr: X0yj2BfCSfOLZFmpV8IhDQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-id: WBuqZ4nKRY2je1NzMKA9Cg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-it: dDjacDNOTZ2KqR0JfuXZQA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ko: ZUxTEtJLQ_yc4g5YzwBQ0g + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: PpWwwSplRmGHIaYpf_i-MQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pl: NY4fLUSSRfqp4RTxyWaTLQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: dGzEbKk3SqCs4Dzt0aYNmw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ru: LGLHnINIQsWANtIGCplhLQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-tr: PBUT7-mbRCyp3LCUje7wIQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Ld-dUBh4QkyLzQaCLCxgkQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: A_k4Y65YTQa8-XpSRinaag + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: XzkArif4RUeIsuSG8BC20Q + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: KBEuUBGJQqK2iUBLMNtOeA + release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-en-US: RLqikoPWQpStFyWe6ka_aA + release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: ebyW37wpSme8w1n5yE1T-A + release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-en-US: P2PVfIwYQxiL2t80u94fEA + release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: P_w5qrurSra_GRsE_ngwZQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-ca: cjCuTLlTQ7eR1oVP1IfqOQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-cy: cGDVw7y1Spu3U0C9unUmVA + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-de: GecZv0YrTRmIAEG8RWCTiw + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-GB: QHVxE3wkT--AG2PjQU4UKQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-US: ckT3lbQxQyezwXccn5Srwg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-es-ES: VMOM0OHESVmAKqPCZQQTUQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-fr: bg31l36cSTel27hlofYVfQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-gd: HstbSzJkR-6cf9GkEeyGQg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-it: c521Gc69TIa-flGKA9s9Wg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-ca: MBZYWx5GTaabsutnWGuleQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-cy: bNQhtHM_Tb6ZshFrhMXtvA + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-de: DuUlk57VTKajqCMlPIV_fg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-GB: Z_z3xQqnRwKQdFJ4LT32yw + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-US: IT1uywfjTKuqrmUKyP8Djg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-es-ES: B9pRIwZTSHKS4k7Fm8AuvQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-fr: dbEuEpl1SPC-i3iMPBWjvQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-gd: XeYleDJkRneuxJyp5n9a2Q + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-it: Sawym0_4QMijlwXKzryWJw + release-partner-repack-repackage-signing-macosx64-nightly-seznam-seznam-cs: JA99iJ3URcqn2uL3IEKOww + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-de: cCfzOT8QTUCQx3nh_1S58w + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-en-US: IWraWw4XSSmULkYPZYgaqA + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-de: JAADP_k-TbKYYB5xmp55LQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: USl8NQfaSTSZF0LAgAeqRg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-de: QlOQ6WcsQvynGmWOmL7cwg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-en-US: El2mjGwKR0CLdsl_eOko-A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-de: PafmIpCCQIez-TCR5-RIWQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: FCEaj_QvSKy2eOM65SpjSg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-de: LP3dx7_9SEK5I1BnFRwLVg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-en-US: AK5sZPhyTnSkT84FeW5MqQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: evj12_-EQD2CHYvnl_oCLw + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: WlBOg4UXStC_ENbvTJR1_A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-de: PXNnofwoSfuAjFZMstDefw + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-en-US: IeVTvDAQS5-YpRZrEzc5pA + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Poa4Nn-eSwWM9ZapRx3y3A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: HBlDrziWSp2Zglg_WQaDRw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-portals-ru: fYqgLQxcSl65-aBkdUht5g + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: HFhENKq5QV6SQPO9Tg0ZtA + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-ru: PrRxEkWgS3iIcyrl1EbJoQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: FXReXgZ4TOijQXH2-g_sHw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: Oqqerg7TQtSgMVr81RpVqw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tr: emyNdDBVRS-kOm3ktr5FPQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-ru: XXmF6_-jSWe5WXRTKhKvrQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-uk: WHG2lC6sToC914uhICOlpA + release-partner-repack-repackage-signing-win32-nightly-acer-acer-002-en-US: S8GF0GZKTk2tEUn48wpo0w + release-partner-repack-repackage-signing-win32-nightly-aol-aol-en-US: SJlBZDVnQAyslf29KwuLKA + release-partner-repack-repackage-signing-win32-nightly-aol-aol_de-de: SyIa_Iv8SNClwdciqz9CrA + release-partner-repack-repackage-signing-win32-nightly-aol-aol_desktop-en-US: IphwJeWWRtG2dF8IQks8Dg + release-partner-repack-repackage-signing-win32-nightly-aol-aol_huffington-en-US: chsrz7hLRJCeLd4vm4Bk6A + release-partner-repack-repackage-signing-win32-nightly-aol-aol_uk-en-GB: OUulyxHMTRSQHeJcftbo5g + release-partner-repack-repackage-signing-win32-nightly-chipde-chipde-de: AWu6urNYQ4qttAxI974wiA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-003-de: f_wa0GdSSmiqoxjoWtWVrA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-004-de: dF87-Z6wRW6mWjJUQTaQtA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-005-de: XzFPD5A4QX6noBkt8KXZbQ + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-006-de: GWOzJ0T9SauKRNxCJjkarg + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-007-de: P1gq2J-0QmO5gWy2528tpA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-008-de: D-y0D-x-QEyixNT3Y3FOQw + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-control-de: d53HQ7SAThW7XyqpNHUfrw + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-de: GL1V6Wj1QF2QO5l4FS-iPw + release-partner-repack-repackage-signing-win32-nightly-firefox-firefox-election-edition-en-US: PkFmN-9KTo-HtD8C1HPsrQ + release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake134-en-US: UeY8n5_PRHyemj5mJCEoFg + release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake137-en-US: SqASpEpcQrC-2A65bcx7Hw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-de: D5ZDmjdbQ5Oe0Ve06TvJ9A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-GB: PO5oCMz2SJ6h93hN1CRhUg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-US: USMuLsWET2GdNPyQx_yoMA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-es-ES: O6wIY4icRfihRLgsONsGIw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-fr: bBJSkmI5QT2x0m0-vRrNGQ + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-id: JmIZLIK0TKGvvfg18WWkew + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-it: LeFd7hvlSfm8WVPEpg4x_g + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ja: fcfKGUs7QBylC0RJ9pNorg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ko: Wq1xbFThRIi7sSX6TfI28A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pa-IN: FcAkJ60uSU6nJM-NK82Qnw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pl: LB8IYutGR5OFsgp_9_Mrfg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pt-BR: RBUAKfL-THG0KRp_9Xr1rA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ru: KEm_R8ygTsSHvIk6MX4Pxw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-tr: Z9I2emKQTrKuYtOjyQDaZw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-de: ApHi7KvlT_-MXoYn2YNcgw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-GB: PX014iroSpGpThXoO7dfHg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-US: PewbAx6cRDeTe1C5-K9BHA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-es-ES: b4WcVLl8Q-GYsSxdHtnB_g + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-fr: bQbRuuyXRTiRIOUVp4aemQ + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-id: C5zW_aH0Qp2jzdQQNYPlog + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-it: MIVsUT8HS3ewRwqYGdcwsw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ja: QVUwEFVISbOST4hgW_eejw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ko: adJ5LoziRN-rNEVli03sew + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pa-IN: Ctq4EIa_QimpjpfOTIDMjg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pl: ISrvkLtgSl-oVXNBv_IoKA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pt-BR: HYA8b328Qem1_vwa7-WClA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ru: JFl_NpRwTJuq0lNv6LWWFg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-tr: XebcZQ_LRnK_nbRtQlv-9A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: fdZ324DPSYu7DEWBZ-DOJA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-en-US: BCHFqFnvSTeLSfXh_B4Wvg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-en-US: X8TarqWiTyyBDkkYNC9MJA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-tr: VrSJuuI6SEGC0SOMxSE4uQ + release-partner-repack-repackage-signing-win32-nightly-mailru-mailru-ru: JvWkXHVPQs-Izj13Q5ufVQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-az: e7DdmJXnR2KCbozx0q9nbQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-en-US: BHYhl5fyTTWcLkXYon2YTg + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-hy-AM: GKQ8SSSBStih06jHScTFCw + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-kk: eXFvdjF_QJOTjcNzsxnAdQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ro: RRA95yQ4TxCFlYgdSDnRaw + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ru: Kh7WqcGITKy-kv63xjaAuQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-tr: LM-EeO6sTZ-Kh5w6rnnT6Q + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uk: PPjnfmQJRhG6jGf4mrnmHA + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uz: c5vNa7ggToO-UzA6jue5Bw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-baidu-zh-CN: EbLB_2nETUqzORb4aLc4Iw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-kingsoft-zh-CN: ffKAN9xEQjyjLyx-TT_pDQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-en-US: BqCX6u3RT9SvPhP9z-JQxA + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-zh-CN: U5JQWO-WTFuP_zBLNTCRHg + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: F_4Hkcz5TFKrUevScjbCTQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-others-zh-CN: UMtojzsPTaKx08wd-6AxHw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-qihoo-zh-CN: KhkTGOreTFCwruJ5z7QV8Q + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-tencent-zh-CN: fjxCRlUZSTms_fMBfGiqkA + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-xbsafe-zh-CN: Hhn1S8s9R6i2Eu_WhTH4GQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-zol-zh-CN: TVnHn3lnQGGbZA8ORstgsQ + release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-en-US: N4JjMUJdQfuq2_QtR0q18g + release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-ja: br9DN3c_T8a1X_JOYcXOYg + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-de: JCfIVyI0QE-fAC8uXakQzw + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-GB: RbQXvSnpRnSpw-d7FH0SGA + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-US: XpzUDzsyTJ2hRx-yj7d6oQ + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-es-ES: BORMypT5QlWsXUGBsbqmWQ + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-fr: NVv-XX5qSVaIYnzachQN-g + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-it: LzaMjaCMRNGHQ6iX0K7F9w + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-us-en-US: dSMluYdzTxuIYoug4bi6jg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-ca: AC3vsFPvR5W55m5b6yW0gA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-cy: VnvM9hQzSsmXX7-S6rrPzg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-de: EG6_zJUwRpG6zkIV1v2w5w + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-GB: FhnPraiSThGrMeIFiIgr7Q + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-US: AeMrl5V6TZqIkpbTxSijKA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-es-ES: IY46LYIrSI-zAOVkipZYtA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-fr: I5FnPHt3Q6uCrpPEbY50Pw + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-gd: SyZhcQHdT-iZ0of8-fO52g + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-it: UBxmmePaR--nVVQf3QGQZg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-ca: Eo8o7pJHT_CF6KB9cLH6GA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-cy: OjarzXy8TTGHYwx0QhzSZA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-de: RmRNBjy7S8qGHAEaqc-CNA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-GB: Kh8ctqqkR2WW4Kz-uV9mjg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-US: bWUiqnI8R7muQRzzNbiLgg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-es-ES: e8LIpYeSSXSCspiT3BjpIg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-fr: AIQzFwreTeCMtHthTj7zug + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-gd: Y8OhhGMHR0-s1m2p1GFaqg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-it: XohcXEKAQLupCQHEZ3wdeQ + release-partner-repack-repackage-signing-win32-nightly-seznam-seznam-cs: fAHt_YErQRawNNXysCRsww + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-de: d6GmxFx8QxeFH6Kof16cgQ + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-en-US: af0q_B7ZRzic-yzgVimp0w + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-es-ES: UUtD3SF4T7meZXIahxMILA + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-fr: f3dKMJKLRiOg-hLL_K1zZg + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-it: VfMTqhFhTrWR_QU6seIPcg + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pl: Y92ziwSYT5u3UawNFgf03w + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pt-BR: WttB_tvCR-eOvVRf_rcSDA + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-ru: UajJBV8WTEadm0pAX5vPpQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: ZzSSAW-AS7KEs4TJlxq9QA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: G-hWsyREQFGO7_PwHAoN-w + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Kg_HnFUCScugObqTno6HWQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: L_4vXgFZRhSw3OdL-zcvFA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: VIS8G5efQ6mjcA30F9YHVg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: SsiUenk9Td-RgWjCWRBwyw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: P2C0VJiwQGCSiOdyRhDS6A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: HmJ6_4FYR4-eeECLf2xyXQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: OGjQziIBR5y7Ic-bGqm2ww + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: IEhoxBKCRZWE6YsQiHSdJA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: SYEdQaIXR-G-WXZtbix94g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: Io2uTgsTQl2HXoX5o8CpTA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: CuNaDVcwTYe2m8GQ3IDOhQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: O44cYTwLQv2UXlov7x7_Nw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: TOU3T95CTmG5_zaxTlzyMg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: EWmViGMFRm-iGSQu4L46Eg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: e3G02jM-QBqfkmsdEwx_pA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: GW6pbGuzRXWjUFni8QiFLw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: ThzJuQ0GRzSkqVqXv3qk4g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: c-0CKZruTh6kvnNBHaYYQA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: buJ3jok6SxmndRz6Su2FHQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: dq1k3gGATWO-MVcXJSzU0w + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: AdQ8ZfB9SeqeFq5tA0HxDg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: QM6peJYjQgy46kwhTcd41A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-de: JDzxQ0v2SuuJtNkjy7fmVA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: QU6wvL9cQ0ek5oEXps8UBg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: W2LsVKQqQMu3DtT8F41__Q + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-fr: GdBuiki9R927dwfZTTxyRw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-de: WlWy4fBtR5CuHIAU8ZPCow + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: YxukSsRQTLC3OQS1GnHViQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: SWDWe0utTJWUYt3byEJd_Q + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-fr: LeXS9q05QZOD1zYQy-ZoXA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: MXXbi2RJRG2phRSi676dnw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: Y6kctChLRIGXPPT_atSpmw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Eg6oHExGR-iTbvBYsmGX5A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: KoO7Owp5QEGefAYBi6UD4g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: HVbHCKjURsSlPqWdc82JjA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: HpVsDhw5Ro6LKqOGWdF7fA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: Hlb1KoJrR921WC4y2YweRA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: coY-_1kfTpC5h62XKVnrdw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-MX-es-MX: X-f86mHVQkSNMVwWCqgzvw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-US-en-US: ZbCETvnzSlClpRhWm3Ampg + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-b2b-JP-en-US: Y2SmjK1oTLGS-sJCjKPBsw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-B-US-en-US: eWY6gA5JQOS9qZOktd3rCw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-MX-es-MX: UEjyHjOgRXeQxtVaQlT3_g + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-US-en-US: cYFOHWVST66MMdeeSZrDwQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-de: fywqFS2mSVm0-6xwN_6M7Q + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-en-US: FA_me1f5STeT-3Drb0e5Kw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-de: OZxX9H65T5qTBQvGqiDpwg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-en-US: Yo5owbAzRKegLzKtx4nP-g + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-de: XeuAS2RFQi6vmtWIPjtIlA + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-en-US: PkEjXl13SYyJHuHq_a23vQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-de: RACC8r_nTo6NWj_7OUwehQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-en-US: UZ40Jyx2R_m5bdDMfcHPjg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-de: V4kFd5WHQ_ebN9zl9tN6ww + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-en-US: bpy9eWfySwip7cM0-yENIg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-de: bA642o1iR72QNLy7LF4GQQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-en-US: TDYfSw3FQJqAuWm0ZH2nmw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-de: VAmlSof9QviWhF3diI0pzw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-en-US: QWqAleDHTsGRQldxsTwZ0w + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-de: aC5VJz9lR5-kKaXRZrzKkw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-en-US: TELGPOZDTwq_9hcJcYT0pg + release-partner-repack-repackage-signing-win32-nightly-wildtangent-wildtangent-en-US: JdARg7Z2Qu28R0Do18nqdw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-drp-ru: TohaP2kuTdKv37MaumMXdw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-planB-ru: MaW0ixuWRq6pXwRXPvVbFw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-portals-ru: QG42WqWyS6CXB4Id0tcfmQ + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-mz-ru: f45L5q3qRTus0Ge1z-l19Q + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-ru: TScPunQWRZCAQxwPHQsyOw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-gezginler-tr: e8mfxrVwTOKJStJTpJ2jBQ + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tamindir-tr: DRgVRvvPS3CwYV8p4bdY2g + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tr: bpmAxALgT4as1TS0XDUsSA + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-ru: MZypzfCaRZukX4o1Bh6fCA + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-uk: QceLdF4iQPOjPleQAhzAKg + release-partner-repack-repackage-signing-win64-nightly-acer-acer-002-en-US: XiLkJwbOTTKH3_f-ra8liw + release-partner-repack-repackage-signing-win64-nightly-aol-aol-en-US: C1ENWN2_S0au0cNxXZ83Xw + release-partner-repack-repackage-signing-win64-nightly-aol-aol_de-de: PB0GN8cSSc-fsDDS8sGe2A + release-partner-repack-repackage-signing-win64-nightly-aol-aol_desktop-en-US: fOft-HAPRMq8F6-J5JOxbA + release-partner-repack-repackage-signing-win64-nightly-aol-aol_huffington-en-US: OGMe2wjpTUKdRgMt4_fM-g + release-partner-repack-repackage-signing-win64-nightly-aol-aol_uk-en-GB: XJHzkW69Rwq7zOl7jEFMSA + release-partner-repack-repackage-signing-win64-nightly-chipde-chipde-de: eGKCEA5_ShajCGqEVfMMjw + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-003-de: WhGOAbPLSLCDpIBTtRs4Lg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-004-de: DJCj_Mw6RMiv0khQVYfnEA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-005-de: CJSTRMUeQkC_8Z_TOVj3Gg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-006-de: D6LpUw0tT7yGRwA9VCkubg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-007-de: XMBmRudHS1iMfxEIGQ-iFA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-008-de: PoCX_UJMQTy24IawcCtGjA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-control-de: HjcEdL0rStaFiN2jM_I8UA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-de: Z3VYxzJPQ1Kpx_RBOFt-9A + release-partner-repack-repackage-signing-win64-nightly-firefox-firefox-election-edition-en-US: cPIloCcPQl6aQvmoowbNug + release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake134-en-US: OZUBAd8RRUyEOcqoTQhPkw + release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake137-en-US: O9QQXuWbRBKWP2U9kNTbRw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-de: EEXiCsXlRYug_UO0nxSWGQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-GB: ZnlgFqRmS6mfeeXj0gcriw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-US: Ot-fuyKORXap8gwQiV7qrg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-es-ES: SkOB5nUqQoGhIay15uOQlQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-fr: YGeDb7hxQAqR7QS4rvqkSQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-id: RgEhe6grSICa9uBBu-YJpQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-it: Cd4SxTbrSvKuZVOR3MGmfQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ja: MCuxkPiiQZC84oAb803TVg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ko: bAhWTNW7R9udr9HgjR3KEQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Az4kFYdmQYq0nB3MSdWHNw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pl: Hha2rbr5Rl61lrJa2MZYlQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pt-BR: fnVnEbJ8RQq3jp9nEDEcDA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ru: HvPnYmEWRtCdKascj10oDg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-tr: V4uvI1zwRTSY6x1RW10P7g + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-de: ZtcRAOqhRBOHTyarS0Z03w + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-GB: Y2pNVU-HR4y8cHuc5CsgzA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-US: HKL7Ou8RR-awKSTdbuF5WQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-es-ES: F8LXzH12T4G9zDztVvAA0A + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-fr: bWbIs-NnRhm_gMZXPHWBkQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-id: Xf_0hh6UTRe7oEUZO1jDxQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-it: Zm3GBGS5Qm6IB-0xxPEIcA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ja: UE4DjdvlQPWOLO_DlPDWrg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ko: FdPj2LScSo2NGMAZMd2QTA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pa-IN: EB0Me2iOTWC3EUCfQOeGtQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pl: UJXkkqHtSoiG1TsA41AVmQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pt-BR: f_j54yxhSY-HqtgxA-fvgQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ru: BrWe7wV3TrG1MJIyfCyFXA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-tr: CpdhBsMjQf-0c9GtSYHUcg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: ScrgZFziRD-V_NfQLqoF9g + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-en-US: DjIkj112SQ2Mxlm-SSxBoA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-en-US: NC8fwT0NR72-Q5oXAJT9dQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-tr: eeWcNduZSOWczw4HOIFM5g + release-partner-repack-repackage-signing-win64-nightly-mailru-mailru-ru: CPOZPomKQtKOW4jcjxS0SA + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-az: WTMNaEv1TJKBKWE6JbjX5w + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-en-US: AELUVC2uQeKSYrLMYxAzkA + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-hy-AM: fjTtAoK8S-62VurIiP2F1w + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-kk: ecEJOo0zSqWQEqHUmlQZIg + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ro: GaGrD0SkQE6i9nR6fq60_A + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ru: asIjnZ1iQTKalpGPyAXs1g + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-tr: YuK8JM1VQaWoBXu7tc4lyg + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uk: BDFdvSynQ-qU7Zf7km4U-g + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uz: TKY6UahiQ2uCZh2N4u26Tw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-en-US: T-BriiiASJ6BrI3xx1hRMA + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-zh-CN: Zlz2kqGqTBOdL2gZuCxQSA + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: ElmjXAkbRUu0jG4wahBY3w + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-others-zh-CN: DfGtPDmYTFCg41Icb-WBvQ + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-qihoo-zh-CN: Bp1rATS-RDmRfiOB3sbUSw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-tencent-zh-CN: BUv-O0euQ_qJibj5VEs5aw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-xbsafe-zh-CN: OGCEeOcYRRW5b1RSAlCU0A + release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-en-US: TPmGx8pDTyqG_QNYMA4Q7Q + release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-ja: cU3WOS5ZR2yDzrxWEAs8wg + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-de: Sf_OyaHTSlCieWVMh6BENQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-GB: AA6S25k3RK2wBlWSimWzXQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-US: QRA2Nq1RTPK0ewEAhBfNHw + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-es-ES: GwQ1y8maTDOKLvv7E6-uTQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-fr: Atjbqm-_S1iPBrC5JOkY9g + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-it: ZxScpMhrS7WoSeMKV7U1SA + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-us-en-US: IqgYuAK3QwaVJnCEyFb2_w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-ca: WIFDnrI4TjaVsDiZ99eGxg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-cy: XutCmPYMROyICbRO1k9wuw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-de: POT5qBnVQUumpTbbuNLDkQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-GB: bv7RZWfbRa-sxTi0WPbLRQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-US: NLgxCzDzQjK4Xoeu8ufj1A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-es-ES: UYAis7cpQbG7KIN-y2tIUQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-fr: OcBODF-rTO62HX8LSh42qA + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-gd: TMEsuX_ITfGy08FuQeBc4w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-it: FK7omnQRSu6lfNAGQTO52w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-ca: BJTfRkOBQp6jbcmRQ36Pbw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-cy: MpKfO80VQnyDVNp1925K7A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-de: A9dkhnF4R3Gu4ZRDGIQONg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-GB: L1u6lza7RgaqxXR7QJF_Dw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-US: NU73fJewTSq1RC4wBLaF5g + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-es-ES: AmczSEKXQ6SXI6Os9m17Eg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-fr: AwPb-sfiS2WqukuSsK4oWw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-gd: Gb4puHwvTRC2X8qip7hZ2A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-it: Zcqg_F8MTHmfxYmR-IuO3w + release-partner-repack-repackage-signing-win64-nightly-seznam-seznam-cs: cvunSOESTI2-E5xCvHULug + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-de: d5eswKoVSlyOPL-5kcOjkA + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-en-US: bON5seb1QoqcMpahjlvgrQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-es-ES: V4td-KcUTRGaXC8rCptrXw + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-fr: VGw88G-tSmuloZ15v0qJQA + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-it: UgcMTyIXQai50_gg_5JZtg + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pl: YfIbJC0tSIK7PANsxnowwQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pt-BR: EssGNIg0R9OZHsv_6KY-KQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-ru: ANVajloGSgaNwnGetj_XWQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: AzIWuS3eTFu-SuFmjjpIGQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: Ei5QVo_5Rwait1zbI2U2Aw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: EqWayKh-TUiTa755QBtdNg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: GcCuGpf5RBKpCMWebENQ4A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: I5Sk9dhkT2msmzPPR-IBrw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: V8Um8YVXQOGb5YbPU89q0Q + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: OipQL8PzQrmQUCHuq25b2A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: DescTqhjQoKAinuhQwC9pA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: fsVg3eL0Ro-3duXk33EwCg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: eLTcE1WORBCyyOWxA3cebg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: JCbOfq4MRLigF_ACninNGg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: dez2wjmRSJaefABIlFfcHw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: XPyLptUvSk2OXIPjGWHVGA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: fia_iid4THGA3_OhQ1zSQg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: eP-HIq7oTOSZHCDfWXSU9Q + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: I2EbbOKuQ1S-ZzTISjqBMA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: NaTz_8n6TFeFU5pFnovIhg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: YxcAjl0YRQ6EjF7Vx3fFDg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: BYNf-L9JQIy35KRoTMy1UQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: H-dAtdHIS1OTe8K0dqQPuw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: PtQjUY9oSruhuIGzfwnd-A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: T2drYtdCTfOqmDmFcM7Csw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: TqboOf8NRlaCiYs2MJfPjQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Bvt1zxneTga3bfoQytEoRA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-de: TcJCsRupTQSXUfA3FfVBEw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: HLzAn_lQTOmUg0tDfAw5hw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: BvAIuEpgSH-l-X7CYcQn2g + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-fr: HFCChlNgTiaTHv2ude_JQw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-de: ZvZBXmehSTmX6m9ycuIfHg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: IDZNHNm9TZmYutFJG4r5fw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: U589qFzST1G10r6Vd5q9Ag + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-fr: LYczc13FSuiCE9q6VCpL5g + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: Cb9BMMDMTdqU2FnXZ2yYsg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: fVP76dbdQ72gHotKQoAGiw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Tp9kItHlR2m0B4Y4My4cuA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: NgpflU6FRcOGAx8GY1AFhQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: BdhQmUpdRT6-ngpuLqwxDg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: PsvOEBXLRnKwmJdM5HQX1w + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: QytfsfVMRJq9-Ejqydp4JQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: FUznCc-eTaqxLaJp0dKd1g + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-de: NdMPVp5nS6eb31T9cgNo4Q + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-en-US: RAbvalRiTTG1qBxfwaUnxA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-de: YE-Vh1YBRLa7olZGMWCfMw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-en-US: ItZwssg6RIukum_Ckm6aHg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-de: PwDhHH_fSbmzt-Xv8nQr9w + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-en-US: BdiRIZSjSIK3wARQWpbFyw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-de: ZtSd8DnDQLaP3ZBqBVuBQg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-en-US: FW06s7oTTweKwn6yb0KtBA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-de: EVNEV7irTPOyl7KG3WPNJw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-en-US: YaNF-QZQQRKvuP6q6L7tbQ + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-de: IT0_W8-2SFahpz8rJw6yKg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-en-US: Vfe3mEK6RvurBIV6MaKjhQ + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-de: S_RuUl7MSfCDx_Rv24wpFg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-en-US: Joqwzyh2RxaPP0sxNJSlpA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-de: aAPZ2TowRdida11DeJiF5w + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-en-US: Qoa3634oSJ6uP5BdboIT-Q + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-drp-ru: AQUBCSt7Q9C0rHzb0zcuyA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-planB-ru: H8EuYAsMR_m5_OajAY_SiA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-portals-ru: OxgKd2J9QVqO9kWQE5gmnA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-mz-ru: URa7OQLHSO2JGfREIvuOMA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-ru: SnnSMoRcRMCiZk6pgwjYlQ + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-gezginler-tr: OrYjkkShTt2cgA2fq2qq9A + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tamindir-tr: CbTcFG8lRK-qBmpT-xrvTw + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tr: akJTQt4FRYiFR2Fs1leqMg + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-ru: P5r2WJeZTg2WD_EE3vbgDg + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-uk: DDuV6nmmTi2ITKU_nVZUDQ + release-partner-repack-repackage-win32-nightly-acer-acer-002-en-US: N0GVZTR6TY2sl9kudwl9sA + release-partner-repack-repackage-win32-nightly-aol-aol-en-US: LHIBrCs1RZaejPhf4pWVsQ + release-partner-repack-repackage-win32-nightly-aol-aol_de-de: W_09Pw_zSX6At5kbbR2cxw + release-partner-repack-repackage-win32-nightly-aol-aol_desktop-en-US: aEo3QqPcT7uRKDaoQGoG1w + release-partner-repack-repackage-win32-nightly-aol-aol_huffington-en-US: af8P-z0pRPeH2TWEpufubQ + release-partner-repack-repackage-win32-nightly-aol-aol_uk-en-GB: elwztSZQTa2uLLV_X5sWHw + release-partner-repack-repackage-win32-nightly-chipde-chipde-de: bagR4ORJQbOkJhad6G0qHA + release-partner-repack-repackage-win32-nightly-chipde-cliqz-003-de: HcyN27CTS6-301q938u9hg + release-partner-repack-repackage-win32-nightly-chipde-cliqz-004-de: e1zObD83RgWUw2Yh9WoOwg + release-partner-repack-repackage-win32-nightly-chipde-cliqz-005-de: YrvEZABvQCSIFCNFgwe7vQ + release-partner-repack-repackage-win32-nightly-chipde-cliqz-006-de: Pz-EsbFCSEKHF3NDF4hTHA + release-partner-repack-repackage-win32-nightly-chipde-cliqz-007-de: HWIid5X1QTqJpQ2E0HyQ-w + release-partner-repack-repackage-win32-nightly-chipde-cliqz-008-de: FDtNvgvPTUaQXrD487c__Q + release-partner-repack-repackage-win32-nightly-chipde-cliqz-control-de: M1aTr9RbQpeaGvDkDPmzGQ + release-partner-repack-repackage-win32-nightly-chipde-cliqz-de: L93MikcASniVKMDZqMos_g + release-partner-repack-repackage-win32-nightly-firefox-firefox-election-edition-en-US: Htoj2MtRS8ekABG1AZKlJw + release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake134-en-US: b5l2KsPxQIeH12BbuAaQBw + release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake137-en-US: WxZP_5diRQ6D_Ot26h0cAg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-de: PO9iM_-XS06M6tVpJdICeg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-GB: W1Sr_dU4QGOyK6cJ_--JNA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-US: ElB-i78TSuWJOdngaHaVNw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-es-ES: cXEe9quWQXux4wLX8AmVuQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-fr: DO5A7FBtQSeDruznxbTNXA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-id: c3y8MIi-Q5eICY-x5b6fug + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-it: N5EMzG5eSF6Rbm1UXoz82A + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ja: bkG_Vta-QpSuYFoTkSHxxA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ko: R9GsRHRMSg2whmrPaXJHlA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pa-IN: VMFJKplFT9eLK0YDgNXLxQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pl: C3eaVmhJQfK4m3zqWqGKqg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pt-BR: VMzz4cBKSHCF9XbVV6hTUw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ru: csnxPNa3Qju-xj-n_T8qig + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-tr: H3lGoG24T1W6DKdK2lbjBg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-de: LCEEaisGR5qM-tMTfm1g1w + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-GB: dzrFgUe6Ssmt5yOrvpQkcA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-US: MR-6oeS6Sjq8n9Nxwi1SZA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-es-ES: HkUp_-I_Tb-oNUf5xtGDlw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-fr: C9wfwd99QnaSlgvKeW5qgw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-id: EGIS-lyySkqPrnzxIfVYvQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-it: DYnNIKkNTIqqUPqGAnfojw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ja: DHz_Z7YAQsSpuIRmFQLjEA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ko: BUpQuthfQxuX6ZYEwG66-Q + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pa-IN: a6Df7ylcRAyEVTbOX_d2qw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pl: ed_M7HPlQBqHktyVBFEuPA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pt-BR: aGS6E7JlQwmsvZvUJWLnlg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ru: SW1jZHeVRO6q03Zrj82SHQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-tr: dLJ1_EuaRQmOH5ub7cpNVA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: cMHvYCIKSu6j1TQKNTSCZg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-en-US: FhvKIFoaRqunAwSSvJQTww + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-en-US: EE_iFeWgRdCplLFOMptAzQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-tr: blbOdFB5SC6OTkDG0G_F9Q + release-partner-repack-repackage-win32-nightly-mailru-mailru-ru: ek036v_QS8i15JL27MWihQ + release-partner-repack-repackage-win32-nightly-mailru-okru-az: QV24DA1bQ3KP60kT9FKzVA + release-partner-repack-repackage-win32-nightly-mailru-okru-en-US: PV0wphO-QsmESNOu0DgJDA + release-partner-repack-repackage-win32-nightly-mailru-okru-hy-AM: ZXSkk351S2ORh5TbzSRsbQ + release-partner-repack-repackage-win32-nightly-mailru-okru-kk: Ff32yh7LT4ywS2pu9enEpw + release-partner-repack-repackage-win32-nightly-mailru-okru-ro: W_ODP11pSxi9Lt7Zgy4_XQ + release-partner-repack-repackage-win32-nightly-mailru-okru-ru: RZmCQbHaRcaZbq34DgKYnw + release-partner-repack-repackage-win32-nightly-mailru-okru-tr: W6oTNZb-Q1al33UurO-GtQ + release-partner-repack-repackage-win32-nightly-mailru-okru-uk: IbVzJ-pcQUiK3zmwd-DCUA + release-partner-repack-repackage-win32-nightly-mailru-okru-uz: Zo1PMxVVT5a5D6fQZLpN7Q + release-partner-repack-repackage-win32-nightly-mozillaonline-baidu-zh-CN: HMRdur5vRpCGrljNMTMBzw + release-partner-repack-repackage-win32-nightly-mozillaonline-kingsoft-zh-CN: Vtf_vmu3QNCQBisD42UgvA + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-en-US: bqRRvSylRyC5oaN6PcqrEQ + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-zh-CN: f6YwTiCDT3un2GZFGtdO1Q + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: ffdlLBKWSaeEqz8LIh6ZkA + release-partner-repack-repackage-win32-nightly-mozillaonline-others-zh-CN: WhBv6u0_SmeZMwQ7QiHAbw + release-partner-repack-repackage-win32-nightly-mozillaonline-qihoo-zh-CN: fEf4PQ67Taud6NbZ3KPwIg + release-partner-repack-repackage-win32-nightly-mozillaonline-tencent-zh-CN: KAf_sFMdT0iZ1J67sAxs0g + release-partner-repack-repackage-win32-nightly-mozillaonline-xbsafe-zh-CN: VdUdqrcxQpGVk4Jb-vCCsA + release-partner-repack-repackage-win32-nightly-mozillaonline-zol-zh-CN: Nm0NmFBRR9erCRHorejJlw + release-partner-repack-repackage-win32-nightly-ntt-ntt-en-US: NXnLnupoRe2XSBhaZsfRrA + release-partner-repack-repackage-win32-nightly-ntt-ntt-ja: EkgYDDVtR3exZGsOve4NRA + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-de: W51uRvqsQd6YGYhxbaXRdw + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-GB: GjVz3nMMTlWf9F4cEdoavA + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-US: Dve-tjtpTA2782j71qRewg + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-es-ES: FqDw0hTSRJSNWedVoIPICw + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-fr: VXOOm6ieSeu4f6bTlzdAow + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-it: cJeROY_ATny4a52MKyNl2A + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-us-en-US: VlUa4hoIRHWFrhM0ZpYULA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-ca: N1x7XFhWT0yweJ627c5xSA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-cy: fz3KQOY_TEO_VKBx4rabiQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-de: YiWrxFuKR1OyrvKC9rcNEg + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-GB: Hzly1TAZS4qoe1RhomMSRA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-US: IA1xk1SNSwiKum2tQSib2A + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-es-ES: eNQ2DeizRPOcpAMuEXYzuQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-fr: P144Ez8JTXGqEPgeVBIvnQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-gd: CGDo-f4FTriA8vYTTblgJA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-it: S1CTzv8bS-OEbTM41ZQNTw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-ca: N9TLDVeuROmXNSlfbpLjtQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-cy: cqB_oVSfR6a6XZa-hP5vjA + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-de: YQtC0BxqSi28XJBsys8pDw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-GB: cr0Z7P5gS4KsQj_YfbZjkQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-US: ckjpM0pJS-e314EyR6xFxw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-es-ES: VQvEJ7K-QDGf_Jd9hPus5A + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-fr: fT0EZyjgSICV2EO8ocAw1w + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-gd: SICVC4-zS9uKk-tOPbRyIA + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-it: ZRZgxxNwShm2vLjRKcSFSw + release-partner-repack-repackage-win32-nightly-seznam-seznam-cs: FHmui_2QRryLvwwjv8qzSw + release-partner-repack-repackage-win32-nightly-softonic-softonic-de: SFTRhyhaTBimqk9BMcsA_g + release-partner-repack-repackage-win32-nightly-softonic-softonic-en-US: X8VrHZiQTgyW-C_z20uaXw + release-partner-repack-repackage-win32-nightly-softonic-softonic-es-ES: evILFpXASROi2D9uBItLig + release-partner-repack-repackage-win32-nightly-softonic-softonic-fr: X5EWtR9HQv65EZbMV9_1JQ + release-partner-repack-repackage-win32-nightly-softonic-softonic-it: cb24zrugSvGAHmNcc6wUQw + release-partner-repack-repackage-win32-nightly-softonic-softonic-pl: FCdlryzFQWq5bGV08_9tGQ + release-partner-repack-repackage-win32-nightly-softonic-softonic-pt-BR: AdTGlirBQFmc2gNiHTYIpg + release-partner-repack-repackage-win32-nightly-softonic-softonic-ru: IuuQv-yURfecijOPRtGyVg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: RVP3ldcTQRGjGm7KEmpukw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: AQ-AtChBSymQn_z9qzMxlA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: LnIRwibkR0yaVdyXamB0mA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: C9F5ek9uQFWQxxIhxlq7Gw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: ekO5I9v9SseQqN5yB835kQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: FvVPwTdpRIiZuPfFtDjB4g + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: eIfnQ1cUSeG1DXZUukDIug + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: MG1uXoxaTkm2NjItt63Eyg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: MdVJ0TetRqOYhNrCVykktA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: boKl2qf8SqShQQivsjhExg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: Jg65r60AQOOVc70MvlmISQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: V-R0681nQeKwbmlhgioNeA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: dlM-XSgYTO27Xs8rVkc2sQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: SmMP5ZSXRLqjro1h19xzYw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: fXBjKt4xR-273oduIjInZA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: BstZlJRCSaiBwGe-tzpkmw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: JxXT6G1xRr254_yTp3cXHw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: bDcM4YpPSoyjDJcgrC-9qA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: Tv2OE5d1RQKsh68JjsMgRg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: EjRC3_obT9yk1_J2BYkHLQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: KH5GPV0nRUuhoeIU-9h-QA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: XkwOpKMVQWS8BEe080YBxQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: Ov2pGHUlQha2qPtPgA6Uiw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Cy72BXzqRIeRQQOboJ5JbQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-de: SNxobrgxSLWjkfxUzqq16A + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: eHP0wj1YTfyHxi9EHA0-qQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: RADlGUuvQiu5RdGNJ1hmnA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-fr: XPTDsHThRzWfqTiTUcGTpw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-de: QW6D9x77R46xw6BmOt_q3Q + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: d9VmmRj5Qmeq0pWtrcK7Qg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: KanT4EmiSxWt_PXFFnHhug + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-fr: XKwNtpJQTNi3WY0_mgbgYA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: RIq99qhyR1OUr6oedsNyzw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: exqP39TUSySyY6XlXQFI3Q + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: ZCKJGDBWQGO6V1ewQWLdzA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: YGBI6vQtScqKDxAGnQzZaw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: Iwj7DUd2SLeObijED9Kalg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: VCI4RWCoQIOXGLdkgbPFBA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: B1BIBSxcRp2JwrWwKF6oXg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: Y0lf2aFjQHWzbfqYxt-3tg + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-MX-es-MX: BbKSHTrNR9a-i_xefcb90w + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-US-en-US: Rjoz5KpSTeCvSKmjKLM8fg + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-b2b-JP-en-US: E9Do2gUZQuq1hppHQc_KtQ + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-B-US-en-US: A65WJPa-Qs6P1s36Z2Qhtw + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-MX-es-MX: HHOddPojRyGtgqoQzx8p1A + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-US-en-US: LJd2kFtaRey2tQtKsCb-5g + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-de: Mye60mWJT36h-kN7mePI0w + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-en-US: Atew1fCCSX2Ze4-VFoqjFw + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-de: Du6Qsp04Tgi4XHJ2-V8A6Q + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-en-US: TRluSh6JRxGd0bba0QALig + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-de: PpHKU2GrQ0ORrYEO4Tx3Sw + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-en-US: G2hdpH2FTlu691NgDOIWSg + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-de: Ov2G662SRUW2bLYWrdKdow + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-en-US: WZcUWdH1SRGV5-5WllU-nw + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-de: PKQK0Qp3RoWi_kfXsJ7MjQ + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-en-US: D39amj5YSbepD2Mef-HQSg + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-de: VHDevsOySP6OyVY4o0pvvg + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-en-US: S1nhtn1tSVOWz0KDQPckmg + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-de: Q0-q5B7RRRKcv5mPk4YSTQ + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-en-US: LY6UX4uhQvm2GG13sIYL_A + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-de: baGi8FY-RdKn-LMnwM5M-Q + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-en-US: bA9hzUjuTSKI5rjB7I6J5w + release-partner-repack-repackage-win32-nightly-wildtangent-wildtangent-en-US: e5jXIU7USrq8FBhhaw6rXQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-drp-ru: exfRz_NpT3mRbWAIbofKCQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-planB-ru: LCMw7VijTW62FcvmkT_7QQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-portals-ru: AmJVzwmmQS-kOH57cefg7w + release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-mz-ru: MwgzxXNzQh-Hh6A3j5p7Tw + release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-ru: Y3JA0lAVSDiY8V_PWSI2wg + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-gezginler-tr: SNCgVmDQR3G6vdVeTYmKuQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tamindir-tr: G3mycDCQTUKzHJqqQHaZ7w + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tr: TBhZKnmATcCvKoUb-sj6bQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-ru: U-qi811dSfGYxKrk3Ebvow + release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-uk: Cfz2DZRRSUi-axyLqvEsRw + release-partner-repack-repackage-win64-nightly-acer-acer-002-en-US: YeSlBZB3SGmhkexMgHMPTQ + release-partner-repack-repackage-win64-nightly-aol-aol-en-US: IEuKI_OjT8GJoDuRfheE9Q + release-partner-repack-repackage-win64-nightly-aol-aol_de-de: ft9NUZ9tTHiAIW1S8t-RlA + release-partner-repack-repackage-win64-nightly-aol-aol_desktop-en-US: MeZvAhf2T9GRVeEuH3DyPQ + release-partner-repack-repackage-win64-nightly-aol-aol_huffington-en-US: Y8ZGBeugTdSCJujhFZPU0Q + release-partner-repack-repackage-win64-nightly-aol-aol_uk-en-GB: Nv_W78CGQnKah_8uY97_qw + release-partner-repack-repackage-win64-nightly-chipde-chipde-de: aOHqPG3YRZCtmyhPoPnAjQ + release-partner-repack-repackage-win64-nightly-chipde-cliqz-003-de: JsJzPtl6QRO8hap9Bnm0vQ + release-partner-repack-repackage-win64-nightly-chipde-cliqz-004-de: WylMm-GbRDKndFFC3qzvlg + release-partner-repack-repackage-win64-nightly-chipde-cliqz-005-de: Bgj-xcjDSYqLUT-ckRWwWg + release-partner-repack-repackage-win64-nightly-chipde-cliqz-006-de: P9m87OM-TJC-mPd03eGE6Q + release-partner-repack-repackage-win64-nightly-chipde-cliqz-007-de: JUANGkdzRLmXBrDo1k376Q + release-partner-repack-repackage-win64-nightly-chipde-cliqz-008-de: EpovcoD8QAWR4kp36zU5fA + release-partner-repack-repackage-win64-nightly-chipde-cliqz-control-de: M1dJljdOS5egZFBzDMEIEw + release-partner-repack-repackage-win64-nightly-chipde-cliqz-de: QQY1nBPYT9GuIaOVSwFj5w + release-partner-repack-repackage-win64-nightly-firefox-firefox-election-edition-en-US: EFW-a_eZTpi3CXvJ2QeMAQ + release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake134-en-US: TDA-ohu_SdCwyYDcro7OyQ + release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake137-en-US: XnuUiKAbR9qBISbdPgUUEA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-de: QuOUcvv5QqKgQRw06NDJFg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-GB: fTH5hDf2SGqcotWTp5tfbg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-US: SmFZw7NvR122j02MBy--2A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-es-ES: J4ugsatbQzeASM3fEXPbQA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-fr: fEW_SnPVSPmXlPaKMG-b_g + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-id: DqaOEmYJQZyvPrPg36zTfQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-it: LqEixu4QR1W5RlbskO1BWA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ja: Xu6QlLbyTPuo0GMKerIfUg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ko: H8A0qzCjThCYC5FFVhtt1Q + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Z_KAK0GGSfu_r-etz5Z9xg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pl: LuNmOwwSQIiSLBlEQeKtzQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pt-BR: ALN_GTZ6T5iFkcq8mZJz5Q + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ru: KPWqM5KfRvekOUQhiRyrTw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-tr: UvGvdmSrTNWJpIqeAYlgIg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-de: FprQNQXKRHGVRtZibMpkug + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-GB: cTNIcwgQSz6fCY1seslhUw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-US: c5xqN2mWRjujUfQQFtl6FA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-es-ES: Apj3zPtTRD6HRAy-NTF54g + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-fr: J4d14z3tSa2DRQUjqOqBMw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-id: DcTfYMKyRGOiYpmSBVFFgA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-it: DqkTId8VSmyOBtdS2-Hnlw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ja: BWIxO_MvRqulimYMFl87RQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ko: F-s9DJQKSSWd-EckMoMNQQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pa-IN: GAT5OnIGRkWMWNvpB7PsgA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pl: XRM14nw_S0OiKbNF12KNTw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pt-BR: WElGrtVHTVuAo3oOWLUD5A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ru: Y1l29LARSguqjrcyrfZ_Hw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-tr: QqwTkQwkRkeZG3qQZXsy4A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: e4lCFfFeTDe7osZWxJUErw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-en-US: erjqvW0KR6q6868D-akSaA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-en-US: fsZ01vMlTRuPcovKGSG6Hw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-tr: QCeMVexaSASfyHCzh_aTCA + release-partner-repack-repackage-win64-nightly-mailru-mailru-ru: MmcxWJP1QUWc_p9AQXqp5g + release-partner-repack-repackage-win64-nightly-mailru-okru-az: MYRCjHdHQVuo1CoSXvS6kA + release-partner-repack-repackage-win64-nightly-mailru-okru-en-US: GuZHICnORQKQAoXlYC1cuQ + release-partner-repack-repackage-win64-nightly-mailru-okru-hy-AM: FxJkCLhXQo6wYOqamVJdoA + release-partner-repack-repackage-win64-nightly-mailru-okru-kk: PpOcvRySRnqUXFQkRhVqPA + release-partner-repack-repackage-win64-nightly-mailru-okru-ro: Pg2mwD5CTxKSXV5BHJnFGg + release-partner-repack-repackage-win64-nightly-mailru-okru-ru: Q9Z-31u0S_i-VCKHd9U7Zw + release-partner-repack-repackage-win64-nightly-mailru-okru-tr: O6r3x0MYQ5ydkPBHW-uncw + release-partner-repack-repackage-win64-nightly-mailru-okru-uk: EYtppbXXRE2aJMoxDa5phg + release-partner-repack-repackage-win64-nightly-mailru-okru-uz: Fe5Z5g2cTBa__YEZlvkEKQ + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-en-US: bVJI3h0QT8KNgHrLFoVJJQ + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-zh-CN: bt_q-tkkQxusnHsV75ZWYA + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: Ugo6usVtSHKP4YIHOTYIpA + release-partner-repack-repackage-win64-nightly-mozillaonline-others-zh-CN: aRjZPvZpR1y9oC6jA04law + release-partner-repack-repackage-win64-nightly-mozillaonline-qihoo-zh-CN: NPRl45ohStW7Lm8oGcxDGQ + release-partner-repack-repackage-win64-nightly-mozillaonline-tencent-zh-CN: fE_-b4dRSVONMG9gLIl7AQ + release-partner-repack-repackage-win64-nightly-mozillaonline-xbsafe-zh-CN: J48UStasRLSXNrcJNMQrPA + release-partner-repack-repackage-win64-nightly-ntt-ntt-en-US: cO7csiSPSIqcTtt8Ioozlg + release-partner-repack-repackage-win64-nightly-ntt-ntt-ja: VkXiyXEXQoOtcw6MK8Ic7w + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-de: ACNpEeYFQXyw34ued0WmUA + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-GB: MPtUVZ-kRSmc2ViWnyRi0w + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-US: Kh1n0YTqQ6m6s8-b36z7-Q + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-es-ES: CzkvGintQ1uiknxc_kWCtQ + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-fr: VLFknhL3Rc6mpPdSyxC_uQ + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-it: NcqBtxSCQN6Yxy3IS1uOzw + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-us-en-US: EY3IQucUSZqHuf0_K_gRbw + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-ca: XNHRVjyLR5itm1E8BmJkIA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-cy: Z37kngz0RP2y5_i6s1a-rA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-de: VEFQYZvNSu6f9004pjwwLQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-GB: DuB-14ebRGqMin3RNcVIXA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-US: fHpc5fikQpGFP3b4AimdKQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-es-ES: E4YjKxSPR_--6zvSmO2ueA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-fr: UgREzlOxQi2phtbUsJQBDg + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-gd: Oo0lnutyTvOLDW8xJK75vg + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-it: Cso66dw0QjupmkGtX4ZHTw + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-ca: BeaAQwPTStWHHdlczJ0roA + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-cy: ZQHceiD3R36cMhi9Hx7L7g + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-de: U0EfA2W_SfKbmSSjASJeWg + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-GB: D8Oe0KMYRoaxkgoqmJ2EFQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-US: ej5MlnWjSbS2NVkUi8Op_A + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-es-ES: e37uE19CQESgyPvXyifWWw + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-fr: RNoW9lGjTUKNDC8GWJnypQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-gd: YjTslyxTToWZc1xaIH0rKQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-it: XAMwgeJRRhGhhuEuGq6nmA + release-partner-repack-repackage-win64-nightly-seznam-seznam-cs: Qa2kHaR7S4OLOSdmxJxPSg + release-partner-repack-repackage-win64-nightly-softonic-softonic-de: T_gG-ufiRB-gmsJNLUcZwA + release-partner-repack-repackage-win64-nightly-softonic-softonic-en-US: O_DX6Y8RRbOiAgM6AfA5VQ + release-partner-repack-repackage-win64-nightly-softonic-softonic-es-ES: EuENXRUmR9CbFU-y7vcKFA + release-partner-repack-repackage-win64-nightly-softonic-softonic-fr: Iex0lQc_SJiWXPp__tt1Tw + release-partner-repack-repackage-win64-nightly-softonic-softonic-it: EUc-gZybRPGCDhmB2qAFzg + release-partner-repack-repackage-win64-nightly-softonic-softonic-pl: VZUVWOzPTjOuBFIoyWM_Lw + release-partner-repack-repackage-win64-nightly-softonic-softonic-pt-BR: S2lup30eRH6OqDrRk_iweg + release-partner-repack-repackage-win64-nightly-softonic-softonic-ru: b6zroKF2Rq6sM113Dd7_BQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: CdnzGiG6QhiQi7o0iVp-Hg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: J9SdKikYTr6-VoTnMLic_A + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Es1hCiyNTvKTtixDJx48iw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: cJg9LR-RQZ-rm6278IgGhg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: QLbykZ3NQu-hc4yxosxepA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: fOQ6Mdx3TeWzqLXXC1sicA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: LdEkTGacRs2ZzO1Xez7xtg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: a0JTJaKWR1SYqJPkxulOUQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: JqMIDRWtSw-j7TvEV02a5g + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: bUKWE87QTou7mec2ohn5EA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: BvYadYwSSQOicAOOKfYsdA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: IbyZkig7QCKcDK85Sk4vfA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: GTH8RvipRx6T_P5SIaC-7Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: TzLC3c7qTwOKRR2Bv3yiCA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: S-3TDDmqTNyrgJxmjQGqZg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: E-gK6QQxSY6bOb8fsrEy8Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: GCYpGh3_RsuDf3sm3cftkQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: Frxf6zUlS5CN6AxHB1wT-g + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: brtMY60TQVW9Gm9BZ5zaVQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: Fg_PB8BHRHuPUR3efdrBwA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: e-MAIzFDQ9WeDxwYeuHH7Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: CzFBWxoiQt67ne6l1DWT7w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: deM7K7vMRiigx_yRIIqXiw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: X9IfgCo_RfWI1hGoDtVeFA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-de: V2rYgfVFQAiOO5ZAcMSNjQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: NZ44B18mRt2iLV8XJMXp6w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: eIt1et-tQfC2XM0UUHpJ0A + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-fr: b7mujLDoRD-xbVvpoeyaKw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-de: IbHOwRe3Tdmzt5xtLdqUgw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: EbX4WQHRTdWLigqlN5hhWw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: GRuko-5OSm-zpEgzsIFDlg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-fr: U9Jmus0tShWAXHPj6CJmLQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: dqN9lXS5SrSG-dfC4HpwtA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: aTwbVl-VS4mcJwBUmYSMWg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Njw6Pv_JRGKUV6jY7OJIdw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: fWVce1_8TFW-Qj41F4KzsA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: V8WPCZGKQiqzuxXASaEORQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: ewsuiRh9TOOlst0jZUQTsA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: ec7BVNQhQOKe_VFpHbeT7w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: cqQJ4Bn6SiuNy0P7GcDvQg + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-de: Trb3Gl7JQWeS9nD4sWH7wg + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-en-US: S7A_nBH7QDmdwLN1yic0JA + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-de: cB_7dRHpSdCutMk2Dao6Sw + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-en-US: ZDFNUVqJSemGRV-GcPfl7A + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-de: ZfJKnmvlQVy3RhZNGaizQg + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-en-US: ENvE9b0bTmmpXZb3kXvK3A + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-de: NFfPKFAmQo27c_97Wi0pbQ + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-en-US: eCoOv5C1QAutxfD96KBd-g + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-de: CHLSWVCZScSsz93Z_YEylg + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-en-US: TR3jRWVQTeK1BVnIZ7sxcg + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-de: ExFGqNLcTs2fPlS-tfnLbA + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-en-US: Kxq5nF58QjWXP11TYzGtHQ + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-de: atKV-0H7TpyTxYlbjmyXPA + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-en-US: dX_6iMSWQlSaPTOuMHmqlg + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-de: WslGWYz1ThqGPw_RzLMW-Q + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-en-US: VwUogMdfSW-QdTufFIPEcw + release-partner-repack-repackage-win64-nightly-yandex-yandex-drp-ru: alpNVhKITcO_LUS1nF6ezA + release-partner-repack-repackage-win64-nightly-yandex-yandex-planB-ru: BL6PRm3JRTaGRwEhBF1MsQ + release-partner-repack-repackage-win64-nightly-yandex-yandex-portals-ru: XZJStNe7TV2bQiiFBgJ-4g + release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-mz-ru: W0vqvjPJR0C-tHGQOH_fhg + release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-ru: Fx26yAH0Q_a4oysqmGtSnw + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-gezginler-tr: fafg2Ah7TfCf4lRR3jNIcA + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tamindir-tr: Ghjy1OcfSeKxqq1T46DPVQ + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tr: LZ5ICIzWT0i43lzcAO3gkw + release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-ru: VA3zk1qkQBGJ-SoVy_aNjg + release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-uk: LzWbkscgTXiyDMuk5pHQaQ + release-partner-repack-signing-macosx64-nightly-aol-aol-en-US: bT8yXA8OTbG0ljyaXJvzWA + release-partner-repack-signing-macosx64-nightly-aol-aol_de-de: HjlnJkDUSOq-JyIwwSgWcg + release-partner-repack-signing-macosx64-nightly-aol-aol_desktop-en-US: YuSYUb0SRqW2lItNKbcoEg + release-partner-repack-signing-macosx64-nightly-aol-aol_huffington-en-US: RmDzk1gcQDGoDcoNrwDQnA + release-partner-repack-signing-macosx64-nightly-aol-aol_uk-en-GB: KTb0R-feQ5-sF2PVLY7h1Q + release-partner-repack-signing-macosx64-nightly-chipde-chipde-de: Tti16V0zTUurNgeEVyR0sA + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-003-de: FZbY3P_PRKyS_0MSTEa1xw + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-004-de: Nlpi1gz3TjuzokVemJ4zYg + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-005-de: ITA6vOTbTqCwwQCK7Wwoag + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-006-de: Hyc5zWuKQQOp7NCJPxeEjg + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-007-de: cAQOg-MsQoyZHE6fWFColQ + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-008-de: U_5RarFoQD6b_Ny56nuPug + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-control-de: X-eLIXjMSROES-XC0fbc0Q + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-de: PXVdBSTWQ--nPyvR72WcnQ + release-partner-repack-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: PJahkc4URvmMSIc0wBHOWg + release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: AKZC6zJ6Sf23-ajcK7tteg + release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: WgW0LxBgRB64COq5zaLoZA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: OGL6miIyQl6ejstRyYbZYg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: DeO_QlylRjWYOySyLsgP0g + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: NL_9kqjCT-SV2tDKSQbMoA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: V5MFtJUYQ2CtGQwWEhzpoA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: De5zAXkHRdy6VPIEIHJLkg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: CYWHPXFaSeGjzCTAujiacw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: DizQdvWOQFe7NB-p5IGNOQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: dFDNpvsOTMKNF7her5lcbQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: JhggfF7uSvmfsoqqqWsUVQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: QJRcOuGfQemj80a5shQ9hQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TcadWvfuSTGEhcBTUJHrGQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: eRhVPrZ_TBWJ7JS5rY7M0w + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: eQy_T52XTLmmSvrHvGsePA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-de: ejz1aMgWQKCRTU89D0Yzog + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: CMUbtc3ATXibTRY3JtR_IA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-US: GypnOXlRT56pYSrutbNyyA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: I4FK4yv1QGuzuaIuQ5fCfg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-fr: O3g8gp6vS26jiV518PcqLw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-id: N1tidPfgRWCvDTJITK67SQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-it: eVM1OXfmSiSvblqX3u5lMA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ko: a5GiRYLvT0uQlQ8sL-YZWw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: I7V1kEgqSlq2Mr-fq3Bvlw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pl: E4nl5id6T5OU9ZrOwU7rLw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: P8ZRf-QKSAiaGgxuv_uJbQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ru: dtt-NOTDTR6aZVFZ7UxwAw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-tr: VefrozaiTLm6xZchLIgMiw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: LOf_HHjHTh6jfbY1scsRMw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: B79WTRwSSOC7G_o56IWyOg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: QXL4HP1SSKChDf-eNaha0g + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: HLkCgCv9RcqYyqANWMM77A + release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-en-US: UWvqY5OTROWGaAlFhaks5w + release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: Niif9xtzRtSha7kKio--Hw + release-partner-repack-signing-macosx64-nightly-ntt-ntt-en-US: BeeEJr_pQ02_p6W3A2gIVg + release-partner-repack-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: UiIX3-wSTie6PjxUsGqvcw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-ca: cGOecsznTcuFlrFfi3jTiA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-cy: aE1odJDOSgyrKzArV9uo9Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-de: Vm894j09TEqN0wXQC_Tgaw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-GB: Faq16OtNT0CcPcWrKjwiZQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-US: TOxEAdKCQKq4WQUonidaLQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-es-ES: MTU06JWKQrif2Z-TZYp_IA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-fr: LF-tWKw8RwCrUJkJ-z3W0Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-gd: VQH4gnIARjy-ZOFZYnGBCQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-it: R44v2MZ0S2KEEehAhk8t0A + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-ca: Xed4qqZ_TTC8G1KYJI5gOg + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-cy: YrGQ5HDyQpuiCtj8XdhMRw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-de: X5-Pt6F2RuWrDji-QAOePA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-GB: cI1Yn1yJQgehetWlZ00h7g + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-US: NTdI9rQSTSK6b9qZmXsg-Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-es-ES: HHywXvcxRPSMgDDv_Tcpow + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-fr: d7z68L2aQNG8D3fkvnyg-g + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-gd: OAGT7eiCSr6Dn305U-NtZQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-it: dO-mH5mnQ1ynZhcYsDO7Dg + release-partner-repack-signing-macosx64-nightly-seznam-seznam-cs: BQz46WaxT--OPG0RstNmsA + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-de: R9sFKzQwQtiAzS63SgMgug + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-en-US: YV2v7kStTZeAKl20cucm3Q + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-de: Iz80VQhWQQGLgDFhFXe9BQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: RX8fyEksRNSvJz_b58R8Kw + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-de: XKgiCksYSxGXMY45_UYfNA + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-en-US: NGFvaGQwSf-u2ir4HoeOCg + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-de: BfccjqTpSXSoUWhb9s0X_w + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: YZ3m2cr8Spm-OuS7Sjm7nQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-de: HmR9pWedQTOhHHEHr4dHUQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-en-US: JVgTpY68S4CkbF3DCJZDJQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: EVHlFvhjQ7iHVGXkJa6miw + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: X_xQQ6PeRLyTaZLeRY7vuw + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-de: JPoz-NwySiOk6b4ZTuIMDg + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-en-US: Fw2zO4KNTLunbE3tRnvuHw + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Z5_96ISeRmicdlgexU1aSg + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: Wq608zqiQQCyJke0ueoTYw + release-partner-repack-signing-macosx64-nightly-yandex-yandex-portals-ru: besdKUczTsGAx7VIi6vgxw + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: CyAeWHPGQ7CMK3-IWijo0Q + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-ru: StqQciJJQWqG4LczK3BS8g + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: Zv8jpEZyQbOscnaOdDjdfg + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: DfJx4g9MR8eTShBTKkexEQ + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tr: OPt9p01kTvm9EvviFu_kRA + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-ru: eT5UzT9zT-uQla57siMjVA + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-uk: ZF26uloLTa6ZMzYKR09j-Q + release-partner-repack-win32-nightly: Q2j3JmrhReShd2aIRSSGsA + release-partner-repack-win64-nightly: A5KcGJIETCqIWgbYLuAJ-Q + release-snap-repackage-firefox: NR5c8ichS_CCJeFzorjVCQ + release-source-checksums-signing-firefox-source/opt: JIcVwohsThmr2gFT68astg + release-source-firefox-source/opt: SO9LvB6YR_a9IhtnPui2Fw + release-source-signing-firefox-source/opt: QMzngmz6S_S4aJyLNOa3Ew + release-update-verify-config-firefox-linux: Gk7hT2U4QmuDnJSIiVT5ng + release-update-verify-config-firefox-linux64: YJieFTJ4R_KHcrz5j682Iw + release-update-verify-config-firefox-macosx64: Uo1TbpxGR4aADK_Y2pjpvw + release-update-verify-config-firefox-win32: YLV4XV64TOG2I2B9hp1Tdg + release-update-verify-config-firefox-win64: ceNzEVh_Qyu5GpVdV1nwOQ + release-update-verify-firefox-linux-1/12: KeZPVc_JQQ6DZz0rhh3Wew + release-update-verify-firefox-linux-10/12: OCpDzWzdSfeyuZv4YUh_pA + release-update-verify-firefox-linux-11/12: G0PTyvNwSh6955VwsidCZg + release-update-verify-firefox-linux-12/12: Ic-o1815Q5GjyEuie6-F8A + release-update-verify-firefox-linux-2/12: cliJiYh-R86wONFxHUyDuw + release-update-verify-firefox-linux-3/12: dhYQZiXhR-qhV_CYBmm5rw + release-update-verify-firefox-linux-4/12: epNDNn1-SdKyGyHtFwXXkw + release-update-verify-firefox-linux-5/12: NA57z1B2QoeP5bst2D8B9g + release-update-verify-firefox-linux-6/12: Q8JpVcNgSjqYTmC4YoKbaw + release-update-verify-firefox-linux-7/12: d4S97_aoTZGNTv_RmAxkyw + release-update-verify-firefox-linux-8/12: H7-UBOvrT2i_qxoT0wj3bQ + release-update-verify-firefox-linux-9/12: HUxWXBs8QGybX8GyADFaVw + release-update-verify-firefox-linux64-1/12: HSfUXuLETyGagjDpXMjpFQ + release-update-verify-firefox-linux64-10/12: QmQFsInAREKyeCF1h1iIHg + release-update-verify-firefox-linux64-11/12: WzrNxY35QQaWAwiNl3WWAA + release-update-verify-firefox-linux64-12/12: d05NAVzIRaOYed2ry2LbLQ + release-update-verify-firefox-linux64-2/12: TNphRsScRQ-d_4piRHMzPg + release-update-verify-firefox-linux64-3/12: QZGi-n2nQay3iVUzZ824Sw + release-update-verify-firefox-linux64-4/12: DkKLHEm1RQ6afg5asVO8xA + release-update-verify-firefox-linux64-5/12: NZNQy90EToSfM5i4jbjL2w + release-update-verify-firefox-linux64-6/12: Hxe0dFveQa-DOqdz3JBZrg + release-update-verify-firefox-linux64-7/12: FSPmKU6dTzSVNuz6Lty5Og + release-update-verify-firefox-linux64-8/12: FCe_UwVOSlaOauBX6pqKKg + release-update-verify-firefox-linux64-9/12: f87W-YfIT8Cul52FPpS8_w + release-update-verify-firefox-macosx64-1/12: aDR05DSeQtC3Ga3aroy4Xw + release-update-verify-firefox-macosx64-10/12: V-64IW93SEOMm6gJQN2AlQ + release-update-verify-firefox-macosx64-11/12: IIHf7GJCSDC-zluT2sfv1w + release-update-verify-firefox-macosx64-12/12: dbImgTthQqC08PYfgSkYdw + release-update-verify-firefox-macosx64-2/12: fV3FkRr1ToKbq1vxDBf-CA + release-update-verify-firefox-macosx64-3/12: R2YI8NnGSVKdIpAhzyirHw + release-update-verify-firefox-macosx64-4/12: DI6zuJcqT9aOsiw0pzY68A + release-update-verify-firefox-macosx64-5/12: H6-IrY1oRoWRONcdWStWwg + release-update-verify-firefox-macosx64-6/12: dJ-jl4-lR2i5yL8sEnXmcg + release-update-verify-firefox-macosx64-7/12: LCGLW9rDTt2lhQ_kMtC2fg + release-update-verify-firefox-macosx64-8/12: LgjfS9NdQ2CQ-GBSEqlh0w + release-update-verify-firefox-macosx64-9/12: OAS8WQAiTj23ENdpUz2Akg + release-update-verify-firefox-win32-1/12: YaQv2wBZR2iirDqWwuuP1w + release-update-verify-firefox-win32-10/12: FVHQU_WIRtO4_W0ieGXMGQ + release-update-verify-firefox-win32-11/12: e78ielxLSPybE5pSgEhqcg + release-update-verify-firefox-win32-12/12: B-4uLMGkTYOH3XDA9aDSpA + release-update-verify-firefox-win32-2/12: SF-_AGHATMmxiloUC16d7w + release-update-verify-firefox-win32-3/12: OBABm9sZTOOeGkUSmo7CWQ + release-update-verify-firefox-win32-4/12: dHcaB4k9RnW2hfNOrhZtJA + release-update-verify-firefox-win32-5/12: DiSRxYaHR76Chb7xc_dOxg + release-update-verify-firefox-win32-6/12: edUjcdfqQiyOhe5WaCHMXg + release-update-verify-firefox-win32-7/12: DqBZfu4vRoiQWzyfF-bOMQ + release-update-verify-firefox-win32-8/12: UR1T7w3LR1y_88Lm3w_LFg + release-update-verify-firefox-win32-9/12: WS-TE4KfRXShAa0AO2bPPA + release-update-verify-firefox-win64-1/12: ff2jw9FGQky6X7SNi929Yw + release-update-verify-firefox-win64-10/12: Hr-hYh5IS_aAlXyOsQpvwg + release-update-verify-firefox-win64-11/12: F8trJPI3T8GJR3aUWB1qLg + release-update-verify-firefox-win64-12/12: HgCFjs6zSNaJXffamvz7dw + release-update-verify-firefox-win64-2/12: WEgA4tB1Rh6ba93GW0UmJQ + release-update-verify-firefox-win64-3/12: X_aWUw1KShK1ZZ88YPM93Q + release-update-verify-firefox-win64-4/12: dJlRrwgbS0idC_tw3uWrgA + release-update-verify-firefox-win64-5/12: eGBzw5QSTDevIf6fKNMDgg + release-update-verify-firefox-win64-6/12: SKX8eJ4ERomCtG-CNbCpDw + release-update-verify-firefox-win64-7/12: cDLdqOXsRAC8ILD_pac0Xg + release-update-verify-firefox-win64-8/12: VdWR75VlR1-84PuGFaPuwA + release-update-verify-firefox-win64-9/12: OQwy7IqSTOm32NVXn_Wpxw + repackage-l10n-ach-linux-nightly/opt: X_dCq3IATvWTts4vFpiKvw + repackage-l10n-ach-linux64-nightly/opt: BjV47tinRw6RKRJLmOkhVg + repackage-l10n-ach-macosx64-nightly/opt: VtiwYS1IQ4-KTB5uBqUDdg + repackage-l10n-ach-win32-nightly/opt: Y0s-H8AlSKeXwwih_X6MHQ + repackage-l10n-ach-win64-nightly/opt: K9dYgwVSTaOnlvmY5uF4Iw + repackage-l10n-af-linux-nightly/opt: QuvvYbPITDusMh5NM3uqWA + repackage-l10n-af-linux64-nightly/opt: fjOpFEGnSsWj0EBMerzydA + repackage-l10n-af-macosx64-nightly/opt: EyjWmTuTRWCg3nS2J13Dow + repackage-l10n-af-win32-nightly/opt: L4nc7wdITbKYHrY8MeoGWQ + repackage-l10n-af-win64-nightly/opt: TfuIJO3SQVC8eYAdKQ7yvw + repackage-l10n-an-linux-nightly/opt: SlVK8RUxQgexIVKFsLdZ5w + repackage-l10n-an-linux64-nightly/opt: NYCxlB-SSreKnQ0pW2IZ7g + repackage-l10n-an-macosx64-nightly/opt: N-zDaE6VSz6FaBT5v2G9Qw + repackage-l10n-an-win32-nightly/opt: XAfftAF8QMye0KJChF0qXQ + repackage-l10n-an-win64-nightly/opt: S0-u4EurQLiy2CxFa3vrqQ + repackage-l10n-ar-linux-nightly/opt: ALzyUr_aRoCSi3Qn30AmBA + repackage-l10n-ar-linux64-nightly/opt: B_-Qwi_eSayPXs-lNFqmUA + repackage-l10n-ar-macosx64-nightly/opt: TO3j6xgbSiKOw5YL1oXI-w + repackage-l10n-ar-win32-nightly/opt: TtQeCz31ShuAScrFs2WqQw + repackage-l10n-ar-win64-nightly/opt: TfY_MC6_T3aCoiqaybiyNQ + repackage-l10n-as-linux-nightly/opt: Me19EtmeS1SaOC1lQGJx-Q + repackage-l10n-as-linux64-nightly/opt: SJW6-vTnSq-yVLVFYIWCHQ + repackage-l10n-as-macosx64-nightly/opt: ASmlqxFvRRyVYa0L23yqcw + repackage-l10n-as-win32-nightly/opt: UjohhO37SCCFOEpKHntilw + repackage-l10n-as-win64-nightly/opt: VHFj0TVMRQqSDlkKz-Lopg + repackage-l10n-ast-linux-nightly/opt: UMn3rVI6TjaR3MeHKPPcZQ + repackage-l10n-ast-linux64-nightly/opt: UwvcC3ncQTW6iupsln1GgA + repackage-l10n-ast-macosx64-nightly/opt: QuFJW7pgTg-YAY89xSb8Qg + repackage-l10n-ast-win32-nightly/opt: QW8H3MywRwCi7BR7LznxZA + repackage-l10n-ast-win64-nightly/opt: UpHB1fE_TJWZPkbsPIIOYg + repackage-l10n-az-linux-nightly/opt: W9V34gJcT4C1SZUfKqZK1Q + repackage-l10n-az-linux64-nightly/opt: JOszAMgARvCqtxNCnDDqFQ + repackage-l10n-az-macosx64-nightly/opt: DEkDEtSASY2bFtLKa4A2xw + repackage-l10n-az-win32-nightly/opt: T2OLtmLVRSWlEMPZKEAJ8A + repackage-l10n-az-win64-nightly/opt: E8OsEFzgSNO1mLiylHxYqQ + repackage-l10n-be-linux-nightly/opt: ehChRV4HQqmg6bSI5kkySw + repackage-l10n-be-linux64-nightly/opt: cbEL-MAsS3OrjGw3YZOs5g + repackage-l10n-be-macosx64-nightly/opt: K0FYej7bTzeJGF0wz_8rwg + repackage-l10n-be-win32-nightly/opt: IAypLFOSQ2OKgBOowJtvDg + repackage-l10n-be-win64-nightly/opt: IhdlTLY0TVWJobkdN2NDVg + repackage-l10n-bg-linux-nightly/opt: EWLggAibQ3mGL5EOKF7Dig + repackage-l10n-bg-linux64-nightly/opt: E6gDS7CmQBuyHHPqil3nsw + repackage-l10n-bg-macosx64-nightly/opt: QcHz61IfStKMkFFgawzV5Q + repackage-l10n-bg-win32-nightly/opt: F76yjGx-SqiOADsUTUWqbw + repackage-l10n-bg-win64-nightly/opt: KycXXp_AQ5G-VLwpSMt3Mw + repackage-l10n-bn-BD-linux-nightly/opt: J08jAPC_Qq-9mAgeQu3jiA + repackage-l10n-bn-BD-linux64-nightly/opt: ZCh4JWwGSA-F1VP3Qn69Mw + repackage-l10n-bn-BD-macosx64-nightly/opt: YN5ogj6eQDKShzIfjdKyKw + repackage-l10n-bn-BD-win32-nightly/opt: Q7TR9jwaSmqU4UzGrlR8PA + repackage-l10n-bn-BD-win64-nightly/opt: YC_tfgLjRMKHAP4giBQOPQ + repackage-l10n-bn-IN-linux-nightly/opt: d8Mw0BxvRQyKq7K3oY4_bw + repackage-l10n-bn-IN-linux64-nightly/opt: BCNxZWrMS_22_i29--8bNA + repackage-l10n-bn-IN-macosx64-nightly/opt: aLrCWBdlTFqipqjAS1Lo5Q + repackage-l10n-bn-IN-win32-nightly/opt: XGJ0ftKSQC6swSVJY4YVFw + repackage-l10n-bn-IN-win64-nightly/opt: Dm7HCGXXRXSXCKJXUXs7IQ + repackage-l10n-br-linux-nightly/opt: c6i7gvzGRDGh5lEwgIQsnA + repackage-l10n-br-linux64-nightly/opt: VRkWJ3C_QPOaK529thIIpA + repackage-l10n-br-macosx64-nightly/opt: GnP0xnT9QbaKRPeiivYzSw + repackage-l10n-br-win32-nightly/opt: GT3fr8dcSvSE80X56unNYg + repackage-l10n-br-win64-nightly/opt: cWbHbIiGSNqQO7LRcGSVqA + repackage-l10n-bs-linux-nightly/opt: O_Ti4LrkTZ2Q6jCUI__imw + repackage-l10n-bs-linux64-nightly/opt: L6pDqX-JQQ6c3c9EtuD8Ew + repackage-l10n-bs-macosx64-nightly/opt: DpGNpG4wScuujYTuV62U7A + repackage-l10n-bs-win32-nightly/opt: S88zC66VQbWeo_JzsHlJKQ + repackage-l10n-bs-win64-nightly/opt: NHDIAzWIS8aECl1K_FayAA + repackage-l10n-ca-linux-nightly/opt: PuCSLKzNQ76nDo1Wt04JHQ + repackage-l10n-ca-linux64-nightly/opt: P75THLYiTk6lBHg8CcvE0Q + repackage-l10n-ca-macosx64-nightly/opt: fr8z-mToTi2XdptPXTD4mQ + repackage-l10n-ca-win32-nightly/opt: EhJ7wmykQZWkdrxW7y73lQ + repackage-l10n-ca-win64-nightly/opt: AKI14rTHQ-uvjN0geu4rrQ + repackage-l10n-cak-linux-nightly/opt: KfFcUXTHQYOCrzpkG7WvSg + repackage-l10n-cak-linux64-nightly/opt: MfsG05qhRsmgAlmbhg2O8g + repackage-l10n-cak-macosx64-nightly/opt: DoqZDK43QAmCGqBfFv-PkA + repackage-l10n-cak-win32-nightly/opt: Aqa9ZGIxQWKzKVjmk0FCgA + repackage-l10n-cak-win64-nightly/opt: Y9w11m6mSfyNoeVW3y89yg + repackage-l10n-cs-linux-nightly/opt: XfDp08tySk2m0XxrVB9LbA + repackage-l10n-cs-linux64-nightly/opt: PWoOVoaRRku_yOtwy0-11Q + repackage-l10n-cs-macosx64-nightly/opt: RYTguRoHRXaDoqpgCBVkvA + repackage-l10n-cs-win32-nightly/opt: eGc7RQkESxetIrTkGLnA5Q + repackage-l10n-cs-win64-nightly/opt: MaK5m5akSiKTvMgS5COisQ + repackage-l10n-cy-linux-nightly/opt: MMXRhIMfSn-jtaxalFwywA + repackage-l10n-cy-linux64-nightly/opt: WxoNskaySoWuf3JdBYJcOw + repackage-l10n-cy-macosx64-nightly/opt: RrzTnM33T4iTeQqky2HgJQ + repackage-l10n-cy-win32-nightly/opt: H5a4CGP3RIaNkMxDJVLN-g + repackage-l10n-cy-win64-nightly/opt: FQgwyR8mScCdAEs8TP4QIA + repackage-l10n-da-linux-nightly/opt: LF9lJhWrRU--hGGO9cCy1Q + repackage-l10n-da-linux64-nightly/opt: O6OHPZuuQm-9_G_5R44jvw + repackage-l10n-da-macosx64-nightly/opt: YswzIJpXSi6-B7y0-ZBtIg + repackage-l10n-da-win32-nightly/opt: OP2FEQ4gRXCYIWGaHfCYeA + repackage-l10n-da-win64-nightly/opt: ceL9h9UHQVKM1I69JYBJdQ + repackage-l10n-de-linux-nightly/opt: A92o9QDMR_GMPp5tlxGLMg + repackage-l10n-de-linux64-nightly/opt: T-lIOpozSDeHvT32dNnpoQ + repackage-l10n-de-macosx64-nightly/opt: PaJTczTcSoiiLYu2QPtTjA + repackage-l10n-de-win32-nightly/opt: FmqQok4kRgGn2hfGuGrhug + repackage-l10n-de-win64-nightly/opt: Tr6qa8P1QXme0-xuuXMgWw + repackage-l10n-dsb-linux-nightly/opt: Zld8k105TtqqJJTsUqXkHA + repackage-l10n-dsb-linux64-nightly/opt: ZUvt8V9jQ8uYVW-aZJeXYw + repackage-l10n-dsb-macosx64-nightly/opt: GHc47jAMQWKrNPV1OBwo9w + repackage-l10n-dsb-win32-nightly/opt: cpImhCbsRsOfjWhNEHB0WA + repackage-l10n-dsb-win64-nightly/opt: YKs4Hl8tQeGUM3odUbyYvw + repackage-l10n-el-linux-nightly/opt: GNKtKFo1Sj6bMjYTKBo_pw + repackage-l10n-el-linux64-nightly/opt: I-rpP_sKTY2dBy-0Fq4G4Q + repackage-l10n-el-macosx64-nightly/opt: VjCdtkNeTRaGDd105qZPjg + repackage-l10n-el-win32-nightly/opt: IQf5EguNQIe4XQBJTH8Nkg + repackage-l10n-el-win64-nightly/opt: ZYZqYJvrSmWrnkUYosZIwQ + repackage-l10n-en-CA-linux-nightly/opt: RO2hng9HSSmkLDqVdRwkmg + repackage-l10n-en-CA-linux64-nightly/opt: S8ItT_NrT46_bwW8kopHvg + repackage-l10n-en-CA-macosx64-nightly/opt: W_jvCH29T2qdCQL4EQV2CQ + repackage-l10n-en-CA-win32-nightly/opt: b7FmPW5_Rfm3WGB3wRE4QQ + repackage-l10n-en-CA-win64-nightly/opt: GupW3UV8TFOh2IzByX498Q + repackage-l10n-en-GB-linux-nightly/opt: Dq-kqy77RG6vIIigTFiJow + repackage-l10n-en-GB-linux64-nightly/opt: CVZFytZXQ0GVxhz3k02TVQ + repackage-l10n-en-GB-macosx64-nightly/opt: MGas6hP8QFOmdBXoPss8Xw + repackage-l10n-en-GB-win32-nightly/opt: dguTVzBpTtCX9gfojo8nyA + repackage-l10n-en-GB-win64-nightly/opt: fZzjov6YSPWokzgmSOpReg + repackage-l10n-en-ZA-linux-nightly/opt: KJ2cCdxXRv-TkxYjtxDaVg + repackage-l10n-en-ZA-linux64-nightly/opt: Yk-FV1ZSQPuywvTi6WQa1g + repackage-l10n-en-ZA-macosx64-nightly/opt: Gu91jYH7QfeoX3KCvQzF5g + repackage-l10n-en-ZA-win32-nightly/opt: AmGY-ORMROyqBJkoD9imgQ + repackage-l10n-en-ZA-win64-nightly/opt: c0Oy_K_ESaWoaaGIBizU7g + repackage-l10n-eo-linux-nightly/opt: CwTCkmaLRiGZG1cWqtr8mg + repackage-l10n-eo-linux64-nightly/opt: G9SXSN0SSq6BO9Pa044_kg + repackage-l10n-eo-macosx64-nightly/opt: ezBNLgrZR0yQ8R-BS0U23Q + repackage-l10n-eo-win32-nightly/opt: NUJlScuAS7uPeGgVFSkRgQ + repackage-l10n-eo-win64-nightly/opt: COKF8SNFRZaNKwUS0_lRAw + repackage-l10n-es-AR-linux-nightly/opt: bgImvIYrQ0WLvwMdXnM4gg + repackage-l10n-es-AR-linux64-nightly/opt: DkGC2CKVTt2o-fZI7Yx0TA + repackage-l10n-es-AR-macosx64-nightly/opt: bbi8upTvT-u14G8kDO9uZg + repackage-l10n-es-AR-win32-nightly/opt: KoqkENbqRuKe0xe0D0N8Kg + repackage-l10n-es-AR-win64-nightly/opt: Ikswh3u4RyOWP2bzcrYIMg + repackage-l10n-es-CL-linux-nightly/opt: JWSmcpglSx2C2HwgBNP27Q + repackage-l10n-es-CL-linux64-nightly/opt: NmyR0rzKRkKg2W3PSb8QYQ + repackage-l10n-es-CL-macosx64-nightly/opt: E1G4WJbNR0WivXVZfVyBLg + repackage-l10n-es-CL-win32-nightly/opt: PdyqNQRQT2-aEKmTxRM5tA + repackage-l10n-es-CL-win64-nightly/opt: MOBCru2nR_q7vPA4DHStAQ + repackage-l10n-es-ES-linux-nightly/opt: dDndQQ2ZS--ZT8QN4w8-4w + repackage-l10n-es-ES-linux64-nightly/opt: GVs4HNSVTiOn8TWlGoPCPQ + repackage-l10n-es-ES-macosx64-nightly/opt: WiU5MFN-S4mKJvItIW8mBA + repackage-l10n-es-ES-win32-nightly/opt: UoG3BxAoQgqhQtLLdsYDQw + repackage-l10n-es-ES-win64-nightly/opt: F4jpif1WSCi9QzQuLsJ7aA + repackage-l10n-es-MX-linux-nightly/opt: ZtI_Vyh6TRKieOLHnVIFsA + repackage-l10n-es-MX-linux64-nightly/opt: FYrRlK72SkmjTLRCimu0fg + repackage-l10n-es-MX-macosx64-nightly/opt: IIoP1F7mSvC-ptSUO1eq-g + repackage-l10n-es-MX-win32-nightly/opt: Fk_1fqkPRIiJneHmXiVJNA + repackage-l10n-es-MX-win64-nightly/opt: cUp2QlU3TIuqAfNXLijpUA + repackage-l10n-et-linux-nightly/opt: ChUvzCWnTAqp6j3_RNhLow + repackage-l10n-et-linux64-nightly/opt: fET6B3cEQg25Yg9v_Mzhxg + repackage-l10n-et-macosx64-nightly/opt: LI4aOCIMSNK4pct7nAe3Vg + repackage-l10n-et-win32-nightly/opt: cSMaQXeMSr6kU_IECr_lFA + repackage-l10n-et-win64-nightly/opt: NMY6uN17SIOypJSEIwbM8Q + repackage-l10n-eu-linux-nightly/opt: D3iUIsf2Sk-BuVRjIc8p1w + repackage-l10n-eu-linux64-nightly/opt: JBnGk7xHQGS175oI09QxsA + repackage-l10n-eu-macosx64-nightly/opt: cAtYORc6SvSyFqavNP8gmw + repackage-l10n-eu-win32-nightly/opt: HyV8p7A1QW62cdLhzwSQ7g + repackage-l10n-eu-win64-nightly/opt: JMZfsItARN2l02Ncg7T7sw + repackage-l10n-fa-linux-nightly/opt: EYihBtCwQbmTx1PmwDFGLA + repackage-l10n-fa-linux64-nightly/opt: TpLbxyJEQUuGO6VwqYAlaw + repackage-l10n-fa-macosx64-nightly/opt: JPwCyPjjR0S-dyAuCMsYAg + repackage-l10n-fa-win32-nightly/opt: TzCchZHlQ9GpsErijwtWXw + repackage-l10n-fa-win64-nightly/opt: O5uZYdQ_TNuVB19swleNNQ + repackage-l10n-ff-linux-nightly/opt: Nlcy8Vg-ST-Mbq7ZdBRA8g + repackage-l10n-ff-linux64-nightly/opt: ILl2BWuoSXi1qpfeOE0A9g + repackage-l10n-ff-macosx64-nightly/opt: IJi_wTpIRMaIbx5JvjZogg + repackage-l10n-ff-win32-nightly/opt: C73m675jQE-gOqiq1FuBxA + repackage-l10n-ff-win64-nightly/opt: WagGyt7XQE65r_DD0vkYjw + repackage-l10n-fi-linux-nightly/opt: N04kLsTgQfiV-Vxz6GOCZQ + repackage-l10n-fi-linux64-nightly/opt: NIVLyHvARSuM1UP1DLnLmw + repackage-l10n-fi-macosx64-nightly/opt: KTJUJ6rzQf2FPU1Q6t4jzw + repackage-l10n-fi-win32-nightly/opt: W2-b5DuFQLWHQQYMk1zqug + repackage-l10n-fi-win64-nightly/opt: D13g_q_sTQeRhHfBE58r-A + repackage-l10n-fr-linux-nightly/opt: FbHy8bRfQZa2GMlbyC1D-Q + repackage-l10n-fr-linux64-nightly/opt: LvRquCmISBKHNT2VdGfNYQ + repackage-l10n-fr-macosx64-nightly/opt: VxCyyTI1S7O1dhGtI8sFWw + repackage-l10n-fr-win32-nightly/opt: bkDJcw4wRBidcFvDWGeh7Q + repackage-l10n-fr-win64-nightly/opt: WyXjchpUTXiphvF9z_XtaA + repackage-l10n-fy-NL-linux-nightly/opt: UBwEdm4yTlGMK0yzzlp-eg + repackage-l10n-fy-NL-linux64-nightly/opt: CCH18ef6QcyA-Ed1dPudBw + repackage-l10n-fy-NL-macosx64-nightly/opt: djZ1O9cvSg2OBkhdzbu7PQ + repackage-l10n-fy-NL-win32-nightly/opt: bRPNUU0oScGR6KM6QniVcg + repackage-l10n-fy-NL-win64-nightly/opt: G5VEGKpqTr6hYFDhuut9kA + repackage-l10n-ga-IE-linux-nightly/opt: KqI4_VuESam6cFj9c20K9A + repackage-l10n-ga-IE-linux64-nightly/opt: Tvlv2ScDTAOTsnjuN1OUDw + repackage-l10n-ga-IE-macosx64-nightly/opt: NxguYT2KRAu7oLt09GBDZg + repackage-l10n-ga-IE-win32-nightly/opt: dfGUvELjQ4mKaiN17b9jzw + repackage-l10n-ga-IE-win64-nightly/opt: D-JP0ck4QLSBLjie7gHiKg + repackage-l10n-gd-linux-nightly/opt: XIfQRrSKRLeNXhb2MPnclQ + repackage-l10n-gd-linux64-nightly/opt: OVfoZ4TUTba2mZOlBqKZ7w + repackage-l10n-gd-macosx64-nightly/opt: ar4BWqcLR8W9Eok-EuF-6w + repackage-l10n-gd-win32-nightly/opt: SuV4TBXrS3OudG-Qkqedgw + repackage-l10n-gd-win64-nightly/opt: QRVcaPrtRtWSVILDsjR6CA + repackage-l10n-gl-linux-nightly/opt: NRKe-_ezQBCVZtoIDcypQg + repackage-l10n-gl-linux64-nightly/opt: W4aRzxtCTWeTUG6MBSi7jg + repackage-l10n-gl-macosx64-nightly/opt: BovXfvvJQDSp07mbfqQq3g + repackage-l10n-gl-win32-nightly/opt: Som4AUNuTCSYnpD-kWEVeg + repackage-l10n-gl-win64-nightly/opt: EuQoWvCdTpejdsJXKKw57Q + repackage-l10n-gn-linux-nightly/opt: YzDa1YqjSUKCrQbLS8uGjA + repackage-l10n-gn-linux64-nightly/opt: RA3FNaekRaSzmryaRaZQSg + repackage-l10n-gn-macosx64-nightly/opt: M8Uog5bsQLOxVJWdQxdd3A + repackage-l10n-gn-win32-nightly/opt: XpjgkzadRlyf9qqk6ZuPsQ + repackage-l10n-gn-win64-nightly/opt: buShETCwS8mKiygN0u7DxQ + repackage-l10n-gu-IN-linux-nightly/opt: HerJYHB0TNeChFe6n3QkcA + repackage-l10n-gu-IN-linux64-nightly/opt: dbCT_cX7SYWkD7KHPNexeA + repackage-l10n-gu-IN-macosx64-nightly/opt: P8sTgN54TzufPYnhlzDU4A + repackage-l10n-gu-IN-win32-nightly/opt: Aa1NWhouRISrkqy8KNOpEg + repackage-l10n-gu-IN-win64-nightly/opt: E3llJ_QxTvOQPb3NW5NMJA + repackage-l10n-he-linux-nightly/opt: dDUyzraJSFC0EpQWLkqSXg + repackage-l10n-he-linux64-nightly/opt: KGx_mFUgSeSS0NCMHJwzEw + repackage-l10n-he-macosx64-nightly/opt: ZdQqpj7SRpGCcwW8TWu-8w + repackage-l10n-he-win32-nightly/opt: ay4pdRduSruJAp17B8qxvw + repackage-l10n-he-win64-nightly/opt: EDOTOXnwTrqIg_su5zQD7w + repackage-l10n-hi-IN-linux-nightly/opt: Li-dDxMjQSOsbU5So7FB5Q + repackage-l10n-hi-IN-linux64-nightly/opt: CTrGQcjjROi6TSBdGTE_JQ + repackage-l10n-hi-IN-macosx64-nightly/opt: T8jhSlVFRAmUOjDpBojMiw + repackage-l10n-hi-IN-win32-nightly/opt: T4bK8FauQOu054sUE657-g + repackage-l10n-hi-IN-win64-nightly/opt: Lxe8dskSSoiGDyRZQjnNgQ + repackage-l10n-hr-linux-nightly/opt: HfTjp97pR5-Q8KJrvjbKiA + repackage-l10n-hr-linux64-nightly/opt: GJmK34IQRIugEuqVmO06YQ + repackage-l10n-hr-macosx64-nightly/opt: X7SiA3GqSnGrM05OofErZQ + repackage-l10n-hr-win32-nightly/opt: bl8m7YBdQSedrfgsbQGzHA + repackage-l10n-hr-win64-nightly/opt: ayyeeUejSme1mmNOgtATfg + repackage-l10n-hsb-linux-nightly/opt: e8fpZptWQJuqrZSbIGi-Gw + repackage-l10n-hsb-linux64-nightly/opt: fP99sIBXTBaQdbi39HOhYw + repackage-l10n-hsb-macosx64-nightly/opt: IRSV88MBToyN1kkwoV-GIA + repackage-l10n-hsb-win32-nightly/opt: OTX-JxPmRLWxCAJ4Vs8ReQ + repackage-l10n-hsb-win64-nightly/opt: PBm9Fne1QF-sG5WRLlUetA + repackage-l10n-hu-linux-nightly/opt: VvT_7qPSSnG8PlNv1WbZ0w + repackage-l10n-hu-linux64-nightly/opt: S35M9lKqTt2StmJ1dLQD9w + repackage-l10n-hu-macosx64-nightly/opt: Atm7cEEqQFGSVjAs-wvs4Q + repackage-l10n-hu-win32-nightly/opt: A7gFbJSGSNSC8lot94Q-Pw + repackage-l10n-hu-win64-nightly/opt: WDjLgwYdQ_OGiPFvvSxlKA + repackage-l10n-hy-AM-linux-nightly/opt: YnEgGz7DSjiQD_2azaRUDw + repackage-l10n-hy-AM-linux64-nightly/opt: EL27o_rfRuqD54M76lXKOg + repackage-l10n-hy-AM-macosx64-nightly/opt: YJmtHf_7RcilxeC481NPhQ + repackage-l10n-hy-AM-win32-nightly/opt: eTlE_u5yR7eR6S2SDDCeUQ + repackage-l10n-hy-AM-win64-nightly/opt: WNjU1zsdQ7O2wgTZoiDqrQ + repackage-l10n-ia-linux-nightly/opt: WqrpxiX-REGU3I96XkO8IQ + repackage-l10n-ia-linux64-nightly/opt: P2zZyIEgRtWJ-xPS1_SluA + repackage-l10n-ia-macosx64-nightly/opt: VYEBVdDiQPufxIPFQ8gM4g + repackage-l10n-ia-win32-nightly/opt: JkDvhGE3QjGQZ8FxC9-6eQ + repackage-l10n-ia-win64-nightly/opt: UB97NWa5ToqxGAGBQkNQDQ + repackage-l10n-id-linux-nightly/opt: Aeahgf_7RBKTM46VDx1vfA + repackage-l10n-id-linux64-nightly/opt: JUbN84Z9TAqgqmhFySiHGQ + repackage-l10n-id-macosx64-nightly/opt: RswHlXRbQ7qiymYMhD3kug + repackage-l10n-id-win32-nightly/opt: fdTSsrbCR0uC4U89Rn0hQw + repackage-l10n-id-win64-nightly/opt: TPNWeZHIT2-UtjJpMdo6gg + repackage-l10n-is-linux-nightly/opt: Ye8dCdcHSharN0rkGdyOVQ + repackage-l10n-is-linux64-nightly/opt: QjkBs73MQGOv4KPv0nCPxQ + repackage-l10n-is-macosx64-nightly/opt: cFnFKiScR5uKvqAtwaPbYg + repackage-l10n-is-win32-nightly/opt: N56VRfojSmWioHKczLKbgg + repackage-l10n-is-win64-nightly/opt: ZoGeD24bTFKiS_efoSP8eA + repackage-l10n-it-linux-nightly/opt: Fr_kN5DqR2GnU5jF5dxp6Q + repackage-l10n-it-linux64-nightly/opt: NrLsuSrUSIWvKdDWklGCKQ + repackage-l10n-it-macosx64-nightly/opt: dsGoWvviSeyWfxNPWAGWzw + repackage-l10n-it-win32-nightly/opt: LEdmTOgvQ22Wd6aCfJTaPA + repackage-l10n-it-win64-nightly/opt: TJGAHaIIT82W5xLMMD1BQw + repackage-l10n-ja-JP-mac-macosx64-nightly/opt: HWRSUJ85RPqZJPNtI_0OJQ + repackage-l10n-ja-linux-nightly/opt: FJZeyHb-Sx2Wfe4E5G0FOg + repackage-l10n-ja-linux64-nightly/opt: W3yklSh4Qua7DXoehwq9qw + repackage-l10n-ja-win32-nightly/opt: cW_Sg9lYTMqvEkFqRX8uNQ + repackage-l10n-ja-win64-nightly/opt: MypX9zniT6aoJm98B9gHhw + repackage-l10n-ka-linux-nightly/opt: KhFfJ7KCS9C0n0JGRQIOBQ + repackage-l10n-ka-linux64-nightly/opt: UkTbeplUSr-qCQH6CjCGLw + repackage-l10n-ka-macosx64-nightly/opt: L98oZXV7TcW3ImsnzqGSBA + repackage-l10n-ka-win32-nightly/opt: IVS4K7plQsatHxvyDr4HOw + repackage-l10n-ka-win64-nightly/opt: FfYgzqsCQ9OhhHt1Iru7Wg + repackage-l10n-kab-linux-nightly/opt: Fl5vxGWfSo6mvrRwhrwvNQ + repackage-l10n-kab-linux64-nightly/opt: b4vXRNtKSTmNDLOuSCwdNA + repackage-l10n-kab-macosx64-nightly/opt: ECTTMt9ZRjC0Z_vA99goGQ + repackage-l10n-kab-win32-nightly/opt: KxtqMoPORzKvQfvxEQZX7g + repackage-l10n-kab-win64-nightly/opt: Gn3DU7vFTP6IGakpITCP3A + repackage-l10n-kk-linux-nightly/opt: GBJ7GmoLQhmVYK9e4-K5zA + repackage-l10n-kk-linux64-nightly/opt: b9QUorz5SYWVkRuNFZR8qw + repackage-l10n-kk-macosx64-nightly/opt: f7mWJVelQHqbYYPUNNg_QQ + repackage-l10n-kk-win32-nightly/opt: LwDE5j-ZSJ6ktqJ8-ASUuQ + repackage-l10n-kk-win64-nightly/opt: HbPObXUGSKK2XHChybaiQQ + repackage-l10n-km-linux-nightly/opt: M7GMEAF2TVajj4kHmca7UQ + repackage-l10n-km-linux64-nightly/opt: OsFJThNBReC4hT70G3WcNg + repackage-l10n-km-macosx64-nightly/opt: N9vqDGZQSQ6cR0vC67RYOA + repackage-l10n-km-win32-nightly/opt: dOLnMdDCRimKJWJhM14dOg + repackage-l10n-km-win64-nightly/opt: RVKTVdwITHma6HRNQIPsfg + repackage-l10n-kn-linux-nightly/opt: Aaea_KxeSuaevEDkR7Agiw + repackage-l10n-kn-linux64-nightly/opt: aCfE20MdTYyDfdN7PfEOXg + repackage-l10n-kn-macosx64-nightly/opt: Dwcz3UeJTMyeB8LmVHo9lg + repackage-l10n-kn-win32-nightly/opt: QxIY2WVHQsSiKZ8u9lIq9g + repackage-l10n-kn-win64-nightly/opt: dnlkyZbxSIeqPhVOFSWopQ + repackage-l10n-ko-linux-nightly/opt: f5eOpJWpQA-5mWYhXn05SA + repackage-l10n-ko-linux64-nightly/opt: EeSalDrkQUiGpzDScrfB7g + repackage-l10n-ko-macosx64-nightly/opt: NEqii-yXTo-J8WwzTTFaXg + repackage-l10n-ko-win32-nightly/opt: A9KF6wBJREmPL5euv9dHTA + repackage-l10n-ko-win64-nightly/opt: EorADmyKSf-cBTfvaVuLhA + repackage-l10n-lij-linux-nightly/opt: VTPTlDBkQiSJfcFCZbq2ng + repackage-l10n-lij-linux64-nightly/opt: WqZGbNwJRPaVFGv-nlco_A + repackage-l10n-lij-macosx64-nightly/opt: cZBjYaDATlaPshNKUTQ62Q + repackage-l10n-lij-win32-nightly/opt: QKBmFfkLSE2FF1QPLe47kA + repackage-l10n-lij-win64-nightly/opt: HNWydAavTN-CWXmuMh_PYQ + repackage-l10n-lt-linux-nightly/opt: IgeC1vZoRWaw0pdLojGLig + repackage-l10n-lt-linux64-nightly/opt: JlOv51ahQq24bh3jBPNc0A + repackage-l10n-lt-macosx64-nightly/opt: BMvTT-T3SSCsPjTP8I_3ww + repackage-l10n-lt-win32-nightly/opt: FRxEP5zYQVScciciqHi2Dw + repackage-l10n-lt-win64-nightly/opt: BRl-c7R9Qky0fWe8kAxeSQ + repackage-l10n-lv-linux-nightly/opt: RCJNFSYjRkywnqCmILpBPQ + repackage-l10n-lv-linux64-nightly/opt: YlZZWpxgRPG2EaHPeX5PZw + repackage-l10n-lv-macosx64-nightly/opt: SmMnWkEeSWqkNcJgFj6ZHw + repackage-l10n-lv-win32-nightly/opt: dmeLsTq5RVayST2DroeLww + repackage-l10n-lv-win64-nightly/opt: BupVR3UHQHuTJa56GUqv9w + repackage-l10n-mai-linux-nightly/opt: F2WbLUjBRQmbir-Ro9Sgkg + repackage-l10n-mai-linux64-nightly/opt: LE9YRY_CSDaA4YHw0tnQcA + repackage-l10n-mai-macosx64-nightly/opt: d0N1Y3UwSHyce_BJZg9lYg + repackage-l10n-mai-win32-nightly/opt: EEeb8aNjQq-L-SBZasRofA + repackage-l10n-mai-win64-nightly/opt: PaNvPZCXRoqjnRhCm3CjjA + repackage-l10n-mk-linux-nightly/opt: N6LvHid9QaOeU6EF-KDghg + repackage-l10n-mk-linux64-nightly/opt: fkKhy2e3Rtuh4L970B3TRQ + repackage-l10n-mk-macosx64-nightly/opt: ZUN_K612Qg2nOOZRndOPAQ + repackage-l10n-mk-win32-nightly/opt: J6ejcgdyRQSryOpxBG9fUg + repackage-l10n-mk-win64-nightly/opt: OJjYB8SVSEuj7gxPSoF_Og + repackage-l10n-ml-linux-nightly/opt: BjCmftxLRsS6rsm0T_SMuw + repackage-l10n-ml-linux64-nightly/opt: MVlT7Fy8QuuBZr3Ez1UYXw + repackage-l10n-ml-macosx64-nightly/opt: WVxeoggyR8K-QlOEuyndWw + repackage-l10n-ml-win32-nightly/opt: XdVEgSK-T6CqxXeguhb6FQ + repackage-l10n-ml-win64-nightly/opt: M4eBaLwtSfiOX-mUH9e85A + repackage-l10n-mr-linux-nightly/opt: YyBauZj0TW6BvgDmX5N4_w + repackage-l10n-mr-linux64-nightly/opt: ftzIaYVRQSePoWmC_1ZZ6A + repackage-l10n-mr-macosx64-nightly/opt: BpWcaQNpTpqi2M02EId72Q + repackage-l10n-mr-win32-nightly/opt: DceeRZrITj2vaxfWJtXyUA + repackage-l10n-mr-win64-nightly/opt: NcJ7v4OIS9asY92iUgISww + repackage-l10n-ms-linux-nightly/opt: KvF4Uf3sRoC3ndcTlDCq0Q + repackage-l10n-ms-linux64-nightly/opt: Rg5lx8h1SsiDcIAlgnNJ8g + repackage-l10n-ms-macosx64-nightly/opt: MfOcbnFqS1upre2Z4agwEQ + repackage-l10n-ms-win32-nightly/opt: OkVDCrNNQ_qbBTCkbQ_NjQ + repackage-l10n-ms-win64-nightly/opt: Hz5B48qzTFOFDkRp38nqmA + repackage-l10n-my-linux-nightly/opt: YL17OwlhTwu3xbZ79TBZjg + repackage-l10n-my-linux64-nightly/opt: LuDWcpQjRR-HYOdkSor7bg + repackage-l10n-my-macosx64-nightly/opt: KNbvYT5dSM6LfkyV0_Bkkg + repackage-l10n-my-win32-nightly/opt: Ro9VJpdAT8aC3JmTfCvpWw + repackage-l10n-my-win64-nightly/opt: dqEYijiSRPaLBL0iRUCayQ + repackage-l10n-nb-NO-linux-nightly/opt: OVMbwXoiRxiczYnho2AC4g + repackage-l10n-nb-NO-linux64-nightly/opt: dMlMfl2pT0W4J844uxxjUQ + repackage-l10n-nb-NO-macosx64-nightly/opt: axmkh8kLRtOY_3gdZI_Pjg + repackage-l10n-nb-NO-win32-nightly/opt: WKjr9IL8QwGRJCdoKiGdlg + repackage-l10n-nb-NO-win64-nightly/opt: AmjTR2sGRqWR2Bcpr8mSxw + repackage-l10n-ne-NP-linux-nightly/opt: GzkoVhd5RP--nqw9GdXN2w + repackage-l10n-ne-NP-linux64-nightly/opt: YnMFAQwuTMORbfctoIiPpg + repackage-l10n-ne-NP-macosx64-nightly/opt: ae2tGGyVRJGHVFV1JxLlGQ + repackage-l10n-ne-NP-win32-nightly/opt: eoUGTVRjRHy58YDu4dGKiA + repackage-l10n-ne-NP-win64-nightly/opt: QoSrC6YBQYOLVEzRJOpsMA + repackage-l10n-nl-linux-nightly/opt: cv2K4ELWRxK4Us1U02dVmg + repackage-l10n-nl-linux64-nightly/opt: Uok_JW_4SXWKKGshzXWtGg + repackage-l10n-nl-macosx64-nightly/opt: Yb4uVuTvQm6BV8y84I47iQ + repackage-l10n-nl-win32-nightly/opt: LKOZWCopR2Wi0yS4sqPQCw + repackage-l10n-nl-win64-nightly/opt: cDA2zSsdRJWDLCZutCfaRg + repackage-l10n-nn-NO-linux-nightly/opt: AbME5EJmRp2smau6aqTJVQ + repackage-l10n-nn-NO-linux64-nightly/opt: O1h7vs1NSW659-FT7dJ6_A + repackage-l10n-nn-NO-macosx64-nightly/opt: eZoqTdn_SHuDldKcR72Ppg + repackage-l10n-nn-NO-win32-nightly/opt: OYiWivG7RJybhTDpxxEZKg + repackage-l10n-nn-NO-win64-nightly/opt: aGc1xo5GSyCqISiRjJTV8w + repackage-l10n-oc-linux-nightly/opt: CSrSF_4yRY-DsdH2GL-fyA + repackage-l10n-oc-linux64-nightly/opt: QW9045zlQ6WYwNSxZLConA + repackage-l10n-oc-macosx64-nightly/opt: cR_m6L_qRzeDQEDn0S1PGg + repackage-l10n-oc-win32-nightly/opt: XF5cPuQWT_-4GwmOAIPY0w + repackage-l10n-oc-win64-nightly/opt: YbhQ-bezQaSD8y3Pobu6kA + repackage-l10n-or-linux-nightly/opt: ZBWXcEx_RNWCaBlR05o2TA + repackage-l10n-or-linux64-nightly/opt: eQCUACcXQiC-6btbGAwlqQ + repackage-l10n-or-macosx64-nightly/opt: TdDrwu7DSqy7LmgZ7QYebA + repackage-l10n-or-win32-nightly/opt: Ak8KFrG5TXiFmpVVaHtwHA + repackage-l10n-or-win64-nightly/opt: KKFqFUXqSkio5Kg_2L7H5g + repackage-l10n-pa-IN-linux-nightly/opt: e129_f6tT-2XIHbfmKNncA + repackage-l10n-pa-IN-linux64-nightly/opt: HNSL3KH2TZagkfJ8TsvYQw + repackage-l10n-pa-IN-macosx64-nightly/opt: SfIoh5xqT_e3oBVdjrbBzA + repackage-l10n-pa-IN-win32-nightly/opt: MEK3RPR4Tfa6Okg2CDqHOw + repackage-l10n-pa-IN-win64-nightly/opt: IYlg76WVRcqCbbcVpolJrA + repackage-l10n-pl-linux-nightly/opt: R7IyWmKTR8S_UUvakjK8Vw + repackage-l10n-pl-linux64-nightly/opt: YoIMyeH-Qh6A_7wy92er7w + repackage-l10n-pl-macosx64-nightly/opt: GO_UKlybQA-7gQzSIYyBPw + repackage-l10n-pl-win32-nightly/opt: e9LB_TaUQb26eBkYdQHi7A + repackage-l10n-pl-win64-nightly/opt: MqTkCPK9QjmXHgA63HCh7A + repackage-l10n-pt-BR-linux-nightly/opt: OO4bxyenQRyXbTV08LbL-A + repackage-l10n-pt-BR-linux64-nightly/opt: cQMmGNIITliO3gf8jsik3g + repackage-l10n-pt-BR-macosx64-nightly/opt: d_jhpGRZQA-oo4VeRK2jcQ + repackage-l10n-pt-BR-win32-nightly/opt: ZIgF4jeETqOiNwlw6500Jw + repackage-l10n-pt-BR-win64-nightly/opt: dwzicSkETzmnLciGZskPag + repackage-l10n-pt-PT-linux-nightly/opt: eH7_zUoZRuqeIzLovtIyeQ + repackage-l10n-pt-PT-linux64-nightly/opt: DICuRm5LQoOI9oknKbcpSg + repackage-l10n-pt-PT-macosx64-nightly/opt: Sxwwh50JSm2fRPfk_bhpVA + repackage-l10n-pt-PT-win32-nightly/opt: U0slPcj9TLOWk0dH_PcL2g + repackage-l10n-pt-PT-win64-nightly/opt: Co-uZyo9RS-6QKz10RwKfw + repackage-l10n-rm-linux-nightly/opt: Mw0z0B-iSt6EEh9dDmK1XA + repackage-l10n-rm-linux64-nightly/opt: HyZ4CA1gSES2kRfk9EQ1sg + repackage-l10n-rm-macosx64-nightly/opt: XQ36ofUdSrOaiP1CIWYU7g + repackage-l10n-rm-win32-nightly/opt: ENxorfjHSbeRc5ICV5akhQ + repackage-l10n-rm-win64-nightly/opt: Xo_lyazhTUeUigkI8OhTAw + repackage-l10n-ro-linux-nightly/opt: Rnee1W2_S9-fsvotWULwtA + repackage-l10n-ro-linux64-nightly/opt: Ia2EsaxfSG2Va5HqH_2JtA + repackage-l10n-ro-macosx64-nightly/opt: K66TNRdqTaqVJb22upqulg + repackage-l10n-ro-win32-nightly/opt: VLbpoIS1TV61zE21SKQbxw + repackage-l10n-ro-win64-nightly/opt: ZzV6qCY2QiSPfLjy1W0SMw + repackage-l10n-ru-linux-nightly/opt: LsFRtS3HQ4GzTeFqPULRpw + repackage-l10n-ru-linux64-nightly/opt: aZjpOd72RpmtGVkwHmJmyw + repackage-l10n-ru-macosx64-nightly/opt: PrX4pOtIRsGjTomIhMlAag + repackage-l10n-ru-win32-nightly/opt: B7KGW6zQRIa9m2Ilp2J3pQ + repackage-l10n-ru-win64-nightly/opt: XocHKkiJSv-kRUDk9Niakw + repackage-l10n-si-linux-nightly/opt: C9HZpuFBQhqdttyEFN01Iw + repackage-l10n-si-linux64-nightly/opt: DF_9EDVKQxCn5qaPLYuw9Q + repackage-l10n-si-macosx64-nightly/opt: fouYtqEMQlKvoRbGNSk9DA + repackage-l10n-si-win32-nightly/opt: F0LKyNFPR32bmL5G6vZxPg + repackage-l10n-si-win64-nightly/opt: GR_hQHOzRhOGKXYH0nz-pw + repackage-l10n-sk-linux-nightly/opt: SVLLpvKbRzKC4EpLdPB1rw + repackage-l10n-sk-linux64-nightly/opt: d95A59XISgm4cL8uQpu8lA + repackage-l10n-sk-macosx64-nightly/opt: ZyU486mYSAqoRGpXVr5DKA + repackage-l10n-sk-win32-nightly/opt: HFkIgsx9RmGgFcENqxlupQ + repackage-l10n-sk-win64-nightly/opt: LMJYnWSlTjirXjNvMryf1g + repackage-l10n-sl-linux-nightly/opt: XdYu83JNS6u2h7-KQnEISw + repackage-l10n-sl-linux64-nightly/opt: FKgGV9vnS8i-cyrOvu0nwg + repackage-l10n-sl-macosx64-nightly/opt: fplnbzMZRZORGkXtRAEijA + repackage-l10n-sl-win32-nightly/opt: HPvCtE1mQpKZNzM5Yodd0Q + repackage-l10n-sl-win64-nightly/opt: KjWrkT5vRLKyKxlJOdCG3w + repackage-l10n-son-linux-nightly/opt: SGOaQxQFQS6MzipCGMb1Fg + repackage-l10n-son-linux64-nightly/opt: bF4UTJLtTVeE2rLBb2OuFw + repackage-l10n-son-macosx64-nightly/opt: ewi198RnQdKry6X4qzdRuQ + repackage-l10n-son-win32-nightly/opt: bfqz1QWJQFSs9Im_oZURKA + repackage-l10n-son-win64-nightly/opt: XSw8QOGsTgOQ3JYQ8PRzCA + repackage-l10n-sq-linux-nightly/opt: S-2NblTdTp-JNRDm9DPlOQ + repackage-l10n-sq-linux64-nightly/opt: H9FsolZ3RR-OepCGiM8fDw + repackage-l10n-sq-macosx64-nightly/opt: JptCj9e6TwqCQ0-cvTk0nQ + repackage-l10n-sq-win32-nightly/opt: bFsf02LfSFWqk5rpkzYNCg + repackage-l10n-sq-win64-nightly/opt: dG5o_8p4Tcm2Sk1_wUFLOw + repackage-l10n-sr-linux-nightly/opt: DuLjnX6xTA-M1bh2SS_ptA + repackage-l10n-sr-linux64-nightly/opt: XQnmb-DjQHGEr7Xp42N54g + repackage-l10n-sr-macosx64-nightly/opt: WijMJD9bTJCvT0ftpOkHgQ + repackage-l10n-sr-win32-nightly/opt: HLiVMchHTiSWZC9l318X4g + repackage-l10n-sr-win64-nightly/opt: OL8oGxMCQ6qJNR0UzhNa3A + repackage-l10n-sv-SE-linux-nightly/opt: bIIItrogSU6pGhHkp9qb_Q + repackage-l10n-sv-SE-linux64-nightly/opt: BfzeNFLDRSCJmXQ1kMVKaw + repackage-l10n-sv-SE-macosx64-nightly/opt: Qc7i2OWFS0Kgj3Z7_SkNGA + repackage-l10n-sv-SE-win32-nightly/opt: OCUCZwPxR62YAOhRJ08zTw + repackage-l10n-sv-SE-win64-nightly/opt: Bo28uvBXRCOvciMUjkTa4Q + repackage-l10n-ta-linux-nightly/opt: FOBMy2dtS5afzNpx05-rYg + repackage-l10n-ta-linux64-nightly/opt: WkriWroZRNKE-NKfZFlMbQ + repackage-l10n-ta-macosx64-nightly/opt: QnbqiWEeTzOWKw9ShUdl8w + repackage-l10n-ta-win32-nightly/opt: QfaIfTegR5yfjw4ENJG5GA + repackage-l10n-ta-win64-nightly/opt: BfOSe7rpSn6JHJ4lRfnx5A + repackage-l10n-te-linux-nightly/opt: SnYbb3bWRWWksAPshcxUjQ + repackage-l10n-te-linux64-nightly/opt: U58C4Iv8Sx-Y9Aq2IXsYuQ + repackage-l10n-te-macosx64-nightly/opt: G_1EELSYQuyAzB9A3csvBw + repackage-l10n-te-win32-nightly/opt: fuUBPagwSw2UPjZWSqOxSA + repackage-l10n-te-win64-nightly/opt: aIyA8RSfTGW7XnFME6Xa5g + repackage-l10n-th-linux-nightly/opt: C6mWyhtkTe6jXIH_OJ1H-Q + repackage-l10n-th-linux64-nightly/opt: eyIrx-izRlWKffl85wIY7Q + repackage-l10n-th-macosx64-nightly/opt: LTwIuk3wQLqxtM7CBsH-Rw + repackage-l10n-th-win32-nightly/opt: NP8JuvFTTsiTBOtrgPhGbA + repackage-l10n-th-win64-nightly/opt: JrG7QlobSACd5-WW2FQdZA + repackage-l10n-tr-linux-nightly/opt: DJQpajaBTIi59c0zQUq2RA + repackage-l10n-tr-linux64-nightly/opt: SNBo9hNjR6CrW1_vMrJdig + repackage-l10n-tr-macosx64-nightly/opt: eHjj6UNEScOzV61G_eTKTQ + repackage-l10n-tr-win32-nightly/opt: XlxnDEXURhS_pCxqkRiVNw + repackage-l10n-tr-win64-nightly/opt: D-9aQDIyR8Wn0gKgMPGtYw + repackage-l10n-uk-linux-nightly/opt: Bo1J_7DMQDWUJCN1bBFZHg + repackage-l10n-uk-linux64-nightly/opt: DB-kHZjFR3GvYjeas_KHVw + repackage-l10n-uk-macosx64-nightly/opt: P3QhLSIxTDqgBP6PD9_KcQ + repackage-l10n-uk-win32-nightly/opt: WsBYsgIZSJiOX674U0Bgmw + repackage-l10n-uk-win64-nightly/opt: efaaKwJJTFGBeIlNhiCUHg + repackage-l10n-ur-linux-nightly/opt: a7_zVi-YSmq_rrw8_ZlR3Q + repackage-l10n-ur-linux64-nightly/opt: DX0rWZzwTPWOxqHrhHyrqA + repackage-l10n-ur-macosx64-nightly/opt: FH4jUbKySiW09eaFIvAm7g + repackage-l10n-ur-win32-nightly/opt: LWNTpMo-SIaQyKF2qmaatw + repackage-l10n-ur-win64-nightly/opt: WXcij_gSTimuGtkpoey0Ng + repackage-l10n-uz-linux-nightly/opt: Vm6Io74HTru5b8nOt19Aqw + repackage-l10n-uz-linux64-nightly/opt: ALG1qR27Q_yrW18FHqPRsw + repackage-l10n-uz-macosx64-nightly/opt: VwCNROBVSAaxkSxfC73jyw + repackage-l10n-uz-win32-nightly/opt: LknEL-m3TIuZEsSURWwCCw + repackage-l10n-uz-win64-nightly/opt: MGtV4GVCScW6J86bDn1MWg + repackage-l10n-vi-linux-nightly/opt: Rm1u8Iw4TbKYiFP3vJUsSA + repackage-l10n-vi-linux64-nightly/opt: Z_PbU86CSE6DYSDS0RTJGA + repackage-l10n-vi-macosx64-nightly/opt: W96ZZcUCS0aDdCb9-0OIhA + repackage-l10n-vi-win32-nightly/opt: Ca9SIhbNQlq6pnPBciC_Cg + repackage-l10n-vi-win64-nightly/opt: SpQJijEJTaWtM93Cb5JhQQ + repackage-l10n-xh-linux-nightly/opt: GZ8UYoYBS6WET3CiMtknLQ + repackage-l10n-xh-linux64-nightly/opt: IDl51PskQV-2Vu8Ax-4j7g + repackage-l10n-xh-macosx64-nightly/opt: OnIF72tQTR-AvO8LIsf6Rg + repackage-l10n-xh-win32-nightly/opt: O__L4JOOQmG7fQiAxUPn1g + repackage-l10n-xh-win64-nightly/opt: HfFRHqcuT86B_kSaXwOdQQ + repackage-l10n-zh-CN-linux-nightly/opt: NLNucfn3QOG6HP-hmZokew + repackage-l10n-zh-CN-linux64-nightly/opt: NIyH_N8lQxG4KBrtI-0C5g + repackage-l10n-zh-CN-macosx64-nightly/opt: KUNwvU8ZTVKVDtx804zCDQ + repackage-l10n-zh-CN-win32-nightly/opt: ZoWfzdicQtuW6Avo8tqkCw + repackage-l10n-zh-CN-win64-nightly/opt: crhHxmCSQd-4JHRZ8w4Fdw + repackage-l10n-zh-TW-linux-nightly/opt: ZdJDq5K1Tu2MW_oU2mDlnA + repackage-l10n-zh-TW-linux64-nightly/opt: HBCE8wT4QAmx7_PzMQC81A + repackage-l10n-zh-TW-macosx64-nightly/opt: ZYBrjx30S2OwzfWJKIzTdw + repackage-l10n-zh-TW-win32-nightly/opt: fUVNVY9ASXWh0jpeQFYWfw + repackage-l10n-zh-TW-win64-nightly/opt: YOiSIDw4S8aYT85CNFs4qA + repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw + repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw + repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg + repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A + repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw + repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg + repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ + repackage-signing-l10n-ach-linux-nightly/opt: fAvC9v-XSLyJcrcpfwqZOw + repackage-signing-l10n-ach-linux64-nightly/opt: Vcv9E2lhSiGG2Cegj8KIew + repackage-signing-l10n-ach-macosx64-nightly/opt: AA89SyuTQLiwKmX489DQxA + repackage-signing-l10n-ach-win32-nightly/opt: EYCn4a0TQnyi2c7yc46ihQ + repackage-signing-l10n-ach-win64-nightly/opt: QS7WN3xeQ12urQGD3osz7w + repackage-signing-l10n-af-linux-nightly/opt: am-JImE0S0-r4C2-Ts37xQ + repackage-signing-l10n-af-linux64-nightly/opt: LVf3uAZ_SgegHwoqqsCwyA + repackage-signing-l10n-af-macosx64-nightly/opt: B4mc2R9YTECcx744jT5ZxA + repackage-signing-l10n-af-win32-nightly/opt: Q60fyODjRJWDkfVGtSGIaQ + repackage-signing-l10n-af-win64-nightly/opt: J4zfRenYQ_Ccvq7Pr4MfPw + repackage-signing-l10n-an-linux-nightly/opt: Ee2Br43vRjGEx-twKoqkVA + repackage-signing-l10n-an-linux64-nightly/opt: JiCbK76xS0KBXFTGM2Ikrg + repackage-signing-l10n-an-macosx64-nightly/opt: HY1J0vxQQvq8dD73IkgLDg + repackage-signing-l10n-an-win32-nightly/opt: LPid3B9tT_q18kCLR2ETuQ + repackage-signing-l10n-an-win64-nightly/opt: KL-EnxJcT8GJFwTkhnGE3g + repackage-signing-l10n-ar-linux-nightly/opt: IsMNN8fYSeuAwaPC-NBjNg + repackage-signing-l10n-ar-linux64-nightly/opt: YdAaaCeESzeOZJZhoU_FMA + repackage-signing-l10n-ar-macosx64-nightly/opt: FIWG4K0eRbmQqA09uzNkeg + repackage-signing-l10n-ar-win32-nightly/opt: c0OH4GtXSf6_a-_L1dmZDw + repackage-signing-l10n-ar-win64-nightly/opt: BLoCiPjISSuUPdCW4YWuhQ + repackage-signing-l10n-as-linux-nightly/opt: YEN4hgMlTwSH_xANAnCjEg + repackage-signing-l10n-as-linux64-nightly/opt: AY5cQf4hQJ2buzFOAKr87w + repackage-signing-l10n-as-macosx64-nightly/opt: P5dzdyn0SVK1vS5ZtG6pQw + repackage-signing-l10n-as-win32-nightly/opt: MSOAHn9VQ8yH2KUIarrDHg + repackage-signing-l10n-as-win64-nightly/opt: E3wSJw5BRnqSiHCWOtFxmw + repackage-signing-l10n-ast-linux-nightly/opt: Tnnfb3z1SDS4wlF8JkN3fA + repackage-signing-l10n-ast-linux64-nightly/opt: BJ-oW97DTXuIHYrtzUtEEQ + repackage-signing-l10n-ast-macosx64-nightly/opt: DdKMOQanTX6zibN387KZ8Q + repackage-signing-l10n-ast-win32-nightly/opt: Tr1FBxJHThaXQQCoYOYH0A + repackage-signing-l10n-ast-win64-nightly/opt: OJBRpZLkS8S_8uc00_7e6w + repackage-signing-l10n-az-linux-nightly/opt: CoA7XOfVQU-1aqtCxLkqfw + repackage-signing-l10n-az-linux64-nightly/opt: EA2HpsZZQ9qS4SGARaT3UA + repackage-signing-l10n-az-macosx64-nightly/opt: Etw7XdNPQU-bP0kmDMxHmQ + repackage-signing-l10n-az-win32-nightly/opt: DTAqU-5YRGScHpN5juWfDA + repackage-signing-l10n-az-win64-nightly/opt: T6BhjVuKRieM25d2Gp6-Ag + repackage-signing-l10n-be-linux-nightly/opt: bG09MC_ZRBeNm4cZDGMCEA + repackage-signing-l10n-be-linux64-nightly/opt: BXJpzNn0Qn2OU_KUM123VA + repackage-signing-l10n-be-macosx64-nightly/opt: AZCO-pbSR467nQBP8fxB1w + repackage-signing-l10n-be-win32-nightly/opt: V9LMRU3jR_6_YyBew8uo2Q + repackage-signing-l10n-be-win64-nightly/opt: UrmTQF0mTfq5LZlI8ntpYQ + repackage-signing-l10n-bg-linux-nightly/opt: EIM5cazgQOiGup2RVXkyTw + repackage-signing-l10n-bg-linux64-nightly/opt: bdiESmd2Tjy93v55aan7Sw + repackage-signing-l10n-bg-macosx64-nightly/opt: BvStobqwT3qZgpufMtiERw + repackage-signing-l10n-bg-win32-nightly/opt: fmn3N2msTuuvBOZ0xxJVuA + repackage-signing-l10n-bg-win64-nightly/opt: MwcrOu9ARumsoVjAa8SlGg + repackage-signing-l10n-bn-BD-linux-nightly/opt: cQ8DXc09QGaUuOR3OCTEVA + repackage-signing-l10n-bn-BD-linux64-nightly/opt: G9w4aKFRQOyqsdwY2Rxjmg + repackage-signing-l10n-bn-BD-macosx64-nightly/opt: SqjfJktvSeGPIFKENqg2hQ + repackage-signing-l10n-bn-BD-win32-nightly/opt: QUb2yI39TimxwOU_aWZsTQ + repackage-signing-l10n-bn-BD-win64-nightly/opt: YSg_a7PlRnmwjWNne90pZw + repackage-signing-l10n-bn-IN-linux-nightly/opt: WhJdTMn2Qc61S1IvTu9Wng + repackage-signing-l10n-bn-IN-linux64-nightly/opt: DeLYDeU4TTSdeCylUJX2lQ + repackage-signing-l10n-bn-IN-macosx64-nightly/opt: DV1Up2k2ROCkQOCvQ5sucQ + repackage-signing-l10n-bn-IN-win32-nightly/opt: ZWX7zun9Q3a8kCFXq_FGvw + repackage-signing-l10n-bn-IN-win64-nightly/opt: U8NFK_lWSUuosP3B0ZbVUA + repackage-signing-l10n-br-linux-nightly/opt: KG0SECCmRVGr1GIb_mseOQ + repackage-signing-l10n-br-linux64-nightly/opt: cIBNTZd_QEC2N6KYobb37A + repackage-signing-l10n-br-macosx64-nightly/opt: fBZp28bkTiG-rr2Nmdj9AA + repackage-signing-l10n-br-win32-nightly/opt: Pr_a2YYUST6y0tRqFKyfng + repackage-signing-l10n-br-win64-nightly/opt: Dp7uF75QTNSOgmm17dtMKg + repackage-signing-l10n-bs-linux-nightly/opt: GIY29le4RiqeaX4G33f6TA + repackage-signing-l10n-bs-linux64-nightly/opt: WgV6jv9yRJuBsxTPPQxd8Q + repackage-signing-l10n-bs-macosx64-nightly/opt: AQ0XYLyqQZmXU1mIFdTqgA + repackage-signing-l10n-bs-win32-nightly/opt: WLwkPj1wSJC1SyB_R4xmoQ + repackage-signing-l10n-bs-win64-nightly/opt: WHiqY6RHQSi8ZMhPvoGZLw + repackage-signing-l10n-ca-linux-nightly/opt: B7ETXAzbSP-pJU43PcsbPg + repackage-signing-l10n-ca-linux64-nightly/opt: ffj7REmzQFuTy5R48N3k5A + repackage-signing-l10n-ca-macosx64-nightly/opt: YQ0WddjLTSylYD-LN_J4Fw + repackage-signing-l10n-ca-win32-nightly/opt: eJZbY0VURN6iQZGvesJOtQ + repackage-signing-l10n-ca-win64-nightly/opt: FBzSCExGT1qGyYbuGznZdw + repackage-signing-l10n-cak-linux-nightly/opt: FECCg6xLQ3mCqifZljkjsA + repackage-signing-l10n-cak-linux64-nightly/opt: HXgAGOoWRWuR7lSDc1Stkg + repackage-signing-l10n-cak-macosx64-nightly/opt: EvIwe9S8SGSb42r4yVcXJA + repackage-signing-l10n-cak-win32-nightly/opt: Vax7C0UCRtGUfn284rqTZw + repackage-signing-l10n-cak-win64-nightly/opt: Q7W_ZDIgS4my0__KkIdycA + repackage-signing-l10n-cs-linux-nightly/opt: bFvM7CqXTXKBKcZePllGKQ + repackage-signing-l10n-cs-linux64-nightly/opt: GGdTDqvISnqKYHQuvxyTqA + repackage-signing-l10n-cs-macosx64-nightly/opt: exBXNztTSEGVluUGAPdUKw + repackage-signing-l10n-cs-win32-nightly/opt: Z_SSTQd9ToyIz7dh7L18_Q + repackage-signing-l10n-cs-win64-nightly/opt: FkT6jPX8R9KsRiN_qjbTvw + repackage-signing-l10n-cy-linux-nightly/opt: WDDoqBpZRx-hs2iIE5f1-A + repackage-signing-l10n-cy-linux64-nightly/opt: LZhIpSpRQVigRYby42F3aA + repackage-signing-l10n-cy-macosx64-nightly/opt: NZIO5NmXSv2rjcd5evXP_w + repackage-signing-l10n-cy-win32-nightly/opt: HKQck4vvR6aXWvrMzo-Mvg + repackage-signing-l10n-cy-win64-nightly/opt: AmVP2IJKS-SwqmCEP2DMeA + repackage-signing-l10n-da-linux-nightly/opt: embDNZtsR3-JZ0RxMvMZ4A + repackage-signing-l10n-da-linux64-nightly/opt: LEi5UmnoTUqTxgd3iIdUXw + repackage-signing-l10n-da-macosx64-nightly/opt: db1XS0qAQZ-HsGbgHc4PcQ + repackage-signing-l10n-da-win32-nightly/opt: VImlIRhBQ02G1Lf39liZXw + repackage-signing-l10n-da-win64-nightly/opt: YpyLBV8YQnS3mCfVa2UPRg + repackage-signing-l10n-de-linux-nightly/opt: OxMz2JgoS9uDmMvJoL_S9g + repackage-signing-l10n-de-linux64-nightly/opt: Bjf09fNwTteVe9HWaQdnlg + repackage-signing-l10n-de-macosx64-nightly/opt: JZ3X8RaXTNycGkgn1qXCiw + repackage-signing-l10n-de-win32-nightly/opt: UyQT6n5XQX-jcvp7SfI8RQ + repackage-signing-l10n-de-win64-nightly/opt: XI-EZLPnTBuFOthiIqEHKg + repackage-signing-l10n-dsb-linux-nightly/opt: cUbgJn7XRlaFkUzkr17FHQ + repackage-signing-l10n-dsb-linux64-nightly/opt: LZLYVtj6TVmmZgN2Z3uYCA + repackage-signing-l10n-dsb-macosx64-nightly/opt: LCO5Qr9HTtWj5P6FGWt9PA + repackage-signing-l10n-dsb-win32-nightly/opt: Kz7qIhSJQZC04Ss5AEvs3Q + repackage-signing-l10n-dsb-win64-nightly/opt: JLN5qdpIQKyEIXdHo7505Q + repackage-signing-l10n-el-linux-nightly/opt: HmjG_VhHQkO5kzkUaNdNRA + repackage-signing-l10n-el-linux64-nightly/opt: ZEfJdp6rRuW07gwNsELLvw + repackage-signing-l10n-el-macosx64-nightly/opt: em9DWRAvQOajAGy-syRAMA + repackage-signing-l10n-el-win32-nightly/opt: Dd0c5MPkRi64jaNdRHKcag + repackage-signing-l10n-el-win64-nightly/opt: MpN5_ySXR7SnEByPHRW7bQ + repackage-signing-l10n-en-CA-linux-nightly/opt: Y1RfVA46Q02RZlZAPcmuYA + repackage-signing-l10n-en-CA-linux64-nightly/opt: VC_Nipc9QpyRmVoCE6uBAg + repackage-signing-l10n-en-CA-macosx64-nightly/opt: de5nIASeRiSYuW9nn4su_g + repackage-signing-l10n-en-CA-win32-nightly/opt: WSusudwCTu2pgDfSpuoYNA + repackage-signing-l10n-en-CA-win64-nightly/opt: MpkzRo1TRL2G1GYNMTLhaA + repackage-signing-l10n-en-GB-linux-nightly/opt: XZrS8CPMQNKmYIIZMuVbAA + repackage-signing-l10n-en-GB-linux64-nightly/opt: Cvyc0ynEQciXutAejjvhQw + repackage-signing-l10n-en-GB-macosx64-nightly/opt: LI0GpvJ8T3S0Xua8xz1ATA + repackage-signing-l10n-en-GB-win32-nightly/opt: XcHCSDXXQCirDnGtGeEJlw + repackage-signing-l10n-en-GB-win64-nightly/opt: M-YRLPY4Q7SoUqCrMKzQFw + repackage-signing-l10n-en-ZA-linux-nightly/opt: eGZ3U8d_SkenPcNQ9M014g + repackage-signing-l10n-en-ZA-linux64-nightly/opt: E3QS042sRQS-CYm-0Rpykg + repackage-signing-l10n-en-ZA-macosx64-nightly/opt: YJEQ0J8wTxuxj1sPui6bjg + repackage-signing-l10n-en-ZA-win32-nightly/opt: PLpJM7lGTWG7gV5vrW-cFQ + repackage-signing-l10n-en-ZA-win64-nightly/opt: B_rzzxB4RpCzlzHlMGQ-iw + repackage-signing-l10n-eo-linux-nightly/opt: CVObj2zmQrSRQMLkuuMfFw + repackage-signing-l10n-eo-linux64-nightly/opt: N6yCt-x5RV2XWKWgNoCBkg + repackage-signing-l10n-eo-macosx64-nightly/opt: SIbU2KqQRFS9IesNFvn_8g + repackage-signing-l10n-eo-win32-nightly/opt: JUQqgb0QTZKaVNIm0Y-DfQ + repackage-signing-l10n-eo-win64-nightly/opt: VpPvf5B_TISpJykd72lE6w + repackage-signing-l10n-es-AR-linux-nightly/opt: QV5OAEc1QLyAo_H5q6Wa3g + repackage-signing-l10n-es-AR-linux64-nightly/opt: M_3_NBgiQCGiVOAJ2FMH4g + repackage-signing-l10n-es-AR-macosx64-nightly/opt: SRdYphzuRoG-8xRashlx8Q + repackage-signing-l10n-es-AR-win32-nightly/opt: Y05ckJtyRIufoiB-MfYm6g + repackage-signing-l10n-es-AR-win64-nightly/opt: URyztnYsSqq437UCCdeaVg + repackage-signing-l10n-es-CL-linux-nightly/opt: awFRPvBJSNC9epBZfMpSqw + repackage-signing-l10n-es-CL-linux64-nightly/opt: b0GI8a7rRuiZKwjHeNN6sw + repackage-signing-l10n-es-CL-macosx64-nightly/opt: NnLRv4iURJiT5WdymzjuVQ + repackage-signing-l10n-es-CL-win32-nightly/opt: Wp1NUM4hTHm2LKYEz-U3SQ + repackage-signing-l10n-es-CL-win64-nightly/opt: QtJWINsKRwCJ8zC1f_HPWw + repackage-signing-l10n-es-ES-linux-nightly/opt: BeiV8Ul2SoKtF7fckfqQPw + repackage-signing-l10n-es-ES-linux64-nightly/opt: WRskua4xQWawGoxS0NcViw + repackage-signing-l10n-es-ES-macosx64-nightly/opt: Jj8e62MXRWmYoKhshNM7_w + repackage-signing-l10n-es-ES-win32-nightly/opt: WJN6IKEkSSybnhWGvOO2Uw + repackage-signing-l10n-es-ES-win64-nightly/opt: SqUjd8tLQyW_gi1Om2ZjSA + repackage-signing-l10n-es-MX-linux-nightly/opt: YNBM3nbYQ5eu3qHW4VSSJQ + repackage-signing-l10n-es-MX-linux64-nightly/opt: VWR-e74tSo6Q4cA8vZY_pQ + repackage-signing-l10n-es-MX-macosx64-nightly/opt: PGxjjAkdRsqsxsbYJxv7kQ + repackage-signing-l10n-es-MX-win32-nightly/opt: VGnjDEE3Qaaqm7jhDO-t6Q + repackage-signing-l10n-es-MX-win64-nightly/opt: OmZSD6U5R-qweT7Uq1ViUA + repackage-signing-l10n-et-linux-nightly/opt: FR6X0YsCTvWC5g_NQcRUfw + repackage-signing-l10n-et-linux64-nightly/opt: bFMIGH9-SceXyaMyFVLnKg + repackage-signing-l10n-et-macosx64-nightly/opt: SjOCZW-eT6qNUX3--D3dpQ + repackage-signing-l10n-et-win32-nightly/opt: P1g6resMTU-f3e_5NE4G4A + repackage-signing-l10n-et-win64-nightly/opt: PNlOhZKnTYCAnKE-t9fUvA + repackage-signing-l10n-eu-linux-nightly/opt: Ur0dWGxKQamf725kzr0rPw + repackage-signing-l10n-eu-linux64-nightly/opt: PiLm411hRcu5uSTaYOPKGA + repackage-signing-l10n-eu-macosx64-nightly/opt: ZffeYcdRTjivgW9y_-fwqA + repackage-signing-l10n-eu-win32-nightly/opt: PZRfXzZbSqq6zTupcqcS1g + repackage-signing-l10n-eu-win64-nightly/opt: KDTOj9jPRneGVTsFFZ_fhQ + repackage-signing-l10n-fa-linux-nightly/opt: EnHWGU5vQHqAoi6CLm5MJA + repackage-signing-l10n-fa-linux64-nightly/opt: EXaPMxJERbG8rLnMj7ThMw + repackage-signing-l10n-fa-macosx64-nightly/opt: ZrDcqkOuSMC8jc86y83wBw + repackage-signing-l10n-fa-win32-nightly/opt: C70bd2c7QeOgl3sUwqajLg + repackage-signing-l10n-fa-win64-nightly/opt: H3gz0-W_S_OE4bDTgxn4aA + repackage-signing-l10n-ff-linux-nightly/opt: aFU5yQ0xQTOG3C6EqA2DnA + repackage-signing-l10n-ff-linux64-nightly/opt: D9LlLSK3Taq6aR7EFa3xJQ + repackage-signing-l10n-ff-macosx64-nightly/opt: ExMqoOc7RfOgynLUhefLvw + repackage-signing-l10n-ff-win32-nightly/opt: FBKUBTZTT6GJ5l76W5Wpqg + repackage-signing-l10n-ff-win64-nightly/opt: TQzZdsF0SDSqcYDcg7VF0Q + repackage-signing-l10n-fi-linux-nightly/opt: Im2MELuDS3ypYY4nhutNGQ + repackage-signing-l10n-fi-linux64-nightly/opt: Ybz5zYAHSICG7i1JEBrI0w + repackage-signing-l10n-fi-macosx64-nightly/opt: XKpTN4_WS56-a5uelNkk8g + repackage-signing-l10n-fi-win32-nightly/opt: FXL9FoFiSgCjJt_piKo3HA + repackage-signing-l10n-fi-win64-nightly/opt: H_n59Q1rRWWl2JrbpRiVPQ + repackage-signing-l10n-fr-linux-nightly/opt: dCsXvhruTiy_VVEGaO_g7Q + repackage-signing-l10n-fr-linux64-nightly/opt: Rf1GF6RSQi24jeXT1sng2A + repackage-signing-l10n-fr-macosx64-nightly/opt: Ov7BC2oGRqa2DN6Z1fqVUw + repackage-signing-l10n-fr-win32-nightly/opt: YvZQM4GbTmaWl2o8BwFNFA + repackage-signing-l10n-fr-win64-nightly/opt: ZcgljIn3RjSX7tzWDh0Wlg + repackage-signing-l10n-fy-NL-linux-nightly/opt: NaYI1w5FRvSYs9mzf69oOQ + repackage-signing-l10n-fy-NL-linux64-nightly/opt: WEGszjqcQraQzOohZHYBVA + repackage-signing-l10n-fy-NL-macosx64-nightly/opt: GXsPEBdfTMecJlY4uzHMfw + repackage-signing-l10n-fy-NL-win32-nightly/opt: WQ6Lc7_AR6ePWC_8OrfFWQ + repackage-signing-l10n-fy-NL-win64-nightly/opt: UnKjsArXSnuycIWOwICk5g + repackage-signing-l10n-ga-IE-linux-nightly/opt: HlanSStoSQisCfYjFJ304g + repackage-signing-l10n-ga-IE-linux64-nightly/opt: emJNUPLuTGiq1P1YsZqSow + repackage-signing-l10n-ga-IE-macosx64-nightly/opt: KB60jyxCRs2SgTuUXxIE7g + repackage-signing-l10n-ga-IE-win32-nightly/opt: cm-Zun5ORkS7nCnG-CF7xQ + repackage-signing-l10n-ga-IE-win64-nightly/opt: Oi8xiCkdTWixeQ83D5XQeQ + repackage-signing-l10n-gd-linux-nightly/opt: H0QhEvPSQQGqlPQ8mF3yiQ + repackage-signing-l10n-gd-linux64-nightly/opt: Vkoj_gZ6Rmm9Sfgj4GE-RQ + repackage-signing-l10n-gd-macosx64-nightly/opt: ZisYh3toT16YOhA_QO4JsQ + repackage-signing-l10n-gd-win32-nightly/opt: aSMT3jnGQkqRliES6VipGA + repackage-signing-l10n-gd-win64-nightly/opt: aD7k8NsBT3iUOntSvK-zyA + repackage-signing-l10n-gl-linux-nightly/opt: Nxl_JpQNQUyF_7XUmAVyag + repackage-signing-l10n-gl-linux64-nightly/opt: RmPK1DHwSCmOpD4NDqgC3g + repackage-signing-l10n-gl-macosx64-nightly/opt: LdAgA4mySNy_jDHSwg7l0Q + repackage-signing-l10n-gl-win32-nightly/opt: WrdPt7TDQI6SnHG0XN5RSA + repackage-signing-l10n-gl-win64-nightly/opt: FDM7nGsjSgCZdtV8zgVm2Q + repackage-signing-l10n-gn-linux-nightly/opt: daoVzRF-QtidceCwo3Ildw + repackage-signing-l10n-gn-linux64-nightly/opt: HTwz9neqS4CLb1ZPsep5nw + repackage-signing-l10n-gn-macosx64-nightly/opt: RMNQJDbGRomnhbrytM8h4w + repackage-signing-l10n-gn-win32-nightly/opt: c7etVvl_SfaNl1G-RahYiQ + repackage-signing-l10n-gn-win64-nightly/opt: N1k023rbRaOdZ7I3s5VUhg + repackage-signing-l10n-gu-IN-linux-nightly/opt: XA3ODce5TpiCL7nszUPHFg + repackage-signing-l10n-gu-IN-linux64-nightly/opt: FtH9c_t2QvijJJD5y81hsg + repackage-signing-l10n-gu-IN-macosx64-nightly/opt: bYgbrsS4QjqDPywcSFbRYQ + repackage-signing-l10n-gu-IN-win32-nightly/opt: Z0mwKLloRzO80Q8Ez4-ijg + repackage-signing-l10n-gu-IN-win64-nightly/opt: OOVftXGjQGut9YSahD72MA + repackage-signing-l10n-he-linux-nightly/opt: YnSRwyf_QF2AZG9mSR2x7w + repackage-signing-l10n-he-linux64-nightly/opt: RaraTuqjRsOrugv-xzcd3Q + repackage-signing-l10n-he-macosx64-nightly/opt: FR28kPGCRu-loL8jpnxzWw + repackage-signing-l10n-he-win32-nightly/opt: OprharuUT3C0Fjv0rPhoLQ + repackage-signing-l10n-he-win64-nightly/opt: avgh6K0JSdSkGlxxt_KZWA + repackage-signing-l10n-hi-IN-linux-nightly/opt: J-M7jKG4QTagxl5ZK0g4yQ + repackage-signing-l10n-hi-IN-linux64-nightly/opt: XMub522mTO6-Xmj0IVIiLQ + repackage-signing-l10n-hi-IN-macosx64-nightly/opt: RrfExwOoRbOwP9Y8e4kDYA + repackage-signing-l10n-hi-IN-win32-nightly/opt: Ehhwq7AnTkOtRxO8Cx6-qg + repackage-signing-l10n-hi-IN-win64-nightly/opt: ctz6JptjRmiw1iuzgVvdDQ + repackage-signing-l10n-hr-linux-nightly/opt: MCiBdnY7R0SmtvnqyuRjiQ + repackage-signing-l10n-hr-linux64-nightly/opt: RODaLKWFQyimVEi8Jr9cTA + repackage-signing-l10n-hr-macosx64-nightly/opt: ZhR3MPSsTT68DtibswW3Vg + repackage-signing-l10n-hr-win32-nightly/opt: FApws6mGR2u2n7Nk6pYk3A + repackage-signing-l10n-hr-win64-nightly/opt: WJv1dE3BRzqSyjNLZ9wlng + repackage-signing-l10n-hsb-linux-nightly/opt: LxSvJJVLTgOPDOVJ__zpMA + repackage-signing-l10n-hsb-linux64-nightly/opt: dmgFcrKZSVmr_hu6tdJFbQ + repackage-signing-l10n-hsb-macosx64-nightly/opt: Sk5VdTY3SPibeHQMrka8cg + repackage-signing-l10n-hsb-win32-nightly/opt: H9gHOd9qRTi1mbsPz06rkQ + repackage-signing-l10n-hsb-win64-nightly/opt: d8S8ciaqRA2BXi-7FrcC2w + repackage-signing-l10n-hu-linux-nightly/opt: FUs1-u4JQcSeUEB294DE8g + repackage-signing-l10n-hu-linux64-nightly/opt: Gs2Aq0oIRpmXhJKH7Wh_ag + repackage-signing-l10n-hu-macosx64-nightly/opt: Ko7ncwVXQueQBeE1nR8djw + repackage-signing-l10n-hu-win32-nightly/opt: Zvv_PpWsRgqT75xQm6HUkQ + repackage-signing-l10n-hu-win64-nightly/opt: NQAZfm7ZQ3Ozon7FKY1SHg + repackage-signing-l10n-hy-AM-linux-nightly/opt: bDFMzBiiTqusE5YoZEeG7Q + repackage-signing-l10n-hy-AM-linux64-nightly/opt: P8ZxpWIjSnWONhSu8hdXaw + repackage-signing-l10n-hy-AM-macosx64-nightly/opt: dMh3GbSXQl2Brg7w5FsQ_Q + repackage-signing-l10n-hy-AM-win32-nightly/opt: c3U4wan4QQCxWhFNkUvMsg + repackage-signing-l10n-hy-AM-win64-nightly/opt: U5XKWNmURee2K-z12INTIQ + repackage-signing-l10n-ia-linux-nightly/opt: fZ-J3BtuQcaGQYSsIUeUsg + repackage-signing-l10n-ia-linux64-nightly/opt: OEc0vEJAQp6xzfads9W7aQ + repackage-signing-l10n-ia-macosx64-nightly/opt: GHKsHFH4RNKK0aUmK-_05Q + repackage-signing-l10n-ia-win32-nightly/opt: MEpxKmvKS2Wmccm2MApy7g + repackage-signing-l10n-ia-win64-nightly/opt: O4LglEFKQWCkFZGydQIEEg + repackage-signing-l10n-id-linux-nightly/opt: EG6zXOfjRie1AEarZqjOTw + repackage-signing-l10n-id-linux64-nightly/opt: FlNqV5sVRV2eInASttHinA + repackage-signing-l10n-id-macosx64-nightly/opt: FE6TGYbMSRSxK0K8R06Fxw + repackage-signing-l10n-id-win32-nightly/opt: IgwsoU7aTy2d_FsSTMpozw + repackage-signing-l10n-id-win64-nightly/opt: MwA-kd-aSoqK0ZIoM2YhMg + repackage-signing-l10n-is-linux-nightly/opt: dUZDBfbmTBq-rG5xhGb5Lg + repackage-signing-l10n-is-linux64-nightly/opt: G37ZmO4GT32gaJbtA-_QZA + repackage-signing-l10n-is-macosx64-nightly/opt: EAdYQypDRK2BTg0aW1uOiQ + repackage-signing-l10n-is-win32-nightly/opt: fysAq2OeS22LTAIXIN9Zuw + repackage-signing-l10n-is-win64-nightly/opt: fu_f5jMIToOI-oPRsoB-0Q + repackage-signing-l10n-it-linux-nightly/opt: GQOCqNOKRc6vwLBd8PjOJA + repackage-signing-l10n-it-linux64-nightly/opt: GF3JJRvtQXeEcSAYq2xG3w + repackage-signing-l10n-it-macosx64-nightly/opt: HhdDHXvRSOqm0Nxuq7_JUQ + repackage-signing-l10n-it-win32-nightly/opt: Y6KQGGPvQVybpo8oMkmiEw + repackage-signing-l10n-it-win64-nightly/opt: Fy3zc0nATdqvxWpfEsnj4w + repackage-signing-l10n-ja-JP-mac-macosx64-nightly/opt: C9PxyYU0TZejPA-zkPtyyQ + repackage-signing-l10n-ja-linux-nightly/opt: YBFw-qXUSdqBScRoUjse5A + repackage-signing-l10n-ja-linux64-nightly/opt: UogzCsibT9i5aq3sIDNgXQ + repackage-signing-l10n-ja-win32-nightly/opt: BROb3yrVR6665AUY3kFGKw + repackage-signing-l10n-ja-win64-nightly/opt: dkPU_BRbQB2z3q7bsLYJpw + repackage-signing-l10n-ka-linux-nightly/opt: IR9A3T3RTHClzxaMFM-9LQ + repackage-signing-l10n-ka-linux64-nightly/opt: cnEq3S7yRCSwInRR7eLAGw + repackage-signing-l10n-ka-macosx64-nightly/opt: R12QoLAaRDyLVM1L6HQTLA + repackage-signing-l10n-ka-win32-nightly/opt: RIIsC0fwQVy4w3ttCMsqyw + repackage-signing-l10n-ka-win64-nightly/opt: aZaHxAtdSoeHjsUIDCuoow + repackage-signing-l10n-kab-linux-nightly/opt: HBrf8xdIQQWdZ3e2SU9xJg + repackage-signing-l10n-kab-linux64-nightly/opt: ElH_7MHaTRyo8nPqJai7YA + repackage-signing-l10n-kab-macosx64-nightly/opt: RdC6ancLTSyH7HCcNWJlEQ + repackage-signing-l10n-kab-win32-nightly/opt: J1xfdHNqQbCLAL4ZtcObrQ + repackage-signing-l10n-kab-win64-nightly/opt: HSjm2HRdQk2Uf1cFBIz7Ag + repackage-signing-l10n-kk-linux-nightly/opt: O4R_hSD0RzSiSPdMoVXXxw + repackage-signing-l10n-kk-linux64-nightly/opt: YGmROL5FT5OI2IZPsQIbmw + repackage-signing-l10n-kk-macosx64-nightly/opt: SOgODyUATyySLB9FROr-_A + repackage-signing-l10n-kk-win32-nightly/opt: NwUgx1BNSoKJVQ2V-b6Deg + repackage-signing-l10n-kk-win64-nightly/opt: Hb9mKZzCS9uqnsQMIMbO5g + repackage-signing-l10n-km-linux-nightly/opt: aJDL1w16RcKL4tsZy96T_w + repackage-signing-l10n-km-linux64-nightly/opt: Fr4n-E_IQ3uV3AWAmFGDAg + repackage-signing-l10n-km-macosx64-nightly/opt: G89rnmgmSVm5_uUvVCk9LA + repackage-signing-l10n-km-win32-nightly/opt: HyL31tMiSeih88t6FR0twA + repackage-signing-l10n-km-win64-nightly/opt: I67Qsyb1RQOGuD_Nx3I39Q + repackage-signing-l10n-kn-linux-nightly/opt: Xvuf79n4R2-9l-nNREzLjg + repackage-signing-l10n-kn-linux64-nightly/opt: dBhHzmYPReufVdMHsy0PMA + repackage-signing-l10n-kn-macosx64-nightly/opt: V5aojOzQTDeXRH-xvwr7vg + repackage-signing-l10n-kn-win32-nightly/opt: bOxK5FMgRnii_WYmu03fHQ + repackage-signing-l10n-kn-win64-nightly/opt: T8tOcuK8TSSZjztG0AICZA + repackage-signing-l10n-ko-linux-nightly/opt: TgHxOUXpQtmVTAfKoJ2dXQ + repackage-signing-l10n-ko-linux64-nightly/opt: I3QCE3X3Sai0WeJVmlrRxw + repackage-signing-l10n-ko-macosx64-nightly/opt: CsOevdopQIKWqcRyZgmnPA + repackage-signing-l10n-ko-win32-nightly/opt: NllCbxDIQvCf8Wh_PrP3Qw + repackage-signing-l10n-ko-win64-nightly/opt: XiIsCmx3RoGYumt4r5eWqQ + repackage-signing-l10n-lij-linux-nightly/opt: cgyD5HpbQuGmSmkSbNaqew + repackage-signing-l10n-lij-linux64-nightly/opt: IVxhNsWeRB-MXusTX4Flfw + repackage-signing-l10n-lij-macosx64-nightly/opt: OIOEaN_rTs-DmhXl8kYgRA + repackage-signing-l10n-lij-win32-nightly/opt: HgjL4yaQSASey25wLeIPZg + repackage-signing-l10n-lij-win64-nightly/opt: Fwh8HMxzRPuIu39mu350sA + repackage-signing-l10n-lt-linux-nightly/opt: JqiPIufKSKOAtTbpy_xVVQ + repackage-signing-l10n-lt-linux64-nightly/opt: LsldhnzvStWK9L5zfGZRwg + repackage-signing-l10n-lt-macosx64-nightly/opt: XYiyiueMRr2qT6rrxqZaWA + repackage-signing-l10n-lt-win32-nightly/opt: c64_384bShGmTegcFeSiJw + repackage-signing-l10n-lt-win64-nightly/opt: Q8EnRWg_SNe6uMR8ay8l4Q + repackage-signing-l10n-lv-linux-nightly/opt: Mp7TIGVlRqyuT56pirDSEw + repackage-signing-l10n-lv-linux64-nightly/opt: Pjgt6wL0RAmhWBoCMefK9Q + repackage-signing-l10n-lv-macosx64-nightly/opt: X0xSuZtpTwyZ0A9LjSdXvw + repackage-signing-l10n-lv-win32-nightly/opt: Cy9Ml8QmSDaEf61EDNT2PQ + repackage-signing-l10n-lv-win64-nightly/opt: ag89pZ48QZK-Nq8c1fNKxg + repackage-signing-l10n-mai-linux-nightly/opt: FoY6yMkHRjWeu6Yf5SrLTA + repackage-signing-l10n-mai-linux64-nightly/opt: SSFTQQBNSsOwH1WIDNBkaA + repackage-signing-l10n-mai-macosx64-nightly/opt: ZWaAw49qRmqx_M_QFrsh5Q + repackage-signing-l10n-mai-win32-nightly/opt: B9QkiVHZQdeGt2Y0yeoOIQ + repackage-signing-l10n-mai-win64-nightly/opt: docw-cfLSbmXISzSemCjfA + repackage-signing-l10n-mk-linux-nightly/opt: E1Lobwu6Qj-TK7vUEBieWQ + repackage-signing-l10n-mk-linux64-nightly/opt: asLQLhdeSnqIfA0poK9XmQ + repackage-signing-l10n-mk-macosx64-nightly/opt: agGtxVazTH2LZLFymhl5pQ + repackage-signing-l10n-mk-win32-nightly/opt: TwCxFBwVR5ms5HTPT8ZWbQ + repackage-signing-l10n-mk-win64-nightly/opt: KotWI6a-T9aJQWDhc-BNLw + repackage-signing-l10n-ml-linux-nightly/opt: eybshgJlThC8PlZninbjIA + repackage-signing-l10n-ml-linux64-nightly/opt: Byf2NlYsT8WclMUd4QBqSA + repackage-signing-l10n-ml-macosx64-nightly/opt: J4Zhgb29QwykOW1IERgB_w + repackage-signing-l10n-ml-win32-nightly/opt: PaS33ty9RrW4FfiEg45RMQ + repackage-signing-l10n-ml-win64-nightly/opt: QukXemWNShCQbAl_wCRnBQ + repackage-signing-l10n-mr-linux-nightly/opt: NlV_mAieSJKnDyz9ndEwbQ + repackage-signing-l10n-mr-linux64-nightly/opt: RuOvEb1VTi-ml6aI-sfYMQ + repackage-signing-l10n-mr-macosx64-nightly/opt: XjOrznhURPW1Y1d3HniA1Q + repackage-signing-l10n-mr-win32-nightly/opt: FiS93983QReWU0yoqCzSjA + repackage-signing-l10n-mr-win64-nightly/opt: Ra6jpjO6SVysSHQQyRKKxw + repackage-signing-l10n-ms-linux-nightly/opt: IkWCAqSATn6KzCiCIO_MQg + repackage-signing-l10n-ms-linux64-nightly/opt: DEhEX_U3SxaZf66XbbGgvQ + repackage-signing-l10n-ms-macosx64-nightly/opt: URhAyN6yQKiUDgiRIgWjmg + repackage-signing-l10n-ms-win32-nightly/opt: UBbEOxtVQ-K3z8-lXB-LAQ + repackage-signing-l10n-ms-win64-nightly/opt: N8PHng_dSgKrnjESg8zcmQ + repackage-signing-l10n-my-linux-nightly/opt: czIstd1zQ5inAy5MDdeUKg + repackage-signing-l10n-my-linux64-nightly/opt: fSZ9mLLOQbWBGt-wS3YKag + repackage-signing-l10n-my-macosx64-nightly/opt: GmNYP5D5T4-ocMuxQMX_HA + repackage-signing-l10n-my-win32-nightly/opt: KDmjFn_NT0Gf829rWCnl-w + repackage-signing-l10n-my-win64-nightly/opt: P2Q6eNOPRpqLXG3izXTaOw + repackage-signing-l10n-nb-NO-linux-nightly/opt: Uz451_GpSZSI-nsyhckHvw + repackage-signing-l10n-nb-NO-linux64-nightly/opt: aLv6kEmRQEumaI8kGqF--Q + repackage-signing-l10n-nb-NO-macosx64-nightly/opt: Uv4gzu0tReirE9Aa4DSQ_Q + repackage-signing-l10n-nb-NO-win32-nightly/opt: YGskM4vPS92AXUu45aK5Pg + repackage-signing-l10n-nb-NO-win64-nightly/opt: KUT6k1J7TV2bzx9Z0PuCug + repackage-signing-l10n-ne-NP-linux-nightly/opt: ToQXXFHCR1KmTIVuwrbm8w + repackage-signing-l10n-ne-NP-linux64-nightly/opt: PE6tUHWtQYKjLxwfnR033g + repackage-signing-l10n-ne-NP-macosx64-nightly/opt: TgjQS8qeRc2L4nzXqrOewg + repackage-signing-l10n-ne-NP-win32-nightly/opt: Ycbh2N3nRJup1fPR_KiN-Q + repackage-signing-l10n-ne-NP-win64-nightly/opt: OPyxr0ngTWCLCLs9KOA7jA + repackage-signing-l10n-nl-linux-nightly/opt: aIfsv17ySvy_zaIzSQYwuQ + repackage-signing-l10n-nl-linux64-nightly/opt: Hm9pHNSWQ-C5LBpDAA1E7g + repackage-signing-l10n-nl-macosx64-nightly/opt: FktJwfyeQ3isilDuTGYnfw + repackage-signing-l10n-nl-win32-nightly/opt: F0WtnMzXTD6U5pzqh9UOjw + repackage-signing-l10n-nl-win64-nightly/opt: GDe6TQImSBijxzKgJfKnkA + repackage-signing-l10n-nn-NO-linux-nightly/opt: BF2TKc91TU-ZVpeEE2tQIw + repackage-signing-l10n-nn-NO-linux64-nightly/opt: VWnaXteHQpmCzstqxSlAGQ + repackage-signing-l10n-nn-NO-macosx64-nightly/opt: LQ6dUVuHSiGHoYFW2aUPxA + repackage-signing-l10n-nn-NO-win32-nightly/opt: U2uAP2SDR9C88tnuODqqyA + repackage-signing-l10n-nn-NO-win64-nightly/opt: Q8ni759hSJqNGGI4Xji9FA + repackage-signing-l10n-oc-linux-nightly/opt: RzLr8Kz1SHOLRO7SXZHBkQ + repackage-signing-l10n-oc-linux64-nightly/opt: BCLHhPfETEm3BwXec23hbg + repackage-signing-l10n-oc-macosx64-nightly/opt: NtDyw74WT6iWrp9jAECTyQ + repackage-signing-l10n-oc-win32-nightly/opt: WTDZqWmOQTq2xWLWpN2EDg + repackage-signing-l10n-oc-win64-nightly/opt: L5qQyYi3TIuZknI_bFdeNQ + repackage-signing-l10n-or-linux-nightly/opt: XWNk5lJ2R4iZsomI3EIR5Q + repackage-signing-l10n-or-linux64-nightly/opt: NVP3TNXgSze8Hhw7Jyk9Lg + repackage-signing-l10n-or-macosx64-nightly/opt: OKMmnNWPQuiwV19oZkRRPg + repackage-signing-l10n-or-win32-nightly/opt: DzWbsKXuQmupdRPwQH-1JQ + repackage-signing-l10n-or-win64-nightly/opt: Pp0kV909SkyT-fzeuiyzrw + repackage-signing-l10n-pa-IN-linux-nightly/opt: Mdon0UCKQJitX6iAJYeyWA + repackage-signing-l10n-pa-IN-linux64-nightly/opt: ZmTqI_SIQeufS3J5e9SpuA + repackage-signing-l10n-pa-IN-macosx64-nightly/opt: G4NtfQxQRYyKqrJFe0iJ3g + repackage-signing-l10n-pa-IN-win32-nightly/opt: ALOeqG8HRwOwLrJ6blERsQ + repackage-signing-l10n-pa-IN-win64-nightly/opt: LEV2YxQiRvubB8L8rTX58Q + repackage-signing-l10n-pl-linux-nightly/opt: J01EqjQgTzSg1nDyit2XCQ + repackage-signing-l10n-pl-linux64-nightly/opt: Z7K1EVzOQsuhoVslGNKpyQ + repackage-signing-l10n-pl-macosx64-nightly/opt: M4CO4ZXZTui_kULw0A5gtw + repackage-signing-l10n-pl-win32-nightly/opt: Lbc1UXP8S02e5ECJOyqhUw + repackage-signing-l10n-pl-win64-nightly/opt: GPukNjHoTGO2xtzlvkUyXg + repackage-signing-l10n-pt-BR-linux-nightly/opt: VCGfn_WgRxCaMYkt2BBWMg + repackage-signing-l10n-pt-BR-linux64-nightly/opt: U5zbN9l6R62HMDzien3yFQ + repackage-signing-l10n-pt-BR-macosx64-nightly/opt: Ce1_BqusQJGgEy50VsI-9w + repackage-signing-l10n-pt-BR-win32-nightly/opt: LSNp0olKRqSh-MfsXMgEoQ + repackage-signing-l10n-pt-BR-win64-nightly/opt: L3KtGwigRumAqHIKffyt8g + repackage-signing-l10n-pt-PT-linux-nightly/opt: MHVhHbpAQ3uFAThZGD87IQ + repackage-signing-l10n-pt-PT-linux64-nightly/opt: cebUSNArTRm_XKysnAlrGQ + repackage-signing-l10n-pt-PT-macosx64-nightly/opt: FqivsVu8TO-IlmcvV4Jx-w + repackage-signing-l10n-pt-PT-win32-nightly/opt: LvdCpEuQTWq4ec-sVo7gXQ + repackage-signing-l10n-pt-PT-win64-nightly/opt: ZgMBksMqRMe_WeWhFWj_qA + repackage-signing-l10n-rm-linux-nightly/opt: BPshY3BXTmSC_aaaMSQpDQ + repackage-signing-l10n-rm-linux64-nightly/opt: PtiYBGGPRXeA82FdLOgiTg + repackage-signing-l10n-rm-macosx64-nightly/opt: HbABCQT1TWSry_IY5xyFqw + repackage-signing-l10n-rm-win32-nightly/opt: e75INMJCRzSlFYIEtc6RTQ + repackage-signing-l10n-rm-win64-nightly/opt: SDD7N3RDRSSDGkuWUtj1ug + repackage-signing-l10n-ro-linux-nightly/opt: BMkD1FdQTV6dKZYjKSZd0Q + repackage-signing-l10n-ro-linux64-nightly/opt: GoVt7km5SrGXatroWD13HA + repackage-signing-l10n-ro-macosx64-nightly/opt: XWuogkFhR4WHNVSMsL1EkA + repackage-signing-l10n-ro-win32-nightly/opt: Vu-GcguRSlm4FvNvAMECmQ + repackage-signing-l10n-ro-win64-nightly/opt: FByAvd_vSl-U_nJFybknIg + repackage-signing-l10n-ru-linux-nightly/opt: dsTYv72eTmaI2t9x1OtKjQ + repackage-signing-l10n-ru-linux64-nightly/opt: OSWy94YKQ1qhmSuh3B9BZA + repackage-signing-l10n-ru-macosx64-nightly/opt: MwFsHXQzRtKuMlDxyxoZaA + repackage-signing-l10n-ru-win32-nightly/opt: fKW6v-JoSNOnXp8bzFgMvA + repackage-signing-l10n-ru-win64-nightly/opt: Z2Ho3ejeQ8CTtO_2eVmnUw + repackage-signing-l10n-si-linux-nightly/opt: PaksFHgeSv2LZYQ0YhVUyw + repackage-signing-l10n-si-linux64-nightly/opt: S4-FC9FTRGeGAotq5_glvg + repackage-signing-l10n-si-macosx64-nightly/opt: G9VFPjEfTESGR3AT_XyHjA + repackage-signing-l10n-si-win32-nightly/opt: OnY6eoabT8eIp5Row3r9ig + repackage-signing-l10n-si-win64-nightly/opt: Cl7o0DCPSSq7kYBhDkkuyg + repackage-signing-l10n-sk-linux-nightly/opt: IlMxj92ZTJO3LE902Zh4Og + repackage-signing-l10n-sk-linux64-nightly/opt: FG4SfiAiRVef4pqv68rxrw + repackage-signing-l10n-sk-macosx64-nightly/opt: b-j1KNGMSE-Y70SoxIYdyQ + repackage-signing-l10n-sk-win32-nightly/opt: ZuXtme5kTLi5a_oJ6Lq9tg + repackage-signing-l10n-sk-win64-nightly/opt: ORLqNhKZTVmcIbGRJufb-Q + repackage-signing-l10n-sl-linux-nightly/opt: UZImpl0sRcSjiQ3jB0Ha3w + repackage-signing-l10n-sl-linux64-nightly/opt: CB0gqr-FTLiLwIFfYeq4TA + repackage-signing-l10n-sl-macosx64-nightly/opt: KKgxkMk9Rfi0RmSdjgfH1Q + repackage-signing-l10n-sl-win32-nightly/opt: cRthbStnSsysXqmuYIHbcw + repackage-signing-l10n-sl-win64-nightly/opt: BcdA2qP6TF2B5P5aV7OgDg + repackage-signing-l10n-son-linux-nightly/opt: e4iMtl1TQkakm83goL1tfQ + repackage-signing-l10n-son-linux64-nightly/opt: Pd58HHvJS2O4G0486Kqd7Q + repackage-signing-l10n-son-macosx64-nightly/opt: Aug81CVyQIyQQAHXvUZPpA + repackage-signing-l10n-son-win32-nightly/opt: aC-ve3ZUQkiPz_hwpJaboA + repackage-signing-l10n-son-win64-nightly/opt: RI-9o39QRfCRR8szkUlfVg + repackage-signing-l10n-sq-linux-nightly/opt: MLx3FTboTviFaqk1cw-jLQ + repackage-signing-l10n-sq-linux64-nightly/opt: HAcbdb_qSkm0hRJ8BnG1sQ + repackage-signing-l10n-sq-macosx64-nightly/opt: dqdQNHXXRxuVLGIKkxJLkw + repackage-signing-l10n-sq-win32-nightly/opt: XuEGjvNGSqiGPcM-DDE6dg + repackage-signing-l10n-sq-win64-nightly/opt: fbM3JchbRUmJw2dIZTXpxA + repackage-signing-l10n-sr-linux-nightly/opt: IQserNFITOyzXGKqhIXr3g + repackage-signing-l10n-sr-linux64-nightly/opt: RaNHvZ9TRTOOvZEo5N0orw + repackage-signing-l10n-sr-macosx64-nightly/opt: er_hc5gWSYq_DGbTLoSl4A + repackage-signing-l10n-sr-win32-nightly/opt: EPwJGLqjScyFPTy5M4PWSg + repackage-signing-l10n-sr-win64-nightly/opt: CgVXhU0pSOuZs0Cw4xYF-A + repackage-signing-l10n-sv-SE-linux-nightly/opt: Qj23vdxRTJ6H9Wj5jE3H7g + repackage-signing-l10n-sv-SE-linux64-nightly/opt: JQHXtHaMR_G3LgvO_vXnyA + repackage-signing-l10n-sv-SE-macosx64-nightly/opt: aexDsKYfRkuy_m54BJGJjQ + repackage-signing-l10n-sv-SE-win32-nightly/opt: fGQWB7TBRzWAYrTxCwGu9g + repackage-signing-l10n-sv-SE-win64-nightly/opt: aON70cR-QaSDFr8NZbo2LQ + repackage-signing-l10n-ta-linux-nightly/opt: VwwL-qsQTHWaNNxQoM5tGw + repackage-signing-l10n-ta-linux64-nightly/opt: OohKPshiT4WalOOF5HmNoQ + repackage-signing-l10n-ta-macosx64-nightly/opt: e18y95xwRNmG7m3O69I1OA + repackage-signing-l10n-ta-win32-nightly/opt: fCbrPmsKQ-25D4xgWyxgAw + repackage-signing-l10n-ta-win64-nightly/opt: QbNe3s1DR9aGOK8yc8WSCw + repackage-signing-l10n-te-linux-nightly/opt: ONIGk6PsRfKA2VA3pXBwZg + repackage-signing-l10n-te-linux64-nightly/opt: EpI_Vuz_Rcyyq0Rb6kFF5w + repackage-signing-l10n-te-macosx64-nightly/opt: IaTXFijUQNiZkCVHc3f_Tw + repackage-signing-l10n-te-win32-nightly/opt: a2fPHiHzTwCEU4wSRYclVQ + repackage-signing-l10n-te-win64-nightly/opt: MF5AajKMSRylw6phV7WE1g + repackage-signing-l10n-th-linux-nightly/opt: P3X9HvNmRja_ZYc8gtqg1Q + repackage-signing-l10n-th-linux64-nightly/opt: ffihSgezS9-ISkssvI2iew + repackage-signing-l10n-th-macosx64-nightly/opt: MPsEEWgKTo-zS-o4sxpG4Q + repackage-signing-l10n-th-win32-nightly/opt: K2qf3zKPQ1mdapLK5_DAbw + repackage-signing-l10n-th-win64-nightly/opt: CyC0JD95TXm26806U27b1A + repackage-signing-l10n-tr-linux-nightly/opt: HR9Fl2LGRa-0W_P24T6fRw + repackage-signing-l10n-tr-linux64-nightly/opt: SD13YpX3TUG3Lw1gsjb8zQ + repackage-signing-l10n-tr-macosx64-nightly/opt: QUb0MdbkTpyahsH1slF-DQ + repackage-signing-l10n-tr-win32-nightly/opt: VpUaHXCETO-DOW3Y-vkNyg + repackage-signing-l10n-tr-win64-nightly/opt: dLHPdVp7QmCU-jKlqZd3Hg + repackage-signing-l10n-uk-linux-nightly/opt: V2vDmIK-S8GgjSXMR6YbzQ + repackage-signing-l10n-uk-linux64-nightly/opt: Dav8-GQHTqiFV3aSZ9sMCg + repackage-signing-l10n-uk-macosx64-nightly/opt: Lnvq6TVoQA63u_aLCQ93zw + repackage-signing-l10n-uk-win32-nightly/opt: TEqTzmZUQbi1W6tVkloVsA + repackage-signing-l10n-uk-win64-nightly/opt: Ash05TvXQCqBgdx19un9gw + repackage-signing-l10n-ur-linux-nightly/opt: OvpD5KfFSF-qpk4m4aLmoA + repackage-signing-l10n-ur-linux64-nightly/opt: DUgCh61WSvy0DGFfHSkhLw + repackage-signing-l10n-ur-macosx64-nightly/opt: SlvzjZlsQgm_LvXCVVnUxw + repackage-signing-l10n-ur-win32-nightly/opt: VirVsGi2RKq128rWrvqqcA + repackage-signing-l10n-ur-win64-nightly/opt: KZE9oP_ARECt_pU9Q2pSyQ + repackage-signing-l10n-uz-linux-nightly/opt: NHaDTIGWQZqeUE1LrRaQDg + repackage-signing-l10n-uz-linux64-nightly/opt: Kq9XVvc_RwW0NetwehWDBg + repackage-signing-l10n-uz-macosx64-nightly/opt: ZfTiJQksTmyoXl0vDB8blg + repackage-signing-l10n-uz-win32-nightly/opt: SsNjefr8RJqViE_dbyFYdA + repackage-signing-l10n-uz-win64-nightly/opt: HCOlO3s-QOGysmnC48Q9UQ + repackage-signing-l10n-vi-linux-nightly/opt: N4-T5TruSzG5q3EcRglUCg + repackage-signing-l10n-vi-linux64-nightly/opt: fhUonR6GRkCwQgbCcbDH3w + repackage-signing-l10n-vi-macosx64-nightly/opt: Q3SD4lTZTzami965wJCO5Q + repackage-signing-l10n-vi-win32-nightly/opt: NRX5qZWrR_2KxjGXD0VGEQ + repackage-signing-l10n-vi-win64-nightly/opt: OpcvBdhZSoGBemViPKcJ1A + repackage-signing-l10n-xh-linux-nightly/opt: UN4MADOSTMqaox1_H0_a8A + repackage-signing-l10n-xh-linux64-nightly/opt: JtzE-iVGRJSwGhPNad3odg + repackage-signing-l10n-xh-macosx64-nightly/opt: AmKafOKCQOaw9PqKVXohKg + repackage-signing-l10n-xh-win32-nightly/opt: CXwPEeK3TUqt0fd3cd409g + repackage-signing-l10n-xh-win64-nightly/opt: dEVC2BDgTAy8-fYNk6yM9w + repackage-signing-l10n-zh-CN-linux-nightly/opt: WKcWbFPQQIy3twadRiIqdQ + repackage-signing-l10n-zh-CN-linux64-nightly/opt: SP56bmc3TuCvKDj7h4DMmA + repackage-signing-l10n-zh-CN-macosx64-nightly/opt: OjpGG6IlR7mU12jE_gVg7A + repackage-signing-l10n-zh-CN-win32-nightly/opt: b8ZMM5XfQkqusBjZTdjLCg + repackage-signing-l10n-zh-CN-win64-nightly/opt: G8tCfMYORW2qfTQ06aDt0Q + repackage-signing-l10n-zh-TW-linux-nightly/opt: LXr2D7loStyP0BYA3tdw4w + repackage-signing-l10n-zh-TW-linux64-nightly/opt: eI9lnZGWRGekEfmfOACYaQ + repackage-signing-l10n-zh-TW-macosx64-nightly/opt: E012hTBQSeOGE0eLxkGXXA + repackage-signing-l10n-zh-TW-win32-nightly/opt: SOqmmY0RSKm4_siOzGkfiQ + repackage-signing-l10n-zh-TW-win64-nightly/opt: Kg9aPh0-SbGebCvimwkobA + repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA + repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w + repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g + repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg + repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA + repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg + repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ + repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ + repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg + repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw + repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng + repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ + repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ + repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew + repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA + repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA + repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg + repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g + sign-and-push-langpacks-build-linux64-nightly/opt: eaD9V5rGTPWzcuSEZ3bLPA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-1/opt: a24KhywDQ6mh9QU4UDk4Rg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-10/opt: fFqVBOrCTkipeq5M8TtSAw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-11/opt: cKQHrbwFSqqpkz416tWVaw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-12/opt: Gn_npyL0Qf2QU4Xhg839qQ + sign-and-push-langpacks-nightly-l10n-linux64-nightly-13/opt: cimO5c1EQeu4KwyYCZqJwA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-14/opt: Khtkrd61SUSkPgRk4ZQ4yA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-15/opt: CJtVogO-Qfq8ChnctKfn9Q + sign-and-push-langpacks-nightly-l10n-linux64-nightly-16/opt: R2BR6es_SxKvWYPccHiv6Q + sign-and-push-langpacks-nightly-l10n-linux64-nightly-17/opt: F4N2Sp4QT4y5fqMlYOCxOw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-18/opt: AZNVXcQIRMy4FlhnjzV2wg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-19/opt: J_VsRHwTQ5qynYWQSFIYKA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-2/opt: eTj_XfimQGKOz5fmoRSGPA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-20/opt: HdsfXxN4Rg2-tQnQaJDJKQ + sign-and-push-langpacks-nightly-l10n-linux64-nightly-3/opt: Uk8sjpwhStq4lN9ggzH2ug + sign-and-push-langpacks-nightly-l10n-linux64-nightly-4/opt: HI35ki7VRzelLpUkeGU_Ww + sign-and-push-langpacks-nightly-l10n-linux64-nightly-5/opt: NCk4vTypQ6SKbfCdZckSAg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-6/opt: Wktbx4SfQOeokiqZ9vr7LA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-7/opt: PUC6Jc87QXGdbLJ9TlUpiw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-8/opt: Nw7kDGAfTd6fFSELoqE91w + sign-and-push-langpacks-nightly-l10n-linux64-nightly-9/opt: C8P_CfWoSVGZe22KodyEYw + sign-and-push-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: BM2fI2BeTFehU3TZVqbM8g + source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA + source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA + source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A + static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ + static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ + static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ + static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg + static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g + static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A + test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A + test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ + test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A + test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA + test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA + test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA + test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog + test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A + test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg + test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w + test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ + test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA + test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ + test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw + test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ + test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w + test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A + test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg + test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA + test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA + test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g + test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow + test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ + test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q + test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ + test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w + test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ + test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w + test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA + test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA + test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q + test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA + test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw + test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA + test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA + test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA + test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig + test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw + test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw + test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA + test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ + test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g + test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw + test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA + test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA + test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ + test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw + test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw + test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow + test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA + test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw + test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w + test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg + test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig + test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw + test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA + test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg + test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA + test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg + test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA + test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q + test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA + test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg + test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw + test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA + test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ + test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw + test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg + test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg + test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ + test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g + test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g + test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg + test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A + test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew + test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw + test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ + test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg + test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg + test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg + test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A + test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA + test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ + test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw + test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg + test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw + test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg + test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg + test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA + test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg + test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg + test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA + test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ + test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA + test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag + test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg + test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg + test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg + test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q + test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg + test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw + test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw + test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q + test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA + test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q + test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg + test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ + test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A + test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw + test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg + test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g + test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA + test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg + test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA + test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw + test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg + test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w + test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q + test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA + test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw + test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA + test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA + test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A + test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw + test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA + test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g + test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ + test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ + test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg + test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw + test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw + test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA + test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg + test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg + test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg + test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ + test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw + test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw + test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg + test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw + test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw + test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw + test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w + test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA + test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA + test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ + test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg + test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA + test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ + test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA + test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ + test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A + test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A + test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g + test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg + test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg + test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ + test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ + test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw + test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg + test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew + test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg + test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA + test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw + test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg + test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg + test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug + test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q + test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ + test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ + test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q + test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q + test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw + test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA + test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA + test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw + test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg + test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA + test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w + test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw + test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw + test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA + test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ + test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg + test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA + test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g + test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA + test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ + test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw + test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w + test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g + test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA + test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg + test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg + test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA + test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg + test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig + test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ + test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A + test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ + test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA + test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA + test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg + test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow + test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww + test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA + test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ + test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug + test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ + test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw + test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw + test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg + test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg + test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A + test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw + test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA + test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ + test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA + test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g + test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw + test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ + test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg + test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg + test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g + test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw + test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A + test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A + test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A + test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ + test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ + test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ + test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ + test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg + test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA + test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw + test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w + test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ + test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ + test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw + test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ + test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA + test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q + test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw + test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww + test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA + test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw + test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw + test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ + test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q + test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg + test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ + test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q + test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA + test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ + test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA + test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw + test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ + test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A + test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw + test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA + test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ + test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg + test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA + test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g + test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg + test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig + test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA + test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg + test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ + test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw + test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w + test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q + test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ + test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg + test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ + test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ + test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg + test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ + test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA + test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg + test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw + test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w + test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg + test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg + test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg + test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ + test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q + test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow + test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A + test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw + test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw + test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw + test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg + test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ + test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ + test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ + test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA + test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ + test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw + test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA + test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg + test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw + test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw + test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA + test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ + test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ + test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q + test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g + test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ + test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw + test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw + test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A + test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ + test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA + test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA + test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w + test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw + test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg + test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw + test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw + test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w + test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q + test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A + test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ + test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA + test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A + test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg + test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q + test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw + test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA + test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ + test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg + test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA + test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ + test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA + test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg + test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ + test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw + test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw + test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA + test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ + test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg + test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw + test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig + test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA + test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A + test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q + test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ + test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q + test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ + test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg + test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg + test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g + test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw + test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ + test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A + test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g + test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg + test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA + test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ + test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ + test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A + test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug + test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw + test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw + test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A + test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA + test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ + test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw + test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw + test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw + test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ + test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w + test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg + test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g + test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg + test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA + test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A + test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w + test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA + test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg + test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg + test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ + test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA + test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA + test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g + test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg + test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw + test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg + test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw + test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw + test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA + test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A + test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ + test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g + test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A + test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q + test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg + test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA + test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg + test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g + test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw + test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg + test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g + test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg + test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA + test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg + test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ + test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA + test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg + test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ + test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ + test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA + test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A + test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w + test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg + test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ + test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA + test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag + test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ + test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA + test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ + test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ + test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q + test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg + test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA + test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw + test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA + test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw + test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g + test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg + test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w + test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA + test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w + test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw + test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ + test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw + test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw + test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q + test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg + test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A + test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ + test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag + test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg + test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg + test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ + test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q + test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g + test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA + test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ + test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg + test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw + test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q + test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA + test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg + test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw + test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A + test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg + test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog + test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw + test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ + test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA + test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw + test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA + test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ + test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw + test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw + test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw + test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA + test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog + test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA + test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA + test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw + test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w + test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w + test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ + test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw + test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ + test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ + test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA + test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A + test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw + test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw + test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw + test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A + test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w + test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g + test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q + test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg + test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg + test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA + test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag + test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA + test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA + test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q + test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w + test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ + test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg + test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q + test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA + test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg + test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw + test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A + test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q + test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ + test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA + test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw + test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw + test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw + test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ + test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ + test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA + test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ + test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA + test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g + test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g + test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw + test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw + test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw + test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w + test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA + test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg + test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ + test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ + test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ + test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw + test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA + test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg + test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w + test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg + test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ + test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw + test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ + test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg + test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA + test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ + test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg + test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA + test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g + test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw + test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ + test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw + test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw + test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg + test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw + test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw + test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A + test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A + test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ + test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg + test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg + test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw + test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg + test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA + test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow + test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ + test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g + test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA + test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA + test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw + test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg + test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg + test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ + test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw + test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A + test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ + test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg + test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw + test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw + test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ + test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ + test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA + test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA + test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g + test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA + test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg + test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA + test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ + test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw + test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A + test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg + test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag + test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw + test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw + test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ + test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q + test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg + test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA + test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g + test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw + test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA + test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g + test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg + test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw + test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA + test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w + test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw + test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA + test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw + test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ + test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ + test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ + test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA + test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg + test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg + test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A + test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A + test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg + test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw + test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w + test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g + test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ + test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA + test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A + test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA + test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw + test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA + test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA + test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A + test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w + test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw + test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA + test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg + test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA + test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q + test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w + test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q + test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA + test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw + test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg + test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug + test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g + test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw + test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg + test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w + test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw + test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg + test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg + test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA + test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ + test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg + test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA + test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ + test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw + test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg + test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w + test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw + test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w + test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg + test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q + test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA + test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw + test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ + test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q + test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg + test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ + test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA + test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw + test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA + test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ + test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw + test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ + test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q + test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA + test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ + test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ + test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw + test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA + test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ + test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A + test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw + test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ + test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg + test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw + test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg + test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg + test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ + test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ + test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ + test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg + test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA + test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A + test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ + test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w + test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw + test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg + test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg + test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ + test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw + test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA + test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A + test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg + test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w + test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw + test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw + test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw + test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ + test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q + test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w + test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg + test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA + test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ + test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg + test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ + test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ + test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA + test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ + test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw + test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w + test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA + test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg + test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw + test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw + test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ + test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw + test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w + test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g + test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg + test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA + test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA + test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA + test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA + test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng + test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw + test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg + test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw + test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow + test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ + test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A + test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg + test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw + test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q + test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw + test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA + test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw + test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ + test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw + test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw + test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q + test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ + test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw + test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w + test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g + test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw + test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg + test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA + test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A + test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ + test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA + test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA + test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w + test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA + test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA + test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg + test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g + test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog + test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew + test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg + test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw + test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w + test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g + test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug + test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw + test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w + test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ + test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w + test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA + test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ + test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ + test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q + test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q + test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA + test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ + test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw + test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg + test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w + test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ + test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg + test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw + test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ + test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw + test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA + test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw + test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q + test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA + test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw + test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA + test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g + test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q + test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA + test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng + test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA + test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ + test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg + test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ + test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg + test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ + test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw + test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ + test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ + test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ + test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg + test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw + test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg + test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw + test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g + test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg + test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g + test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ + test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA + test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg + test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg + test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg + test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ + test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg + test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ + test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw + test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw + test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g + test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA + test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg + test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA + test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg + test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA + test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q + test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ + test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw + test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA + test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA + test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ + test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q + test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w + test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug + test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw + test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ + test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ + test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg + test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw + test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg + test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ + test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w + test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g + test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg + test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ + test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA + test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig + test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ + test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg + test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw + test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg + test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A + test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ + test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A + test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg + test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg + test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA + test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw + test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g + test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q + test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A + test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg + test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ + test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og + test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg + test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA + test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA + test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w + test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA + test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw + test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w + test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ + test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw + test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow + test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ + test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA + test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw + test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ + test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ + test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw + test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g + test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg + test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw + test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A + test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw + test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA + test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ + test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ + test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ + test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A + test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ + test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g + test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA + test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ + test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog + test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q + test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ + test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg + test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q + test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw + test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA + test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ + test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw + test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg + test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA + test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw + test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ + test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ + test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q + test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw + test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ + test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w + test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg + test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw + test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA + test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw + test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ + test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w + test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g + test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew + test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA + test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q + test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ + test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA + test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg + test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug + test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA + test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg + test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ + test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA + test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ + test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg + test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg + test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w + test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA + test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA + test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA + test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q + test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ + test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ + test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA + test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ + test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g + test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA + test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ + test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw + test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw + test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A + test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ + test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA + test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw + test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw + test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ + test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w + test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA + test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ + test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw + test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg + test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw + test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA + test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA + test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q + test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q + test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg + test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA + test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A + test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg + test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A + test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ + test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q + test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w + test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw + test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA + test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw + test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ + test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ + test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ + test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w + test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w + test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ + test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ + test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg + test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw + test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ + test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ + test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w + test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg + test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA + test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA + test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ + test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg + test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA + test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA + test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA + test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ + test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ + test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA + test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ + test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA + test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw + test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg + test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw + test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA + test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw + test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA + test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A + test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg + test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA + test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg + test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA + test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w + test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw + test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA + test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA + test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA + test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA + test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ + test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA + test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw + test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw + test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg + test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ + test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ + test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA + test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA + test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ + test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA + test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg + test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg + test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w + test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA + test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg + test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw + test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw + test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ + test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g + test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw + test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA + test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA + test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw + test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg + test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg + test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q + test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg + test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q + test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A + test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw + test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q + test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw + test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg + test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A + test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA + test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q + test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg + test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA + test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og + test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg + test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ + test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw + test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg + test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg + test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA + test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q + test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA + test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg + test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ + test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw + test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA + test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q + test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg + test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w + test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA + test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ + test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w + test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A + test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg + test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg + test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg + test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q + test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw + test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg + test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw + test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA + test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg + test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg + test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ + test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg + test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg + test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w + test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw + test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA + test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w + test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw + test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q + test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA + test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ + test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg + test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ + test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg + test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g + test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g + test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w + test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw + test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw + test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g + test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw + test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw + test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg + test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ + test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A + test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg + test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ + test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw + test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw + test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw + test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g + test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ + test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA + test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw + test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw + test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww + test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w + test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A + test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA + test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg + test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg + test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg + test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA + test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg + test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw + test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw + test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ + test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA + test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA + test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA + test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A + test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w + test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA + test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA + test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA + test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ + test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw + test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ + test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ + test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q + test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA + test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw + test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA + test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw + test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg + test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg + test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg + test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog + test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ + test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A + test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg + test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng + test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA + test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA + test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw + test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw + test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg + test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw + test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg + test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw + test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw + test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA + test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA + test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw + test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg + test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ + test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw + test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg + test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w + test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA + test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ + test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA + test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ + test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA + test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q + test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q + test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw + test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ + test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg + test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ + test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ + test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA + test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA + test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg + test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ + test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw + test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA + test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w + test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA + test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA + test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw + test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ + test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA + test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ + test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A + test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw + test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ + test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ + test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA + test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw + test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ + test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA + test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng + test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg + test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg + test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw + test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw + test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g + test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA + test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg + test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA + test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew + test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA + test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ + test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ + test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ + test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng + test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q + test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA + test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw + test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ + test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g + test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw + test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag + test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw + test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ + test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w + test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ + test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w + test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ + test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg + test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ + test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg + test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA + test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w + test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw + test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA + test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA + test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA + test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA + test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A + test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA + test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q + test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g + test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA + test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ + test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A + test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA + test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ + test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw + test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w + test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw + test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg + test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A + test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA + test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw + test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A + test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ + test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q + test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg + test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q + test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA + test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw + test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg + test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA + test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg + test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA + test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ + test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw + test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q + test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA + test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ + test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA + test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw + test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew + test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ + test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w + test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw + test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q + test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA + test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g + test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg + test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ + test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ + test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg + test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg + test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg + test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA + test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg + test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA + test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g + test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg + test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g + test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg + test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg + test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw + test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw + test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA + test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ + test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA + test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ + test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA + test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA + test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA + test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q + test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ + test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA + test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q + test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw + test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw + test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg + test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ + test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA + test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q + test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw + test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg + test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ + test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg + test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ + test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA + test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg + test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w + test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ + test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g + test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg + test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA + test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w + test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw + test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w + test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg + test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw + test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g + test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w + test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw + test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ + test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q + test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w + test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ + test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A + test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w + test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg + test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ + test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q + test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg + test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g + test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ + test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg + test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ + test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg + test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg + test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw + test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig + test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ + test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q + test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg + test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg + test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w + test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg + test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og + toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w + toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw + toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA + toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ + toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA + toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw + toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA + toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA + toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q + toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w + toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw + toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw + toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA + toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ + toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w + toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg + toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ + toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w + toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw + toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ + toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw + toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ + toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w + toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA + toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ + toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA + toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw + toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA + toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA + toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg + toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg + toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ + toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A + toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA + toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg + upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg + upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg + upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA + upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA + upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA + upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg + upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ + upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA + upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA + upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w + valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg +filters: + - target_tasks_method +head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91 +hg_branch: default +level: "3" +message: " " +moz_build_date: "20181011200118" +next_version: 63.0b15 +optimize_target_tasks: true +owner: ryanvm@gmail.com +project: mozilla-beta +pushdate: 1539288078 +pushlog_id: "9972" +release_enable_emefree: true +release_enable_partners: true +release_eta: null +release_history: + Darwin_x86_64-gcc3-u-i386-x86_64: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja-JP-mac: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86_64-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86_64-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox +release_partner_build_number: 1 +release_partner_config: + release-eme-free-repack: + mozilla-EME-free: + mozilla-EME-free: + locales: + - ach + - af + - an + - ar + - as + - ast + - az + - be + - bg + - bn-BD + - bn-IN + - br + - bs + - ca + - cak + - cs + - cy + - da + - de + - dsb + - el + - en-GB + - en-US + - en-ZA + - eo + - es-AR + - es-CL + - es-ES + - es-MX + - et + - eu + - fa + - ff + - fi + - fr + - fy-NL + - ga-IE + - gd + - gl + - gn + - gu-IN + - he + - hi-IN + - hr + - hsb + - hu + - hy-AM + - id + - is + - it + - ja + - ja-JP-mac + - ka + - kab + - kk + - km + - kn + - ko + - lij + - lt + - lv + - mai + - mk + - ml + - mr + - ms + - my + - nb-NO + - nl + - nn-NO + - or + - pa-IN + - pl + - pt-BR + - pt-PT + - rm + - ro + - ru + - si + - sk + - sl + - son + - sq + - sr + - sv-SE + - ta + - te + - th + - tr + - uk + - ur + - uz + - vi + - xh + - zh-CN + - zh-TW + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + release-partner-repack: + acer: + acer-002: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + aol: + aol: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_de: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_desktop: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_huffington: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_uk: + locales: + - en-GB + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + chipde: + chipde: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-003: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-004: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-005: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-006: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-007: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-008: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-control: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + firefox: + firefox-election-edition: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake: + funnelcake134: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake137: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource: + ironsource-google: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-google-aura: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo-aura: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yandex: + locales: + - en-US + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mailru: + mailru: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + okru: + locales: + - az + - en-US + - hy-AM + - kk + - ro + - ru + - tr + - uk + - uz + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mozillaonline: + baidu: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + kingsoft: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + mainOther: + locales: + - en-US + - zh-CN + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + upload_to_candidates: "true" + mainWinFull: + locales: + - en-US + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mainWinStubFallback: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + others: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qihoo: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + tencent: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + xbsafe: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + zol: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + ntt: + ntt: + locales: + - en-US + - ja + - ja-JP-mac + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + playanext: + playanext-wt: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - it + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + playanext-wt-us: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qwant: + qwant-001: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + qwant-002: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + seznam: + seznam: + locales: + - cs + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + softonic: + softonic: + locales: + - de + - en-US + - es-ES + - fr + - it + - pl + - pt-BR + - ru + platforms: + - win32-shippable + - win64-shippable + sweetlabs: + sweetlabs-b-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + toshiba: + toshiba-001-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-001-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-b2b-JP: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-B-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-download-US: + locales: + - en-US + platforms: + - win32-shippable + unitedinternet: + 1und1: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + 1und1_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + wildtangent: + wildtangent: + locales: + - en-US + platforms: + - win32-shippable + upload_to_candidates: "true" + yandex: + yandex-drp: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-planB: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-portals: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru-mz: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-gezginler: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-tamindir: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ua: + locales: + - ru + - uk + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable +release_partners: null +release_product: firefox +release_type: "beta" +target_tasks_method: push_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 63.0b14 +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/mb-push-firefox.yml b/taskcluster/test/params/mb-push-firefox.yml new file mode 100644 index 0000000000..84e8b3be7c --- /dev/null +++ b/taskcluster/test/params/mb-push-firefox.yml @@ -0,0 +1,110 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b3 +version: 60.0b3 +next_version: 60.0b4 +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: push_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/mb-ship-devedition.yml b/taskcluster/test/params/mb-ship-devedition.yml new file mode 100644 index 0000000000..a1f1e29f1c --- /dev/null +++ b/taskcluster/test/params/mb-ship-devedition.yml @@ -0,0 +1,42 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b1 +version: 60.0b1 +next_version: 60.0b2 +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +# target_task_labels: [] +target_tasks_method: ship_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: devedition +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-ship-firefox-partials.yml b/taskcluster/test/params/mb-ship-firefox-partials.yml new file mode 100644 index 0000000000..10f8246683 --- /dev/null +++ b/taskcluster/test/params/mb-ship-firefox-partials.yml @@ -0,0 +1,19471 @@ +--- +app_version: "63.0" +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1539288078 +build_number: 1 +do_not_optimize: [] +existing_tasks: + balrog-ach-linux-nightly/opt: LNu8vTKaTkKUatSKqg53NA + balrog-ach-linux64-nightly/opt: H83upk1ETAyGy8uE9ayNvw + balrog-ach-macosx64-nightly/opt: EqWdtWjrQ3WLtXaRdCcK0Q + balrog-ach-win32-nightly/opt: J_4r79LoQ6e3Zi3jhHxDtw + balrog-ach-win64-nightly/opt: Paz-PNUPRe-yyUVHIAMaXA + balrog-af-linux-nightly/opt: AKSL7IXKSSCsC2wN0jkLmA + balrog-af-linux64-nightly/opt: FSxFwou4RQeY9gr8jdp_3w + balrog-af-macosx64-nightly/opt: Vyf1IDm1RomRG1w5kM5hgQ + balrog-af-win32-nightly/opt: XDT728xmSQ64Eesq22G4pA + balrog-af-win64-nightly/opt: Q-z62n9CSSOsKR8sE9Iz1w + balrog-an-linux-nightly/opt: f0VD7y1XRQGuj9PcZPVZPw + balrog-an-linux64-nightly/opt: EWancfiiRTGLLDVE9oKA6g + balrog-an-macosx64-nightly/opt: TpTprr9dTkeGfsq2b5hAbQ + balrog-an-win32-nightly/opt: ALxjom0AS4uvyPkw8UiS4g + balrog-an-win64-nightly/opt: IFDW7L3rSUK3Zfb8s0nU3g + balrog-ar-linux-nightly/opt: VkAkpaMpQ1GQtlv5n1r9Xg + balrog-ar-linux64-nightly/opt: CquH6b-EQF-xVOBC_Gqt5A + balrog-ar-macosx64-nightly/opt: SiMe9VVESC65Ucqq-MwExQ + balrog-ar-win32-nightly/opt: MeLiWiReRQuKjp5jF3rGAg + balrog-ar-win64-nightly/opt: YzmxtIzXS4qxsATVDaxAtA + balrog-as-linux-nightly/opt: IGEIPjCJTLOr_THPNR2Vvw + balrog-as-linux64-nightly/opt: DdxNngoyQ0OSG3h-f-mk1Q + balrog-as-macosx64-nightly/opt: RSDIkXkhQIuLCdbKBIfFDA + balrog-as-win32-nightly/opt: cmK5-_iFT7uw2Bnb-pwVFQ + balrog-as-win64-nightly/opt: Mh7pso2FRTCLhrc5cVS8EA + balrog-ast-linux-nightly/opt: VPbd1rVGS0Cr817TSB2Acw + balrog-ast-linux64-nightly/opt: F_vbFztATk6NuYvthS9K9A + balrog-ast-macosx64-nightly/opt: flHMUHuLQ5uWSgkI7k3K6g + balrog-ast-win32-nightly/opt: fbJBTQtsQBSaJbDfQRlG3A + balrog-ast-win64-nightly/opt: XweFIjNoTjCtyfXTDYxYkA + balrog-az-linux-nightly/opt: ObVS45xdQTyxyKEknUUDhA + balrog-az-linux64-nightly/opt: DG7FdjiyRMe4cAmeKuLmAA + balrog-az-macosx64-nightly/opt: KJuebq7PSICEWKHVue0H6Q + balrog-az-win32-nightly/opt: FM3iGtxURLimBnIiz7omfA + balrog-az-win64-nightly/opt: YPByA5A6S-SQ3TPmILT46g + balrog-be-linux-nightly/opt: YUe8sQFITAyiN3F4BJW6RQ + balrog-be-linux64-nightly/opt: ZZ6Am6JGQdG03V-EB85-Lw + balrog-be-macosx64-nightly/opt: dQ2P6Z03SleRSBV8rcBftQ + balrog-be-win32-nightly/opt: MsMQavymTX-i_9YMohoYag + balrog-be-win64-nightly/opt: P3OQ2WFGTBWtJLTKczYoCA + balrog-bg-linux-nightly/opt: YL9BKVHySkaa7SvXlYw_Lw + balrog-bg-linux64-nightly/opt: Bem4Y-8_S3qUXLRwNu9Ccw + balrog-bg-macosx64-nightly/opt: eSTZG7ojQpib4GJvCMCavA + balrog-bg-win32-nightly/opt: A1dr5Wb_R-e2LS0djhbyzQ + balrog-bg-win64-nightly/opt: BBzti7rVTdKbbaXpRWdzjw + balrog-bn-BD-linux-nightly/opt: KnBPYSVoQK2EwMNjb9sqeQ + balrog-bn-BD-linux64-nightly/opt: LXQuY8qtSZm6lBhPiCFcuw + balrog-bn-BD-macosx64-nightly/opt: R9fLrVpWQQK17HZ5NKZ9sg + balrog-bn-BD-win32-nightly/opt: bVHZylUUSkWzAnUHjbe1FA + balrog-bn-BD-win64-nightly/opt: JsgRNaPFRPy40Eupo-2_pQ + balrog-bn-IN-linux-nightly/opt: cohWquwSQw20CdTgYKmayA + balrog-bn-IN-linux64-nightly/opt: LwMy_AYtTEmtnr4MBHcqnA + balrog-bn-IN-macosx64-nightly/opt: ZEHDtLoNSR2RUaMgdqM-Iw + balrog-bn-IN-win32-nightly/opt: XlqZ5qJESqmAXSAP5ndFzg + balrog-bn-IN-win64-nightly/opt: EIqkzRycQnmJVPAlqPjKfg + balrog-br-linux-nightly/opt: EACM_yd7Tvy2UgZ33Bhkmw + balrog-br-linux64-nightly/opt: PEGdJRfeQ3SG-I5--Ci7kA + balrog-br-macosx64-nightly/opt: CDokRQg5QW20_IaDncQt4w + balrog-br-win32-nightly/opt: VTecy8LPSOKkj8SZPeX6Uw + balrog-br-win64-nightly/opt: aT2uXgFpR2GMq-L6A_ID2w + balrog-bs-linux-nightly/opt: ca0zOLgvQgyRxE906ipgPw + balrog-bs-linux64-nightly/opt: WfH9fnOUQ2SQZerXtrmXtg + balrog-bs-macosx64-nightly/opt: Ge2QCJcSSQ29HvsOsPWM6w + balrog-bs-win32-nightly/opt: Gad56wRWRkyhcQHmXpgA6A + balrog-bs-win64-nightly/opt: X1EslU07Ra-nqayV6MARIg + balrog-ca-linux-nightly/opt: QuSV13-5TW6dPtdgBDblZQ + balrog-ca-linux64-nightly/opt: I5T_wzfUQsaJh7qT8O9nLg + balrog-ca-macosx64-nightly/opt: L24Qfi_KQk2U9GLh7ZPZXQ + balrog-ca-win32-nightly/opt: Ie3kChlxS02kkzqNKRl_5A + balrog-ca-win64-nightly/opt: SaM70u6ZRISa5zgrxOZo6A + balrog-cak-linux-nightly/opt: ETkl62U1Thq7wymrNDvC9g + balrog-cak-linux64-nightly/opt: cH_wjyyzTbyIpD72qWidqw + balrog-cak-macosx64-nightly/opt: CXXAbGNqQVa5sbxwweIy0Q + balrog-cak-win32-nightly/opt: eOMC4uR8RyyP3Qgjlxr6yA + balrog-cak-win64-nightly/opt: EaBvqI--Sq6UD5OGEWgvRA + balrog-cs-linux-nightly/opt: GgCpw1LWRiSHKB_DJLkhPA + balrog-cs-linux64-nightly/opt: RvMZTkPASqqvppFEZJkzVg + balrog-cs-macosx64-nightly/opt: FixtzW-FSXiE0Tk5gJ-Zyg + balrog-cs-win32-nightly/opt: BrwLoSEyRWq-rqEGSJkp2g + balrog-cs-win64-nightly/opt: RfPXY-eZTjSm9AhxcgZqlw + balrog-cy-linux-nightly/opt: aUP97k8aTIi9-_uLeyyY2g + balrog-cy-linux64-nightly/opt: DqTNzWbOSROhUbTeaxI2Sg + balrog-cy-macosx64-nightly/opt: Kd4bsYbAS9yLQShsxazOzA + balrog-cy-win32-nightly/opt: CDVmpXGzQSugetx3bfXR8w + balrog-cy-win64-nightly/opt: HMsQi4gXQe2pbEHYi4pIQg + balrog-da-linux-nightly/opt: R54GtA5ATum4jPwHajt7Wg + balrog-da-linux64-nightly/opt: AxWVb6etQDC1FrIbiER_9A + balrog-da-macosx64-nightly/opt: VFEctmKZTS2UPdbPcA__Ew + balrog-da-win32-nightly/opt: MhZvnQQOTvePrBarcWhWFQ + balrog-da-win64-nightly/opt: GOMIlCmJTnajjrbpSpcZPA + balrog-de-linux-nightly/opt: C0Y1ar60QCiuRwcbGlHHnw + balrog-de-linux64-nightly/opt: HZfJSWPoRuKFt36bZkjAAQ + balrog-de-macosx64-nightly/opt: J0WDms3lTuWjDqFnldqAmg + balrog-de-win32-nightly/opt: Kj6QgdLpSUGwIzBDtJl8Zw + balrog-de-win64-nightly/opt: CCae-gd5RuG74Oj9fBk-Uw + balrog-dsb-linux-nightly/opt: B0wRzBfrQLajgojlwqxEtg + balrog-dsb-linux64-nightly/opt: V_pSajCqTxipeKYgyIxtZw + balrog-dsb-macosx64-nightly/opt: e3HnIbstR5GuaPYJN3HsYA + balrog-dsb-win32-nightly/opt: VDYz1P3-TwCJ5FbmZGGSmQ + balrog-dsb-win64-nightly/opt: evTxKmQmQ3m_10PrwCNvvg + balrog-el-linux-nightly/opt: fQN4Rw7yQsqA7zp2ywjNJw + balrog-el-linux64-nightly/opt: ZyScFNVzSsqlqVI-2wGgOw + balrog-el-macosx64-nightly/opt: IhVX9pc7Q8S7fx2oQzfZ5g + balrog-el-win32-nightly/opt: XM9cVhanRFiLq4GpnqRSYQ + balrog-el-win64-nightly/opt: BajV0YAqTL2olkt3T0bOBg + balrog-en-CA-linux-nightly/opt: FZMvRYHwQFebWNiBkndh2A + balrog-en-CA-linux64-nightly/opt: IAKEd6a8RPaDp8bxidMkdQ + balrog-en-CA-macosx64-nightly/opt: IvnQeCNmSZm7fJacBliPLg + balrog-en-CA-win32-nightly/opt: QF5raq-BQd6GGMrwY2IETA + balrog-en-CA-win64-nightly/opt: UyhND3nXQryoxqtKHI9ocg + balrog-en-GB-linux-nightly/opt: WRf-D5d1QXWk6Bu1C1u1Vg + balrog-en-GB-linux64-nightly/opt: RZVoMOVxTgaS3XUME3rlcw + balrog-en-GB-macosx64-nightly/opt: cGjVSJK4RC224sTO1PwL_g + balrog-en-GB-win32-nightly/opt: D38Setq0QmuqvoDv07bNEg + balrog-en-GB-win64-nightly/opt: MKqShCLtSrSaax_djziJBA + balrog-en-ZA-linux-nightly/opt: eEjgBWukQTCRp0zATpfZQg + balrog-en-ZA-linux64-nightly/opt: Ac5DSI5URxeiPPDSH1LQ_Q + balrog-en-ZA-macosx64-nightly/opt: COJXme0NTICngxAXu5cktA + balrog-en-ZA-win32-nightly/opt: LEKve5JnQHCevcIWKZvLCw + balrog-en-ZA-win64-nightly/opt: N9QcgCiCSK-C2_NuieuBLA + balrog-eo-linux-nightly/opt: YG0sGdp4TL-Sb_QvqHhN1w + balrog-eo-linux64-nightly/opt: WCHg0D4IRXeaqGbVYJGhhQ + balrog-eo-macosx64-nightly/opt: AJ7Cv5vtT0itcmh6M-lpNA + balrog-eo-win32-nightly/opt: Gg3aJ5VtSZyQdHeeMh9lDw + balrog-eo-win64-nightly/opt: BQzA-kueQ6uxoRSIWMgsSw + balrog-es-AR-linux-nightly/opt: DmB0MaynQ2i3PpEnr3ra-g + balrog-es-AR-linux64-nightly/opt: XZcsg0wLQnOtH0Ji1ePecQ + balrog-es-AR-macosx64-nightly/opt: TAkHOCy6Qayo7dbmts5_8A + balrog-es-AR-win32-nightly/opt: MghAacD_RzGU6QhlOEZlkg + balrog-es-AR-win64-nightly/opt: HmB-XrGZQm-UzagIwjWKCA + balrog-es-CL-linux-nightly/opt: SUnea6TnSH2sPSWuOG9xyA + balrog-es-CL-linux64-nightly/opt: WdBM7GOERy2cuCd8mVEYwg + balrog-es-CL-macosx64-nightly/opt: QUOwx1kQSNqwaP9MnDXSYw + balrog-es-CL-win32-nightly/opt: VFP_l4KBQ1etaRa8jCbRew + balrog-es-CL-win64-nightly/opt: Ap7jtdA6ScmzRe7z8yFpQw + balrog-es-ES-linux-nightly/opt: PW5Ig7r9ScW9o7NKsRO15A + balrog-es-ES-linux64-nightly/opt: GeqeAlM8SvyxkcqVCEBARg + balrog-es-ES-macosx64-nightly/opt: Onz1Hs84RMC48pRuYj9u2w + balrog-es-ES-win32-nightly/opt: Tiji7cExTz28_xmJseh4zw + balrog-es-ES-win64-nightly/opt: B4bXyftST7quXiqBa1h1-Q + balrog-es-MX-linux-nightly/opt: UjPDUIrUSxGfYeOxuOZ5cg + balrog-es-MX-linux64-nightly/opt: E5wcwfqlQ0GpxW1gzB9r7w + balrog-es-MX-macosx64-nightly/opt: bThYGEcnSrCfWOCjXoMCNA + balrog-es-MX-win32-nightly/opt: ZD6h9Qf8TtaiQ7ZqgZrd2w + balrog-es-MX-win64-nightly/opt: cmsYsgvIRsCzDtgdU4y5Dg + balrog-et-linux-nightly/opt: GiBqDlohSnuy6vbY4DwJ5A + balrog-et-linux64-nightly/opt: VVNXqBWvRgS8J5NcNfUhrQ + balrog-et-macosx64-nightly/opt: Lh-BJgZ0Q5iKOb0t3VtTHA + balrog-et-win32-nightly/opt: JDZ1DFwkQzW_Tr9ETbrPUg + balrog-et-win64-nightly/opt: cY07Rbh2RIibOrQuKnFwhg + balrog-eu-linux-nightly/opt: asIAvkZIRqiXwceEQiTYKg + balrog-eu-linux64-nightly/opt: cTJw1iD-SMiSv-dWD3vShQ + balrog-eu-macosx64-nightly/opt: BJDdvsUMToKkBpjuzrhBYQ + balrog-eu-win32-nightly/opt: aVTtsJwfQLqSz-p9HjMu-g + balrog-eu-win64-nightly/opt: NjRzHWQ6SPaABcPV0DXpUg + balrog-fa-linux-nightly/opt: RF3DpgiwTiOsA8Rg3OVRUw + balrog-fa-linux64-nightly/opt: aWQhSTDzS2OjPb3mMWGTGw + balrog-fa-macosx64-nightly/opt: DbDj6S-lTe-xjb8URM6odA + balrog-fa-win32-nightly/opt: FqmkVZMYTM2xC162PLx5Qw + balrog-fa-win64-nightly/opt: HH1Aki6VQWuOkF6xXgmavQ + balrog-ff-linux-nightly/opt: Gjv6dKOXREay6g4LqVTxUw + balrog-ff-linux64-nightly/opt: D-DZF90JQti2H-bCq6LNog + balrog-ff-macosx64-nightly/opt: ZUMYn_kERtiU4Q7v0ycmOA + balrog-ff-win32-nightly/opt: c0qhfQsdR0eroFir2VUdLQ + balrog-ff-win64-nightly/opt: JYS-UWkWSeqWps-XvDBK-A + balrog-fi-linux-nightly/opt: De4wh-d9ShylGSFDl7jabQ + balrog-fi-linux64-nightly/opt: UAxfptrKTRiJSJFKnECUnw + balrog-fi-macosx64-nightly/opt: NFQt7gsPTUGHOeFjki6zow + balrog-fi-win32-nightly/opt: RBl8SSJUTv-XxVwe_jXOiA + balrog-fi-win64-nightly/opt: N7V6EZ34TJeNP7LnO8FthA + balrog-fr-linux-nightly/opt: GkqdEEwgRfuxfZsjQOAMxA + balrog-fr-linux64-nightly/opt: Rcs4CQ6AQ4qZsElkbugfDg + balrog-fr-macosx64-nightly/opt: fPSCu0rmTxm-UyqZBeMelA + balrog-fr-win32-nightly/opt: KAkKkgYwTp2x3YlTC-D6nA + balrog-fr-win64-nightly/opt: NklDIW2BSnKOhCaMUq86Ww + balrog-fy-NL-linux-nightly/opt: CPxDa7ZDShe1_QXFUyy8pw + balrog-fy-NL-linux64-nightly/opt: B5ObfqGgQk6FG33KrmW-pA + balrog-fy-NL-macosx64-nightly/opt: ISaigasVRZmsfy9T2UOAHw + balrog-fy-NL-win32-nightly/opt: UYLXRFg4RgmvgcLLjHUy8w + balrog-fy-NL-win64-nightly/opt: frqOilM3SOK5d3JxBvQ2NQ + balrog-ga-IE-linux-nightly/opt: QIkcfnFCRCGEyocToe4DxA + balrog-ga-IE-linux64-nightly/opt: Ow-J3HdWTBWsJz_HsPi6eQ + balrog-ga-IE-macosx64-nightly/opt: IyiOcyUWRgunk0lbRZPuKg + balrog-ga-IE-win32-nightly/opt: RwbMzT_nQk26spNhR31ZHQ + balrog-ga-IE-win64-nightly/opt: ZzIODxRsS9Otj5_VQHdF4w + balrog-gd-linux-nightly/opt: KNge0B5nQeKJKmLDBZiQqg + balrog-gd-linux64-nightly/opt: Vk0TF3qwSfm9OcyqKEpMIg + balrog-gd-macosx64-nightly/opt: BtBAOrOJT-yx9a7ORzQeXw + balrog-gd-win32-nightly/opt: Sv9POXLcSGSmYQrjYLciVw + balrog-gd-win64-nightly/opt: c84wOr5fSp6NNZ_kyxnMeg + balrog-gl-linux-nightly/opt: b0swLaoBTVabLW5cjt5MzA + balrog-gl-linux64-nightly/opt: e0K9tiKERc-6HVF5TjOurg + balrog-gl-macosx64-nightly/opt: Az4bqSkCQJWjXk5D_ZBY3g + balrog-gl-win32-nightly/opt: U8f-p2jQQdCkvkmd_8XJ0w + balrog-gl-win64-nightly/opt: NVKHRVQCQAC3uXWx5KeCaA + balrog-gn-linux-nightly/opt: J2BqPR40R2-Re_WZvnEffA + balrog-gn-linux64-nightly/opt: ZqdcKPn4QOa6tdr6vbmYPA + balrog-gn-macosx64-nightly/opt: RQEoALq7T9OBsBEwuilnXw + balrog-gn-win32-nightly/opt: KCXCgOh2Rg23AT1c3rS5oA + balrog-gn-win64-nightly/opt: CdayaYyARE2wzSPoUb0FsQ + balrog-gu-IN-linux-nightly/opt: BeNmlUPvSRaRNhaK2C3kwQ + balrog-gu-IN-linux64-nightly/opt: OIDrOtJlRCe6GiyhVk3-ZQ + balrog-gu-IN-macosx64-nightly/opt: DNZuiDw6Stu2XtyIfx5H5A + balrog-gu-IN-win32-nightly/opt: Rz7IRp-2RR-jq3LAnJbCIw + balrog-gu-IN-win64-nightly/opt: DBzqsYEnTReTInyBlrJi4Q + balrog-he-linux-nightly/opt: N1dunI4kRQ-3giVlqNR4nw + balrog-he-linux64-nightly/opt: OuT4p4NmSw62FRxk3tsm5g + balrog-he-macosx64-nightly/opt: eQupL_WmT6OZcQ1IULqAvg + balrog-he-win32-nightly/opt: aJQt5kWdQC6Kc9-giUWpxQ + balrog-he-win64-nightly/opt: UFyWo1RITImQ_lLyFg8OMg + balrog-hi-IN-linux-nightly/opt: YzVty1J-SK6v0UAD3hH6Cw + balrog-hi-IN-linux64-nightly/opt: TT0JMIm9QYeBNWQgHP70xA + balrog-hi-IN-macosx64-nightly/opt: Kc8_9xuMQoCEcGVLNGiR4g + balrog-hi-IN-win32-nightly/opt: fdtUXfONRnK1xbvEa3aZoQ + balrog-hi-IN-win64-nightly/opt: PXgkdoYJQ6KgMTc62BPrZw + balrog-hr-linux-nightly/opt: Oq-BK2wOTHq8fJnQIRde_Q + balrog-hr-linux64-nightly/opt: NpDY6lIgQqaBBFp9hUosKg + balrog-hr-macosx64-nightly/opt: Ubj_rLxOTTuKFkn0tq6RkQ + balrog-hr-win32-nightly/opt: TjQpP_ORTI2t1-_CsZHF0Q + balrog-hr-win64-nightly/opt: MtGCGicqRcmQRpenIOaUow + balrog-hsb-linux-nightly/opt: JBoKxM7qTpmEliqXhjQl_A + balrog-hsb-linux64-nightly/opt: YJIi4S1nRcCH2DXdv54vMg + balrog-hsb-macosx64-nightly/opt: EXEOULv6RWemVnTOhZBu0w + balrog-hsb-win32-nightly/opt: CxNuqN1gT8KGxOIINyQ4RQ + balrog-hsb-win64-nightly/opt: BA6EJQnrQfuZOsF4IX_r1g + balrog-hu-linux-nightly/opt: GEYFOcFlSiipgLgcI6e_9w + balrog-hu-linux64-nightly/opt: X3LSUfqxSBKALAokIPwz_w + balrog-hu-macosx64-nightly/opt: QdZ0p1KISNKv_jE-IqEqZg + balrog-hu-win32-nightly/opt: WQJhsaZQTU-zI43-kDkinA + balrog-hu-win64-nightly/opt: EZIP0vFsTs-YVG2_PIfm7w + balrog-hy-AM-linux-nightly/opt: HItXaxfzTyiyr2tfg3uGPQ + balrog-hy-AM-linux64-nightly/opt: NkygKTfER8qSPA0nSefknA + balrog-hy-AM-macosx64-nightly/opt: c3Qi1PFEQLuyCPtR2UOfdg + balrog-hy-AM-win32-nightly/opt: K_jYlugwQ_uC_E09u8YFBQ + balrog-hy-AM-win64-nightly/opt: bYtD2x_0TomGvDaKe0Mrmw + balrog-ia-linux-nightly/opt: fe_frGwKSrm1Hc8WrMnfUQ + balrog-ia-linux64-nightly/opt: eCnoshQdRBSNseG2sGPkCQ + balrog-ia-macosx64-nightly/opt: AkGi2sIXR6y0LNkdKszjGw + balrog-ia-win32-nightly/opt: a-8FTNniQxCEFToRTDGzcg + balrog-ia-win64-nightly/opt: MncyyVJmTtqqLtPSPCablg + balrog-id-linux-nightly/opt: Sjr8ZZEATk6UKK9UYH_7ew + balrog-id-linux64-nightly/opt: JZ2K9gQ1TMe5jin2zyKr0g + balrog-id-macosx64-nightly/opt: X-dCLpigSkCY8S2wtmd7Kg + balrog-id-win32-nightly/opt: a6KrTDMJQg2-MntEL_NBFw + balrog-id-win64-nightly/opt: VpCJJxaCS3-3mWwSKBFWYw + balrog-is-linux-nightly/opt: aaLY4HnwTZaWO_DLwmOXMg + balrog-is-linux64-nightly/opt: MMOxvk69RtSlWz4XxvdmTQ + balrog-is-macosx64-nightly/opt: RT_gH966TGupSCK_Vv0YsA + balrog-is-win32-nightly/opt: XSSN6HHuSsiUxY6lnBellw + balrog-is-win64-nightly/opt: DCmPWBkXQriolP6NCUftnQ + balrog-it-linux-nightly/opt: O4znVj5xR920jovBZ9wL1A + balrog-it-linux64-nightly/opt: eUkNd9i4Ql2gQgM2U1nV3A + balrog-it-macosx64-nightly/opt: AhlO8ePHRkC50Rs4k9Fj7A + balrog-it-win32-nightly/opt: XGRfcDyITkGpO7mF3ewvKA + balrog-it-win64-nightly/opt: deerkNVjQp2tnmM9N25Ghg + balrog-ja-JP-mac-macosx64-nightly/opt: dWB6HzFfRs6cMempzZX9AQ + balrog-ja-linux-nightly/opt: XEbsI4QKQ_GhjP5_Xkx5ew + balrog-ja-linux64-nightly/opt: UvaLW53jS2OCpWnE2zfcqQ + balrog-ja-win32-nightly/opt: VIJJXTayQty8ZEna8ovBNw + balrog-ja-win64-nightly/opt: Kg50j4_PRzqk3P-nSdW59g + balrog-ka-linux-nightly/opt: ZcCN01QaR0muKW54W9izTw + balrog-ka-linux64-nightly/opt: TMUUZ_MASB6VSjPME6O1rA + balrog-ka-macosx64-nightly/opt: Ck2BGdtaRRuzGBh-cmcnqg + balrog-ka-win32-nightly/opt: GNZb24KDR_m4xMae0Bip7w + balrog-ka-win64-nightly/opt: DuDYSn2vQ0eJVcB7Bsfhhg + balrog-kab-linux-nightly/opt: CFSR5aiaTbqFCG5Yo2-waA + balrog-kab-linux64-nightly/opt: FehZS7G2Qjm5QyUZE1UPxQ + balrog-kab-macosx64-nightly/opt: fXXJGoVVSFWpwoEJHzAG3A + balrog-kab-win32-nightly/opt: ADIAa2bOQ-qJl1NH1m408g + balrog-kab-win64-nightly/opt: cKGLyEwCQiqOmnmLyunJDw + balrog-kk-linux-nightly/opt: Yb85sYu4SwGoJ4KUd6YwbQ + balrog-kk-linux64-nightly/opt: EU9V0GRYQwS4SLxg7mewNg + balrog-kk-macosx64-nightly/opt: NXF_GaIbQ3qDVm87vLGOZQ + balrog-kk-win32-nightly/opt: b9JwmBEBSruDv6PC2bitfQ + balrog-kk-win64-nightly/opt: aGPZndJ5QlisO2kVEPpAnw + balrog-km-linux-nightly/opt: cBW_p5DrSUGTbPv0lQ0JvQ + balrog-km-linux64-nightly/opt: EkElRlnkQj2LZXwxi8oGvQ + balrog-km-macosx64-nightly/opt: B_qE5wKjSpW5oEywKmrn2A + balrog-km-win32-nightly/opt: TRuqUDeJQS2-kL0cXvNu2A + balrog-km-win64-nightly/opt: F7hyOErTR42Js9uMF1vYwA + balrog-kn-linux-nightly/opt: UlVAm9s5R7uqbzuQHYaxSw + balrog-kn-linux64-nightly/opt: cDcO-DovST22BmCFd8LUTw + balrog-kn-macosx64-nightly/opt: DKe7AR13R6C2Q54m_G7-hg + balrog-kn-win32-nightly/opt: G0s1XzBZRmeVd4KEN9lYFg + balrog-kn-win64-nightly/opt: RSnbnXhqQMisHbsLtSFdHA + balrog-ko-linux-nightly/opt: LAPKLGDxTG62gLRsP3iUSg + balrog-ko-linux64-nightly/opt: W1PpJkNdT-e5O2rw_SU1eA + balrog-ko-macosx64-nightly/opt: DRwmnyjdT4qHPZUdKsfquA + balrog-ko-win32-nightly/opt: OOl9RHViQP2QtceyDP_P8w + balrog-ko-win64-nightly/opt: Mk1n6ck2RSCeTY4el5a9FA + balrog-lij-linux-nightly/opt: MdE9C56aQqaSmQ37AKeIow + balrog-lij-linux64-nightly/opt: Bii84tpVSdG_8u5nQr5MSQ + balrog-lij-macosx64-nightly/opt: BWsAOK6dT22n6reG0QVmqw + balrog-lij-win32-nightly/opt: dJwWH8bXSxWCNEHdItPlJQ + balrog-lij-win64-nightly/opt: MHvj25UaSvmI8AVYkd9Isg + balrog-linux-nightly/opt: ekJMhrTOSFmX6YN6Mn2QvA + balrog-linux64-nightly/opt: CMZ7-v5IRNmr5LaemE0pEg + balrog-lt-linux-nightly/opt: DXMiFxCuSHawkAOq9RFH5w + balrog-lt-linux64-nightly/opt: efHE3thYR4unpV5-eP4Ytg + balrog-lt-macosx64-nightly/opt: PTfSgjsxRDWDjjYy_ur7gg + balrog-lt-win32-nightly/opt: G50N-KBRRH-N2Hp9VQU3nQ + balrog-lt-win64-nightly/opt: UGPJO2cdRVCkQUPBPZN8aw + balrog-lv-linux-nightly/opt: UVSiri0LRgyO0FQyZwLtng + balrog-lv-linux64-nightly/opt: c-cMqOAYRySx4i3c6iEhbg + balrog-lv-macosx64-nightly/opt: X9MQa3wiQ-G-bt6YRafkHg + balrog-lv-win32-nightly/opt: bGpJWUzsSny9gw4B6UNm7Q + balrog-lv-win64-nightly/opt: QcHSzAguSzunClTujUTJAg + balrog-macosx64-nightly/opt: KlkVOKDRRmyWotmvlxZdDA + balrog-mai-linux-nightly/opt: bLHhHvFESe2akVZEqApiHw + balrog-mai-linux64-nightly/opt: GZxuK9pbRxucfZLvq4lHMQ + balrog-mai-macosx64-nightly/opt: d3cN9eojT0Kt9DXRHeZYOg + balrog-mai-win32-nightly/opt: dCs26597RpiwLvASHzdDBw + balrog-mai-win64-nightly/opt: b5c4BZ8FSB6ebJ_DzOZBzA + balrog-mk-linux-nightly/opt: Ok_6_DqeRhSd7dJkhx3CIg + balrog-mk-linux64-nightly/opt: NoqSdqQ8RfS2QdBMnFAJrw + balrog-mk-macosx64-nightly/opt: X2th-6daR0u7lhKOrwJLLg + balrog-mk-win32-nightly/opt: Or1wDZbATY2jV1ta1GiAaQ + balrog-mk-win64-nightly/opt: SNX98XyfRO6bKfeIbGfAYg + balrog-ml-linux-nightly/opt: Zg2yy09NQf-SgWXwwBbBhQ + balrog-ml-linux64-nightly/opt: NtIjWgU4RyyuEnLUW6gccw + balrog-ml-macosx64-nightly/opt: AlkeoLiuQBKnchgZQeHnpw + balrog-ml-win32-nightly/opt: HdDWaHXeR7Slu9eiBWJepw + balrog-ml-win64-nightly/opt: NAf9qvylR4ahRLsFTF_8Fg + balrog-mr-linux-nightly/opt: WqNbg4SPRzOLt_-IoGDYrA + balrog-mr-linux64-nightly/opt: aeCfu6CMT9O6JBrJwY7_FA + balrog-mr-macosx64-nightly/opt: J7W_f1cvQDyWS97PbzKkCw + balrog-mr-win32-nightly/opt: U6wsLveESKGOOQOB9VdthA + balrog-mr-win64-nightly/opt: awF2b-b9TxekOPsrfaIZpQ + balrog-ms-linux-nightly/opt: PYXICZ7UTGWVzYmfk67r_w + balrog-ms-linux64-nightly/opt: CDuq21JARd2a0xEoxvznog + balrog-ms-macosx64-nightly/opt: WPXzWN8kRx6STb49ksnJqQ + balrog-ms-win32-nightly/opt: XxotqxMkTwq4PQXsQz-3NQ + balrog-ms-win64-nightly/opt: U8F1h9NQSuiN8uPnFqkBYg + balrog-my-linux-nightly/opt: H6saTKAgTLyQztqxJOUb3Q + balrog-my-linux64-nightly/opt: Tp4aFWdnRsu9b1ZSYggt1g + balrog-my-macosx64-nightly/opt: BFE6X54tRkuARy3GHyvw2A + balrog-my-win32-nightly/opt: KYXQB8VWSwWr9ia939m8kw + balrog-my-win64-nightly/opt: GGflOQw6S9SYtk7k8LB9iA + balrog-nb-NO-linux-nightly/opt: YxCzeXZLSWSCj6pOT1IqHw + balrog-nb-NO-linux64-nightly/opt: Nw9zHzikScO0ypkdfdCCoQ + balrog-nb-NO-macosx64-nightly/opt: WYAdKM0ST7y5wYf71acd1g + balrog-nb-NO-win32-nightly/opt: f10oG1qIRpGLm5uuCHsMMg + balrog-nb-NO-win64-nightly/opt: bWJmXZEbRlun5yWwOPoXig + balrog-ne-NP-linux-nightly/opt: P_Vb58pJRWKL3vjG0lrQdQ + balrog-ne-NP-linux64-nightly/opt: F_cFXNvQQXiMRKXOiFSKgQ + balrog-ne-NP-macosx64-nightly/opt: RPhoUjfRRxCG4FtJ7of3Ng + balrog-ne-NP-win32-nightly/opt: InSCvI2hTWuCPL0Ok76vKg + balrog-ne-NP-win64-nightly/opt: JLTndBMdSOyQb3jVa07zSg + balrog-nl-linux-nightly/opt: ACVJZ8hxSE6QBZLqhlxHnQ + balrog-nl-linux64-nightly/opt: eIzexzIlQumJBaPOaIgkZg + balrog-nl-macosx64-nightly/opt: Ccp-kyKFQzasGtChnv5sgA + balrog-nl-win32-nightly/opt: Jv6GNwlpQwyFZTFulfyNEQ + balrog-nl-win64-nightly/opt: Mq_ElD-lSwSCo1QvpKnhSQ + balrog-nn-NO-linux-nightly/opt: DKvg91LCTL2yLUzRXtR5mg + balrog-nn-NO-linux64-nightly/opt: CVUYiU3gSpuDlhgS384Ahw + balrog-nn-NO-macosx64-nightly/opt: NWFLTukcTSmpopm7SCGv4g + balrog-nn-NO-win32-nightly/opt: D-Cnozf6Q7ugdITQhDKrcA + balrog-nn-NO-win64-nightly/opt: LrRTNf4oS16r0ZEP_z97IQ + balrog-oc-linux-nightly/opt: KJ-Nur8JRyOO7OzOqHM3Qw + balrog-oc-linux64-nightly/opt: Pguw6navS3SCoUQJsZnQ7w + balrog-oc-macosx64-nightly/opt: MBZJRarrSwmyHxheywr5rg + balrog-oc-win32-nightly/opt: W5eLcQ7YQJG1e-PViQ2nOg + balrog-oc-win64-nightly/opt: BWj7X42SQaafAzmMd4W3Kg + balrog-or-linux-nightly/opt: WJYiK8muQFS0Nye767bQbg + balrog-or-linux64-nightly/opt: E90kkjMsRwK75_87LHlRFg + balrog-or-macosx64-nightly/opt: WDwOpQgHTdylL1Hknz3_WA + balrog-or-win32-nightly/opt: Kf6QNA5aTq-2ZDn56XWXMw + balrog-or-win64-nightly/opt: YgVQwvbJS8a0QXCHBsTmlw + balrog-pa-IN-linux-nightly/opt: CHg-cEZVTYqe6S9cu3X8eA + balrog-pa-IN-linux64-nightly/opt: MuEcWiN3SyypQWeRPteKUg + balrog-pa-IN-macosx64-nightly/opt: OoNdw9ikQiWBSeXf6YUkfg + balrog-pa-IN-win32-nightly/opt: F2H_siTdT6mddR8Lh2dEOw + balrog-pa-IN-win64-nightly/opt: do2_GMiaRC26EXyysNRCUw + balrog-pl-linux-nightly/opt: e4gszrZSROuS4F98EhoswA + balrog-pl-linux64-nightly/opt: A8dwNOqAQwmkuxsJn1qYdA + balrog-pl-macosx64-nightly/opt: MIM481ukQlq4r2fTfIy4Fg + balrog-pl-win32-nightly/opt: KgFtivHCQ_WIvna7CTdGdg + balrog-pl-win64-nightly/opt: R3p5M73FSdC7BlxYrCJvnw + balrog-pt-BR-linux-nightly/opt: OEAyq4tQSFKNKn-GYaH4GQ + balrog-pt-BR-linux64-nightly/opt: JTuOo598Rt2ViGlKO33fOQ + balrog-pt-BR-macosx64-nightly/opt: BXiTQOYHR7yliUCB3B_rwg + balrog-pt-BR-win32-nightly/opt: dVAAOKEQT1WeaItVAHJhbA + balrog-pt-BR-win64-nightly/opt: VYsr8HYNQueTAuzhFYPqdw + balrog-pt-PT-linux-nightly/opt: e9rATKmXRIyGNEB1eFn0gg + balrog-pt-PT-linux64-nightly/opt: AHIkHgmhQy2W4P5Fp_ifKQ + balrog-pt-PT-macosx64-nightly/opt: ImZeQ-QaQziQN-WNFY1KiA + balrog-pt-PT-win32-nightly/opt: F_GswQh9QxOMZCruIsTXOg + balrog-pt-PT-win64-nightly/opt: LCuDACU_RPe-99MTATT4Ew + balrog-rm-linux-nightly/opt: VU9c3QhsQWyNvuhtFT2NGg + balrog-rm-linux64-nightly/opt: Nwq0bb_hS1WBQqstzXIHwg + balrog-rm-macosx64-nightly/opt: TA8lYeGySBCFRsQ3XF8I5Q + balrog-rm-win32-nightly/opt: QK3o93rMTkaFTIIoxaHKqA + balrog-rm-win64-nightly/opt: AnsIfJWZSryW3cQt1sjE8Q + balrog-ro-linux-nightly/opt: TJARjkz9TR-CvkhRvFDUQA + balrog-ro-linux64-nightly/opt: DpKjAmBNQ7uwAUsBmGHiAA + balrog-ro-macosx64-nightly/opt: F-GoOgIgQBmtTiSANF9MbQ + balrog-ro-win32-nightly/opt: H3U18uOVQaGRz7DbnN8JnQ + balrog-ro-win64-nightly/opt: HJNhsJkxRNOJhvtm_KXUDg + balrog-ru-linux-nightly/opt: aC-pm8lGQdODftkNeY-QNQ + balrog-ru-linux64-nightly/opt: ct8Rip9EQoiyhGDFJ_4z1g + balrog-ru-macosx64-nightly/opt: DaMom17iT9-oBTKaMsE5Zw + balrog-ru-win32-nightly/opt: U8-kh1cQSfqBUqUo8thaFQ + balrog-ru-win64-nightly/opt: DdPGAC7qRLSGGE6njzissg + balrog-si-linux-nightly/opt: anexiubEQk-ODvWf39L-zw + balrog-si-linux64-nightly/opt: WeRZXk4BSXiypE_yjfSogQ + balrog-si-macosx64-nightly/opt: O_orFFu7T9erZjjjKMTsDQ + balrog-si-win32-nightly/opt: QsRbwTurToS3fXaEWfAhOw + balrog-si-win64-nightly/opt: YZR4qyjUTXyhSmWKBdpaZQ + balrog-sk-linux-nightly/opt: OFzREkPFT6qwXGam8ZigTQ + balrog-sk-linux64-nightly/opt: PE60PAv3TeyhZaLAr3D4OA + balrog-sk-macosx64-nightly/opt: UT7WU0v0S_CDqCaLALj8GQ + balrog-sk-win32-nightly/opt: HTD-6kxNQX-YN_KcaYfdLQ + balrog-sk-win64-nightly/opt: WEoV-Sa0QPWUmiWqTtc7Kw + balrog-sl-linux-nightly/opt: CbFzDyuVRre0ZrXouip9UA + balrog-sl-linux64-nightly/opt: exCUCPAjTzyBjO2O0_0pzA + balrog-sl-macosx64-nightly/opt: YI8FFWlzRxOdJR_-FO4eAg + balrog-sl-win32-nightly/opt: GiqhTaLXQh2Bpzd271qCjw + balrog-sl-win64-nightly/opt: A5GTLUiGT42cOdyivUtDuw + balrog-son-linux-nightly/opt: NhvIhV1t_SeTVpzgtEyA + balrog-son-linux64-nightly/opt: bduSzICCQLu6WvHiMaxdzg + balrog-son-macosx64-nightly/opt: EJJHjzkDThiwDuAeAh5VNg + balrog-son-win32-nightly/opt: ZNbK3a5sTSSbiOECgLNsag + balrog-son-win64-nightly/opt: T0oiVwdCTlefGOZVihuwrA + balrog-sq-linux-nightly/opt: DoYxWv6QQiGNaCHDNXAthg + balrog-sq-linux64-nightly/opt: P0YdE6xwTRiz0UR4uvlW5w + balrog-sq-macosx64-nightly/opt: Pkw1ppUyQ-yz5_jTsCenpA + balrog-sq-win32-nightly/opt: VBheud2aSnmNL63IUMRCoA + balrog-sq-win64-nightly/opt: O2cbWiNuT2SquJ78LQGyCA + balrog-sr-linux-nightly/opt: LTKkqyy2RYikeBLCLO5CCQ + balrog-sr-linux64-nightly/opt: GZOmoFaeRcKHA254J0zteQ + balrog-sr-macosx64-nightly/opt: IXfrYq81Q-OlksTHB-ezew + balrog-sr-win32-nightly/opt: Dm5ymAflQPmek-2h3wiijQ + balrog-sr-win64-nightly/opt: WxXrmEfMR-qigrDsT7wY9A + balrog-sv-SE-linux-nightly/opt: GtXUw4T4TxSD25JOud3DkQ + balrog-sv-SE-linux64-nightly/opt: WZG8gd56Q4KM2JudfaUfpQ + balrog-sv-SE-macosx64-nightly/opt: XQInyRcFR8y1q37EMxldhw + balrog-sv-SE-win32-nightly/opt: X4Uk9hxdQ9GAu0v-lV2R8g + balrog-sv-SE-win64-nightly/opt: TkIcSo7-SX2uuNNoathAdg + balrog-ta-linux-nightly/opt: FAjXOxsZQXmQ93dLXXjOXA + balrog-ta-linux64-nightly/opt: J0__eZNMRC-PH0NM59lyFQ + balrog-ta-macosx64-nightly/opt: IHJ451xSQmSZKa_GXDATOQ + balrog-ta-win32-nightly/opt: GX4f1vlFRaOz_cvFJWywMw + balrog-ta-win64-nightly/opt: GZw1C4GzQh2Y1kNzWkJF-w + balrog-te-linux-nightly/opt: JyWAxz81T1aVuTCTPraTTQ + balrog-te-linux64-nightly/opt: Aqnb5gDPSuKCBnLs9GmsAA + balrog-te-macosx64-nightly/opt: eSQHKhqYSj2JZWUB5UlYiA + balrog-te-win32-nightly/opt: GCEyKTkATlKzMJFMUsTtsg + balrog-te-win64-nightly/opt: VUnJzuysTlmBghOUoBfdDg + balrog-th-linux-nightly/opt: LNCaGGgcR62D27NUFhpBaA + balrog-th-linux64-nightly/opt: W1463aBOS_WTNnQB4jghww + balrog-th-macosx64-nightly/opt: HY-y8hBzSYGuC2ItQf4eSg + balrog-th-win32-nightly/opt: IG_H5nl1Sf64KmhYSu8C8g + balrog-th-win64-nightly/opt: YiaKcNTITg2sGu5t4l7-mw + balrog-tr-linux-nightly/opt: Z-8L5ROiSJieeQE5G-C7Kw + balrog-tr-linux64-nightly/opt: KqmVNY16RLCnPKH1SmCeyQ + balrog-tr-macosx64-nightly/opt: GJtwPGGvS1qW60rk_GjCSA + balrog-tr-win32-nightly/opt: GFH1dz1xThy5eIVXDM_KZw + balrog-tr-win64-nightly/opt: NsRoFsdHSkWt6J_Jx_Co9w + balrog-uk-linux-nightly/opt: PVyiC-LLRCOXAaPNaGn5SQ + balrog-uk-linux64-nightly/opt: WH8KxoR_TmGjymDYTrX3eg + balrog-uk-macosx64-nightly/opt: E-hccrgUQHKEuh1TKVSB3g + balrog-uk-win32-nightly/opt: MkKd5DJrRdyiHgBcXb-9kw + balrog-uk-win64-nightly/opt: RMRXqKHCSvyk1RHgqaBRkg + balrog-ur-linux-nightly/opt: bw7BR_2NQUC3nlqVGXKpYA + balrog-ur-linux64-nightly/opt: GeSV-OR6QR6lGarVoxLFqQ + balrog-ur-macosx64-nightly/opt: TTXju9kVQvmuDTuiek9gCA + balrog-ur-win32-nightly/opt: AAg7nufwTSWtfgw7YQFE3g + balrog-ur-win64-nightly/opt: Fnmf4iRzTUu4J7USj_Y5TA + balrog-uz-linux-nightly/opt: NBp0rjZMS0CSQJVVJzV8VA + balrog-uz-linux64-nightly/opt: Q4lhcQn2T_-qs_ywhmuh-w + balrog-uz-macosx64-nightly/opt: N1Pqi9TGQU6PsQtQzof2FA + balrog-uz-win32-nightly/opt: JweAJDkeRg6wZm5IRVTN6w + balrog-uz-win64-nightly/opt: X9iG8SpxThutsg2EeffXAA + balrog-vi-linux-nightly/opt: D8g_QbiWTxy5xtiSL5d-Ow + balrog-vi-linux64-nightly/opt: XVmMaUfMQOq-OmgXzVPj3w + balrog-vi-macosx64-nightly/opt: b8aKXuFOSP2NDCLn3v_woQ + balrog-vi-win32-nightly/opt: PEO78e-ZQmGc2bAyvK1uxA + balrog-vi-win64-nightly/opt: ZinD5shzQKetCc0YaZexrQ + balrog-win32-nightly/opt: QfNtoSw9Q3CdhbLg4q2-rA + balrog-win64-nightly/opt: Mn220ZDRTvWqh866Y9KUoA + balrog-xh-linux-nightly/opt: HHOKDOlZS0u9fAcyHF3skA + balrog-xh-linux64-nightly/opt: O8eFrG61TQS5JPolPW1Jeg + balrog-xh-macosx64-nightly/opt: AfCJ7rbbT9eQS195BdLEfw + balrog-xh-win32-nightly/opt: RY6gI8H3R7iRhZTvhB_mMw + balrog-xh-win64-nightly/opt: enayoJcnRmqCzPZi325Vew + balrog-zh-CN-linux-nightly/opt: fDKXIeHhTP-DRXkrXn2fxQ + balrog-zh-CN-linux64-nightly/opt: HFxVAcyISeCGv0bBGpCDxg + balrog-zh-CN-macosx64-nightly/opt: PVkmmfRnSaSs9dW36DpKBw + balrog-zh-CN-win32-nightly/opt: RE6erpBkRyuVu-1HcymHfQ + balrog-zh-CN-win64-nightly/opt: If36cKEUQTSixHdvbW1mHw + balrog-zh-TW-linux-nightly/opt: C_U96UTuS1GJZPJs-375Lg + balrog-zh-TW-linux64-nightly/opt: Zz78FXZCS8KL6I1fV6qsBw + balrog-zh-TW-macosx64-nightly/opt: KkrfoCfpRkm9TxY6swSUgA + balrog-zh-TW-win32-nightly/opt: Qu7-dbj-Sey4GagGqYPDiQ + balrog-zh-TW-win64-nightly/opt: bb-JQkJtSFOnSKd8rSGavA + beetmover-checksums-ach-linux-nightly/opt: Nm77rmLDRtKdJ1DK7nUViw + beetmover-checksums-ach-linux64-nightly/opt: Ewvg93KWTde_mINvQYEVxg + beetmover-checksums-ach-macosx64-nightly/opt: BrASrufAQoCGrVceWOp2ww + beetmover-checksums-ach-win32-nightly/opt: VFIbxagjQ8-fxIiG6gk7SA + beetmover-checksums-ach-win64-nightly/opt: Hqa0AToLTbqsoPCwjnB8Gg + beetmover-checksums-af-linux-nightly/opt: dBQKDFOURk-zkLUGzv1fzw + beetmover-checksums-af-linux64-nightly/opt: EM557doETCGVO5SI19q5xQ + beetmover-checksums-af-macosx64-nightly/opt: dCoFnXreSSGnR7C-R6EeVQ + beetmover-checksums-af-win32-nightly/opt: FOkd8j87Sa6LpIwLpw6-aw + beetmover-checksums-af-win64-nightly/opt: UWdNdNIlQ9emKSiXYnNW7A + beetmover-checksums-an-linux-nightly/opt: dMbVvcIAROuIFabxkQw87A + beetmover-checksums-an-linux64-nightly/opt: Mn2wYcr2QZyap4FIpkxQ3A + beetmover-checksums-an-macosx64-nightly/opt: bubZe4CRSHSlT7CCiE3EIg + beetmover-checksums-an-win32-nightly/opt: eJpnZMHdTyeSHAFUCfryJw + beetmover-checksums-an-win64-nightly/opt: WxnW8WnGSaal_ClOcRsb7A + beetmover-checksums-ar-linux-nightly/opt: M_hdbIIUQUO1pD5ThpNJYA + beetmover-checksums-ar-linux64-nightly/opt: S2kNm9viS8Gk0cJ__0NVYQ + beetmover-checksums-ar-macosx64-nightly/opt: X72-BB9mQr2bfT89SKBV-w + beetmover-checksums-ar-win32-nightly/opt: DoJyePIQTci03-uA2lnR5w + beetmover-checksums-ar-win64-nightly/opt: UjYvy2c8TPayNO8KUzwd7Q + beetmover-checksums-as-linux-nightly/opt: FUlJZHbCRGOd0hJiVdf79w + beetmover-checksums-as-linux64-nightly/opt: QPQ9PAcFRiSFlkJdq8CHwA + beetmover-checksums-as-macosx64-nightly/opt: NZck94GQQAG-tJ_T70PO4g + beetmover-checksums-as-win32-nightly/opt: e9zDJV97Rcyai-c7h8OqnA + beetmover-checksums-as-win64-nightly/opt: azTM5UFQQH2ZagUvGmMT_Q + beetmover-checksums-ast-linux-nightly/opt: Qv5nrScaRpSpEe-StlmreQ + beetmover-checksums-ast-linux64-nightly/opt: SC-TRDRYRki8tgoVK5IBgg + beetmover-checksums-ast-macosx64-nightly/opt: Ysby0MfuTEqcribSYUdJqA + beetmover-checksums-ast-win32-nightly/opt: fHYSestFTHiaoVvh9Txw0Q + beetmover-checksums-ast-win64-nightly/opt: VhvIBnu0R1W84EpD88n5-w + beetmover-checksums-az-linux-nightly/opt: Piw8kRTUQQ-BGPWUNClj7Q + beetmover-checksums-az-linux64-nightly/opt: NIG3NecCQVem_N_zNKobLQ + beetmover-checksums-az-macosx64-nightly/opt: K5jy73BqTW2MqpNeuIb9EA + beetmover-checksums-az-win32-nightly/opt: cqQtCEMQTjGB81T0Yj3yFQ + beetmover-checksums-az-win64-nightly/opt: eb_iWnJ7ReKDSKtlv0PdrQ + beetmover-checksums-be-linux-nightly/opt: KfV89hg8RHOzZFieuD1CMA + beetmover-checksums-be-linux64-nightly/opt: adNuYfN9SyeWy130IVa7ag + beetmover-checksums-be-macosx64-nightly/opt: IdjkMmtyTE2BN6YCW3tqDg + beetmover-checksums-be-win32-nightly/opt: ZQrM5f1HQWa8u1JRr8v_Cw + beetmover-checksums-be-win64-nightly/opt: CAAP0uGgSQCtcUi_K2nhQA + beetmover-checksums-bg-linux-nightly/opt: V6Vprr22Rga-y7JbwGfYyw + beetmover-checksums-bg-linux64-nightly/opt: eLr9jTfXQlOJwwwzMCW0-w + beetmover-checksums-bg-macosx64-nightly/opt: cJpzfQeYSJ6KNx6M8LkJVg + beetmover-checksums-bg-win32-nightly/opt: HhFhVmscRISeG5uEz5MsbA + beetmover-checksums-bg-win64-nightly/opt: CB8WHIb8QqOncRc7Sk7C3g + beetmover-checksums-bn-BD-linux-nightly/opt: RVSDsC5oQU-LNl9puGt9PA + beetmover-checksums-bn-BD-linux64-nightly/opt: TF5xEcncQQ6CprQ8DimG7g + beetmover-checksums-bn-BD-macosx64-nightly/opt: MV0bw7APSAKMWQuBPPtsVg + beetmover-checksums-bn-BD-win32-nightly/opt: eGhCubkWT62hRMH9Z_5W8g + beetmover-checksums-bn-BD-win64-nightly/opt: HIcP8OHdQgOVu3e85j8lMg + beetmover-checksums-bn-IN-linux-nightly/opt: Pclq36-MS5qxtGAbx9DsaQ + beetmover-checksums-bn-IN-linux64-nightly/opt: BeC2_UQyQGqYsn8brBTiig + beetmover-checksums-bn-IN-macosx64-nightly/opt: dTSirGwDQxG-nvQIS0s0ZQ + beetmover-checksums-bn-IN-win32-nightly/opt: bBV65gB9QEaQrh_woxSFmg + beetmover-checksums-bn-IN-win64-nightly/opt: cmFqMMwLTsKG4QdP_VH4qA + beetmover-checksums-br-linux-nightly/opt: FUufxAT_T6Cy9iPdNOlb7Q + beetmover-checksums-br-linux64-nightly/opt: EcuiwfP6Te2qSoTdK4pGVA + beetmover-checksums-br-macosx64-nightly/opt: aomoy8wFSUqDBuBPpTjmdQ + beetmover-checksums-br-win32-nightly/opt: FDKQgMO1RnCsrEczXc10EQ + beetmover-checksums-br-win64-nightly/opt: caZ8J9FNQ5qz8d0RKf0gxA + beetmover-checksums-bs-linux-nightly/opt: axgAa6R_SiSJ0bN71F26Qg + beetmover-checksums-bs-linux64-nightly/opt: Z6dozKJLTV6BeQK9DRNVlw + beetmover-checksums-bs-macosx64-nightly/opt: egafsI2XQUKqQtMQxGEpVg + beetmover-checksums-bs-win32-nightly/opt: ZQMoSL4-T7Wk0y9cZaaHAQ + beetmover-checksums-bs-win64-nightly/opt: JVEcuwhMTpicCVp-yy4Mcw + beetmover-checksums-ca-linux-nightly/opt: GGuCB7CGT0OyuSGBVYB7Pg + beetmover-checksums-ca-linux64-nightly/opt: b7mTJV4FSAyRsyRqaf-xhg + beetmover-checksums-ca-macosx64-nightly/opt: czVRc1t2QEG_aJPrjsmicw + beetmover-checksums-ca-win32-nightly/opt: d0DtFAVCRqe24Nc7fT5Wfw + beetmover-checksums-ca-win64-nightly/opt: ebWkzgYZTB2F473XTVrm-A + beetmover-checksums-cak-linux-nightly/opt: UtdW8lTHRAi3qDM7QABriA + beetmover-checksums-cak-linux64-nightly/opt: TcyTYs72TjuXWTomFhuwAA + beetmover-checksums-cak-macosx64-nightly/opt: dKoeHGwFSUWepI1_KIA9Ow + beetmover-checksums-cak-win32-nightly/opt: BtUiXrQuQo6Qpj92h8rXhA + beetmover-checksums-cak-win64-nightly/opt: Ahj6tcIRReSgCgUs4UBE8A + beetmover-checksums-cs-linux-nightly/opt: KMgZiSI4S_-JjmRiLLoXQA + beetmover-checksums-cs-linux64-nightly/opt: DnMF7gDLT0GKPoMpxYMT4g + beetmover-checksums-cs-macosx64-nightly/opt: MSuc0dbtR4u7rcHgv5AFCg + beetmover-checksums-cs-win32-nightly/opt: Sqx5cpbzRe68prg3cWiUnw + beetmover-checksums-cs-win64-nightly/opt: BXfraByPSZG_Wu2-YN6LvA + beetmover-checksums-cy-linux-nightly/opt: dGXDKQJcRlegjfwU80X2nw + beetmover-checksums-cy-linux64-nightly/opt: ZFe9EnZOQhyFnwrbHCP_fw + beetmover-checksums-cy-macosx64-nightly/opt: IN_KS6b3QY-lIOwjjoHWgg + beetmover-checksums-cy-win32-nightly/opt: WLA3m7LFSH-keWUFGnFdcA + beetmover-checksums-cy-win64-nightly/opt: Czu9cYg_T7-i4k6iqNCpRQ + beetmover-checksums-da-linux-nightly/opt: SOnlCCQ2Qd-mhH48tpHHxQ + beetmover-checksums-da-linux64-nightly/opt: S14qPsReSHaoZlTriz8xOw + beetmover-checksums-da-macosx64-nightly/opt: UkAG7VzdRUOywv5lzPhq-g + beetmover-checksums-da-win32-nightly/opt: M8r-01E5RSaYUrPx9mq_Bw + beetmover-checksums-da-win64-nightly/opt: Ad4tLGFoRLiuk-ljvxXngw + beetmover-checksums-de-linux-nightly/opt: TyLF1xfYRIy1viFXUyLMYg + beetmover-checksums-de-linux64-nightly/opt: LabrhGhsRzOF7zk_Zbg4DA + beetmover-checksums-de-macosx64-nightly/opt: TrGHw3mRSfO3ERL5p20_Pg + beetmover-checksums-de-win32-nightly/opt: anCv6HObS6iopiMPAT1ffg + beetmover-checksums-de-win64-nightly/opt: GS0-Xue5T6SibQfgVVZeuw + beetmover-checksums-dsb-linux-nightly/opt: IxAlW_OFSuOjvmftjcJoEg + beetmover-checksums-dsb-linux64-nightly/opt: aIz3KOIpRbuoTfUGSoUBwQ + beetmover-checksums-dsb-macosx64-nightly/opt: To8aqz9aSYus1z5veSKozA + beetmover-checksums-dsb-win32-nightly/opt: A482lLazQk698rF3CNIcLw + beetmover-checksums-dsb-win64-nightly/opt: HPC7_pxJTre73mZj1ePRwQ + beetmover-checksums-el-linux-nightly/opt: Xctf0DGJQJakgCSgxIOd7g + beetmover-checksums-el-linux64-nightly/opt: KD9WI3MZReWseDE9goxzVg + beetmover-checksums-el-macosx64-nightly/opt: GnMMcu_8SR2FyKUpkuCW7g + beetmover-checksums-el-win32-nightly/opt: e2WQfzHmSdicHmnMjsAang + beetmover-checksums-el-win64-nightly/opt: GAnsNPTwQ3WnYGVbB9bMlA + beetmover-checksums-en-CA-linux-nightly/opt: O0_V5kW2S765-gJPE4gtXw + beetmover-checksums-en-CA-linux64-nightly/opt: XphQJtyMTYmlzdtuHru04Q + beetmover-checksums-en-CA-macosx64-nightly/opt: FGfCetXRRbO-I1Uqh2THtQ + beetmover-checksums-en-CA-win32-nightly/opt: YO7ehwrNSmCEf_FJYjMXeg + beetmover-checksums-en-CA-win64-nightly/opt: HTSb1GJLROCRTVZY1-nKbw + beetmover-checksums-en-GB-linux-nightly/opt: YAeqw2-TSOCGKuwaQJRp-g + beetmover-checksums-en-GB-linux64-nightly/opt: DKps9psqS4qIBszhhT2ulw + beetmover-checksums-en-GB-macosx64-nightly/opt: PVsgLnZ1RPmDQt5PXq9taA + beetmover-checksums-en-GB-win32-nightly/opt: b6YFSmueRoGVK9n9Zh6pGw + beetmover-checksums-en-GB-win64-nightly/opt: Lb9nwud4QGGBg9tCcFlHlA + beetmover-checksums-en-ZA-linux-nightly/opt: GB8GdFdFQ0yv2yK5aJOj_g + beetmover-checksums-en-ZA-linux64-nightly/opt: VfQC7y1xQu-aT2-JQYo0vg + beetmover-checksums-en-ZA-macosx64-nightly/opt: KQ-gEpF3RxSaiT3OUkOW3A + beetmover-checksums-en-ZA-win32-nightly/opt: Dp6lw_HhQzq4_LmboyIaeg + beetmover-checksums-en-ZA-win64-nightly/opt: HGWHMPqnR1S7s0Awn2nVZQ + beetmover-checksums-eo-linux-nightly/opt: bfXI_I27RWGB3SRIJIBLog + beetmover-checksums-eo-linux64-nightly/opt: FTljcZryR9ST8IshCDW3hA + beetmover-checksums-eo-macosx64-nightly/opt: H5O4Co0PR9CKxRcJkyQnzA + beetmover-checksums-eo-win32-nightly/opt: RrayaUjDSrq9arSjXsgBqQ + beetmover-checksums-eo-win64-nightly/opt: Kxc15D3-TOingp1QE_H6-A + beetmover-checksums-es-AR-linux-nightly/opt: dD62g8ldQESJ8vGXODN9hQ + beetmover-checksums-es-AR-linux64-nightly/opt: QnVtkz3HSzuX8MA9rFRNLQ + beetmover-checksums-es-AR-macosx64-nightly/opt: KLoO0EeeRZ-Q8LtpMXgcAw + beetmover-checksums-es-AR-win32-nightly/opt: Z7PizvEnRj-Cmu34vaGLZw + beetmover-checksums-es-AR-win64-nightly/opt: TLBuXY8HTHioaigITtU4GQ + beetmover-checksums-es-CL-linux-nightly/opt: Q_a59wkKST-r-RqqzjdVpQ + beetmover-checksums-es-CL-linux64-nightly/opt: H7_qpWp6RAq-reqzrmEJRQ + beetmover-checksums-es-CL-macosx64-nightly/opt: dQs2yYnHRii8gXIte5L9qA + beetmover-checksums-es-CL-win32-nightly/opt: HIX1rHyqTs6A87JYswB6aQ + beetmover-checksums-es-CL-win64-nightly/opt: RNlCY5jbRA-jZ0PYdUPHuw + beetmover-checksums-es-ES-linux-nightly/opt: eoYR5olxQTWya9ZAB-0imw + beetmover-checksums-es-ES-linux64-nightly/opt: Ba1QxagaQtiUszGA_Gsvjw + beetmover-checksums-es-ES-macosx64-nightly/opt: Eav7RX_MRHGml-1RzvJB6A + beetmover-checksums-es-ES-win32-nightly/opt: FSuk2fMGQHO8xXslSZoTDg + beetmover-checksums-es-ES-win64-nightly/opt: JfuhdAEGTneMstmVanAkbg + beetmover-checksums-es-MX-linux-nightly/opt: LFjDTFQcST6zT7iWLBkisQ + beetmover-checksums-es-MX-linux64-nightly/opt: fk1DtpX1SG2FA5ifaN0G0Q + beetmover-checksums-es-MX-macosx64-nightly/opt: UhPsEfkGT2SpEfJK7vz-3w + beetmover-checksums-es-MX-win32-nightly/opt: KLvxsF9HQ3KFKIVBpKunSg + beetmover-checksums-es-MX-win64-nightly/opt: EMzGQFNcQ8KF2BkmITSwTA + beetmover-checksums-et-linux-nightly/opt: E9KbQUChTwOFPfjYGe6LqA + beetmover-checksums-et-linux64-nightly/opt: dwT2D3LxQfqpp3FxycQbOA + beetmover-checksums-et-macosx64-nightly/opt: EULErNoJShW6vOuqWWIC_g + beetmover-checksums-et-win32-nightly/opt: GUjDf_vBSOWQKW8uHwzfbg + beetmover-checksums-et-win64-nightly/opt: JssKqMtwTxW35Cv3KlOgWg + beetmover-checksums-eu-linux-nightly/opt: T69OKNYERP2ScTb2XdEqVg + beetmover-checksums-eu-linux64-nightly/opt: EbPazO7wToGBYNZF2hJV0g + beetmover-checksums-eu-macosx64-nightly/opt: UhEnHR4_TNyNCjnT_A7hWg + beetmover-checksums-eu-win32-nightly/opt: AfY_TBHCTe-sF0z2HWcYPQ + beetmover-checksums-eu-win64-nightly/opt: foZcxPnDTU-BGqyvqR1hpA + beetmover-checksums-fa-linux-nightly/opt: SxDnBQJ8TS2gzAP61pVNvQ + beetmover-checksums-fa-linux64-nightly/opt: K4nn95fwR0KC5D2vXGDiLQ + beetmover-checksums-fa-macosx64-nightly/opt: G5oN9p0GTCmW5Hw0jDmv1w + beetmover-checksums-fa-win32-nightly/opt: Otav9wlWQpu7V-8rEP4sMw + beetmover-checksums-fa-win64-nightly/opt: YNPl_BOlQNGgUZvQhVUerA + beetmover-checksums-ff-linux-nightly/opt: JBplRl6STRa1NPDB45eo3g + beetmover-checksums-ff-linux64-nightly/opt: Po_e5diWRAKUPP-ZUjhshQ + beetmover-checksums-ff-macosx64-nightly/opt: QbW3IJETRduW8BrRKBNIVA + beetmover-checksums-ff-win32-nightly/opt: S_gNEp32TD6ctP0Cs2Vvqw + beetmover-checksums-ff-win64-nightly/opt: ZgZ_xEWHQieqnIn67oviRg + beetmover-checksums-fi-linux-nightly/opt: Ch_AgOPtTueF5u-YUVEOvw + beetmover-checksums-fi-linux64-nightly/opt: YLlcoXARQX2Pqq7h4ikPEg + beetmover-checksums-fi-macosx64-nightly/opt: cWTtTVYHQEGPnONEkqPLCw + beetmover-checksums-fi-win32-nightly/opt: cfmrujGCSPmFi744h6VF1g + beetmover-checksums-fi-win64-nightly/opt: d1xnluF2QS6vgBFYCeOr-g + beetmover-checksums-fr-linux-nightly/opt: QP08dXwsRTqr8YbD3gNBBg + beetmover-checksums-fr-linux64-nightly/opt: cn6PErvwSp607gwy_cdSdQ + beetmover-checksums-fr-macosx64-nightly/opt: dof-HPqaRUe3fI6KWy8RoA + beetmover-checksums-fr-win32-nightly/opt: Veuha6J8Rmmedmv69rOBdw + beetmover-checksums-fr-win64-nightly/opt: fAT1BQ3gTSGTnn_oD48ABQ + beetmover-checksums-fy-NL-linux-nightly/opt: Xcs70OaIQz-4uGFSMoUNNA + beetmover-checksums-fy-NL-linux64-nightly/opt: KtWqVk7yTGWrak9v2Klqzg + beetmover-checksums-fy-NL-macosx64-nightly/opt: GB43wtxeR1u3YT1lKx75ZA + beetmover-checksums-fy-NL-win32-nightly/opt: PfDDhNDTSUWmbKXW_VBweA + beetmover-checksums-fy-NL-win64-nightly/opt: LbxGYtsdTmuU1QEuzfDx7Q + beetmover-checksums-ga-IE-linux-nightly/opt: Ens_bKhXR0WS3GL4ih2rRA + beetmover-checksums-ga-IE-linux64-nightly/opt: IcBq4LQ2TLqKb98vMpupwQ + beetmover-checksums-ga-IE-macosx64-nightly/opt: DMG-1b62SEavx8aRbwnGjQ + beetmover-checksums-ga-IE-win32-nightly/opt: Pkd2V2X9QHCoIEV3xgfLTQ + beetmover-checksums-ga-IE-win64-nightly/opt: L6qPpg4OQH-AhwxqorD5lw + beetmover-checksums-gd-linux-nightly/opt: P-RH_2QmRD6EeD0ULDpB5Q + beetmover-checksums-gd-linux64-nightly/opt: LRo3UVt0RjOjuKuDaLitRg + beetmover-checksums-gd-macosx64-nightly/opt: UKsfemS2TdqR86JQYahxcg + beetmover-checksums-gd-win32-nightly/opt: Wde6eQfdSeyaFHowdnY9jw + beetmover-checksums-gd-win64-nightly/opt: Aa3dz32zQnebN_7ChjTUyg + beetmover-checksums-gl-linux-nightly/opt: eIGXfsiOSo-98xfYN7JsDA + beetmover-checksums-gl-linux64-nightly/opt: bBgAcvzaTHWoOr5Y33T4Vw + beetmover-checksums-gl-macosx64-nightly/opt: FYnAh5PzTM6ZHdBRxLlFYQ + beetmover-checksums-gl-win32-nightly/opt: KfCGyXXbQRqWVXHWv8xW-g + beetmover-checksums-gl-win64-nightly/opt: Nn2KSAsNT3aBwYAVuZFbmg + beetmover-checksums-gn-linux-nightly/opt: WMTGheiPTsKUf4but2H8Uw + beetmover-checksums-gn-linux64-nightly/opt: MjB_ibNYQmGKUfKfsRGezA + beetmover-checksums-gn-macosx64-nightly/opt: PZ4WPdq9QxeiQNh37GNK7Q + beetmover-checksums-gn-win32-nightly/opt: fJ_vt-oURm6aS7keqPD4tg + beetmover-checksums-gn-win64-nightly/opt: ZCHVdjEfT9S1H1wssBSXbg + beetmover-checksums-gu-IN-linux-nightly/opt: LDPCYKo_Q_6SVU0pNQCWUA + beetmover-checksums-gu-IN-linux64-nightly/opt: QaSWJ0nbS_a-CBlzWAP-KQ + beetmover-checksums-gu-IN-macosx64-nightly/opt: EnU25H80S_2pFv0abXUmyQ + beetmover-checksums-gu-IN-win32-nightly/opt: c0wBz2qpTqCkDNZIxNfapA + beetmover-checksums-gu-IN-win64-nightly/opt: HuQ4lyUSSTOEB3lIjfEaSg + beetmover-checksums-he-linux-nightly/opt: MSiprEk_Quq8mNXihdP9Zg + beetmover-checksums-he-linux64-nightly/opt: DJTQqojgTNarZ1Id-UoM8Q + beetmover-checksums-he-macosx64-nightly/opt: dHMTQZJNRqi43gm56YaM6g + beetmover-checksums-he-win32-nightly/opt: KSgUA9-MSIqdjhtihsjPPg + beetmover-checksums-he-win64-nightly/opt: Zcr19iEuTFSu57KgLant3Q + beetmover-checksums-hi-IN-linux-nightly/opt: IKXkqv__S26xXT-TRd4xhA + beetmover-checksums-hi-IN-linux64-nightly/opt: ANDVLYxYQ0mmIySDSsazow + beetmover-checksums-hi-IN-macosx64-nightly/opt: f301R4HeRReM54bONFAxhg + beetmover-checksums-hi-IN-win32-nightly/opt: ZQPNI3mJRmamJhjx7fxE_w + beetmover-checksums-hi-IN-win64-nightly/opt: cWT3RkDfQbGRnA-MCNB0aA + beetmover-checksums-hr-linux-nightly/opt: atQj5TemT42EONHc37AUug + beetmover-checksums-hr-linux64-nightly/opt: D9k4jq0ZQsSE84BdserxTg + beetmover-checksums-hr-macosx64-nightly/opt: OYQQbOVIQJ-NcnuN4F0AKg + beetmover-checksums-hr-win32-nightly/opt: QI6qKgnGQNeA3SeceIowzg + beetmover-checksums-hr-win64-nightly/opt: Yq51Xx7iS-Cswg3aluf_Iw + beetmover-checksums-hsb-linux-nightly/opt: ew_fUB1cT8O2xLB5Y0HI6A + beetmover-checksums-hsb-linux64-nightly/opt: J_ixcONuQumY32726MpFqA + beetmover-checksums-hsb-macosx64-nightly/opt: PXwc__ERR9uN2coM7PgOeg + beetmover-checksums-hsb-win32-nightly/opt: S_-K4FzYQo6fnmrqYC-rnQ + beetmover-checksums-hsb-win64-nightly/opt: XoBSMLDTScqmB3EkQw5pOw + beetmover-checksums-hu-linux-nightly/opt: QrCrviqnSte1eSupJXD_5Q + beetmover-checksums-hu-linux64-nightly/opt: Qo9tRXMNQXK-eyl22RhNHA + beetmover-checksums-hu-macosx64-nightly/opt: J0Bud1DTS6q43I3KIw2Dgg + beetmover-checksums-hu-win32-nightly/opt: eef34q_PRpG1nXsaV9Jb7g + beetmover-checksums-hu-win64-nightly/opt: ADSujkS2R12gFVA4TRWT6w + beetmover-checksums-hy-AM-linux-nightly/opt: ZMitjcBrQ2SoBooaOGc0DA + beetmover-checksums-hy-AM-linux64-nightly/opt: GI2gMoM7SZy6IZzeorFRAg + beetmover-checksums-hy-AM-macosx64-nightly/opt: Vj9ZsK_ZRoWCFJgUVEpy3w + beetmover-checksums-hy-AM-win32-nightly/opt: AD5VkOAsQC-AcGt33PHjMQ + beetmover-checksums-hy-AM-win64-nightly/opt: Ecr5zOi6T5i3CaUu3qrc1A + beetmover-checksums-ia-linux-nightly/opt: fFhNnkAXS3eUurg1CnXcMA + beetmover-checksums-ia-linux64-nightly/opt: ZfscRLTrQl2LqzqrfEKF_Q + beetmover-checksums-ia-macosx64-nightly/opt: AO2Rw4cRTCGN6I1zwiGfiA + beetmover-checksums-ia-win32-nightly/opt: YUcXPDCuQQ6xKOW3wqFEBw + beetmover-checksums-ia-win64-nightly/opt: DYT0Oav_RsCZVe2ShGmzKw + beetmover-checksums-id-linux-nightly/opt: J0zM9_CaSBuoO1Ly54E13Q + beetmover-checksums-id-linux64-nightly/opt: FL_3VwtLRcSRNzptPDowtA + beetmover-checksums-id-macosx64-nightly/opt: S55c9Fo6T6qqAmMWQKz6cw + beetmover-checksums-id-win32-nightly/opt: fEgFOQg8R4mwNIxvgzTHdg + beetmover-checksums-id-win64-nightly/opt: NEKR1q2jRqmRcvzPvDtKUA + beetmover-checksums-is-linux-nightly/opt: LAnwBVUFSw2Nm88pGtxfBw + beetmover-checksums-is-linux64-nightly/opt: bvIwlitwTZuHq5Swas-1Yw + beetmover-checksums-is-macosx64-nightly/opt: WH2QA3SyRQyc5W9ru7hSmw + beetmover-checksums-is-win32-nightly/opt: ESvuEizXQBOGaMy-oh8VxA + beetmover-checksums-is-win64-nightly/opt: WWhRWIdTSlWbVDl4dm111A + beetmover-checksums-it-linux-nightly/opt: Xzc1mk5GS_2kOB7FqRdUmw + beetmover-checksums-it-linux64-nightly/opt: OaUkA9qWTNOOIVj3k_5NxA + beetmover-checksums-it-macosx64-nightly/opt: EQtXkYjnTuilID94IDqSSw + beetmover-checksums-it-win32-nightly/opt: eFu5lXoSRT6b4rJwUGo90Q + beetmover-checksums-it-win64-nightly/opt: aAxxxMSDSlaTnyrrpHp_DQ + beetmover-checksums-ja-JP-mac-macosx64-nightly/opt: aPpSDgJPS8-Ok5lpHBMkdQ + beetmover-checksums-ja-linux-nightly/opt: f_3u2HkbSJqIUSL_KrNIvg + beetmover-checksums-ja-linux64-nightly/opt: EYVvTuoJTpuSeiYAMi6Mzg + beetmover-checksums-ja-win32-nightly/opt: LffLFKZCQOOtFOW33zmPTA + beetmover-checksums-ja-win64-nightly/opt: L-KKZzvrTv-ZpqzUNdz90Q + beetmover-checksums-ka-linux-nightly/opt: PhZzwBO1Qeq0zVU9mh6SgA + beetmover-checksums-ka-linux64-nightly/opt: OxgxgU3IQeq1wwUi-71g6w + beetmover-checksums-ka-macosx64-nightly/opt: El1LiBVbTzCAuJm2aqk7Rw + beetmover-checksums-ka-win32-nightly/opt: TNevl5qNQpSInb7nyR9cyw + beetmover-checksums-ka-win64-nightly/opt: NFOOrvj7Q6CAoeUjfbZCXQ + beetmover-checksums-kab-linux-nightly/opt: VqB6ABwbQtCVxiyU_qyipA + beetmover-checksums-kab-linux64-nightly/opt: cIE2mOs1SVuQp61UJLfgdA + beetmover-checksums-kab-macosx64-nightly/opt: VJK8DlicTfWbA8pCXSX8mQ + beetmover-checksums-kab-win32-nightly/opt: Ky1bhHu1TfuBbyKPdddVew + beetmover-checksums-kab-win64-nightly/opt: LIFWFoWpR_qcZH7o8Z3O2A + beetmover-checksums-kk-linux-nightly/opt: cgj2dPMfRCGV3B6xfrIQtQ + beetmover-checksums-kk-linux64-nightly/opt: Y4w23QNDQxyzCzlczSlpuA + beetmover-checksums-kk-macosx64-nightly/opt: LIb-bTMPRDuAzdPpnQ9wgg + beetmover-checksums-kk-win32-nightly/opt: MbeDxhK1SW6Fbdz5PryDOg + beetmover-checksums-kk-win64-nightly/opt: L-hFoancRGqJQI3IvKJXbA + beetmover-checksums-km-linux-nightly/opt: YdXakrj5TGaS8GOeqVVb6A + beetmover-checksums-km-linux64-nightly/opt: a2wBMftDRUy7RlHIlWmNRw + beetmover-checksums-km-macosx64-nightly/opt: bBvgbPQDREKgGaHru8PCzA + beetmover-checksums-km-win32-nightly/opt: NXl1hecrTte5dpobtgR-Bw + beetmover-checksums-km-win64-nightly/opt: R9RaUwV9TOqboWIQZIOvkg + beetmover-checksums-kn-linux-nightly/opt: YuutwsHTQs-HDu7ni7eoqA + beetmover-checksums-kn-linux64-nightly/opt: A6305Sn0S2iI60t1436oqQ + beetmover-checksums-kn-macosx64-nightly/opt: GFDDI_yVSvyFN8Zhnz-_RQ + beetmover-checksums-kn-win32-nightly/opt: JIBZ9IpQTyGjf2fjm1kt4g + beetmover-checksums-kn-win64-nightly/opt: JopKMw75QKOuwGg68c50QA + beetmover-checksums-ko-linux-nightly/opt: ZZLCpWhMQ-OyHDz3zJOxsg + beetmover-checksums-ko-linux64-nightly/opt: AdWwweuoTZat97HNsmshQg + beetmover-checksums-ko-macosx64-nightly/opt: HBWu21ygQjCD7SJEFMTXHA + beetmover-checksums-ko-win32-nightly/opt: NTxgSD5KTpK14fmx6rQdQw + beetmover-checksums-ko-win64-nightly/opt: DpRbkPBiR0K8MTHu0iqoQA + beetmover-checksums-lij-linux-nightly/opt: PBoNb8VBT_mS7Xbkcs0lVg + beetmover-checksums-lij-linux64-nightly/opt: avLo4niqS9aPDjdT1VBMIQ + beetmover-checksums-lij-macosx64-nightly/opt: Gw8h7VZDTQWlquuhQOd1pA + beetmover-checksums-lij-win32-nightly/opt: fg36wu-BQKureYwMHbbLgw + beetmover-checksums-lij-win64-nightly/opt: aLneMYsMT6S28RoQ0B3kCQ + beetmover-checksums-linux-nightly/opt: RalqpuKoQaag_waj26qobA + beetmover-checksums-linux64-nightly/opt: NzVF7Rd7TyK2W7KW8-kQPw + beetmover-checksums-lt-linux-nightly/opt: NW3n0F33SUSJBRvElbBGmg + beetmover-checksums-lt-linux64-nightly/opt: YpOnNaQ7Tni1hSnMDAD_yQ + beetmover-checksums-lt-macosx64-nightly/opt: GPlDN60ZR9KRxRs4dtrQvA + beetmover-checksums-lt-win32-nightly/opt: bFvWSy_vTRiZQxQMCnGQYw + beetmover-checksums-lt-win64-nightly/opt: SyaijOw-SzKetWRTwHjA_g + beetmover-checksums-lv-linux-nightly/opt: Mt0z14esTrqEkbCk_2cNlw + beetmover-checksums-lv-linux64-nightly/opt: Ozri4Qb4TsqpqQIgHxikLg + beetmover-checksums-lv-macosx64-nightly/opt: T3ymHX50SWSICIy97Y7xaQ + beetmover-checksums-lv-win32-nightly/opt: NPD0KN-5TgauFqreOWShlQ + beetmover-checksums-lv-win64-nightly/opt: Ps1RtpP_SBSq7p9Jinq05Q + beetmover-checksums-macosx64-nightly/opt: alxxs9UWSxW6q5ahE-z3-A + beetmover-checksums-mai-linux-nightly/opt: UGjyl7vrTU2Xhc6lCFCEog + beetmover-checksums-mai-linux64-nightly/opt: cZMSlN2TT-O8thUURE9IRQ + beetmover-checksums-mai-macosx64-nightly/opt: WL8-eXOyS3iVT8r6GUMnAA + beetmover-checksums-mai-win32-nightly/opt: NpRjmcbqSYGciAN5BEdrog + beetmover-checksums-mai-win64-nightly/opt: ECQs2zHLQreOdXKFl3cRJw + beetmover-checksums-mk-linux-nightly/opt: c3PT1wNiRNWBVG4pA4XKtg + beetmover-checksums-mk-linux64-nightly/opt: NErtGCv6QTe3Cc1TJuimnw + beetmover-checksums-mk-macosx64-nightly/opt: HwtXtKoaTMenwkl6t1Jl_A + beetmover-checksums-mk-win32-nightly/opt: HyH2UMN6Sx2RpHUCw-_ryg + beetmover-checksums-mk-win64-nightly/opt: K5KJrqrGQ_a5FSr1qc3MyA + beetmover-checksums-ml-linux-nightly/opt: QrEsc4wsSvC5JrU71N_puw + beetmover-checksums-ml-linux64-nightly/opt: J9JcESfFSgO5-sMvL42JxQ + beetmover-checksums-ml-macosx64-nightly/opt: ab1YTx1UQ62pyA8-487Gkg + beetmover-checksums-ml-win32-nightly/opt: N3PiZyPzQa-uC3OPoVzg5g + beetmover-checksums-ml-win64-nightly/opt: flZgJp_vR_6J3BlKU_cMWQ + beetmover-checksums-mr-linux-nightly/opt: GpA3VC_mQAOy3mi0hlbdkQ + beetmover-checksums-mr-linux64-nightly/opt: JR6VkotdQ4WisoWd1iijRA + beetmover-checksums-mr-macosx64-nightly/opt: JdvTuwYGRJ-mpdoAqgxS8g + beetmover-checksums-mr-win32-nightly/opt: NIJzHfxgTqGZY0UO3NZ2DA + beetmover-checksums-mr-win64-nightly/opt: OAs5gJ_RQxK7uz4ojB5JEg + beetmover-checksums-ms-linux-nightly/opt: e75cs5p6TaCFPtm3-WFUQw + beetmover-checksums-ms-linux64-nightly/opt: RVRT648ATdW5PzL9hokfbA + beetmover-checksums-ms-macosx64-nightly/opt: Qb6kZ9a8TE-kj2VAQPnDfw + beetmover-checksums-ms-win32-nightly/opt: M8-K01oPToa2lMrZ0C29cg + beetmover-checksums-ms-win64-nightly/opt: XhwqDPPgTkK_2OjoXqKBQA + beetmover-checksums-my-linux-nightly/opt: QDVx5TX-SiGSNy3p7v_PWQ + beetmover-checksums-my-linux64-nightly/opt: WIUZFJYqSsu4GvtULLhKUQ + beetmover-checksums-my-macosx64-nightly/opt: ImueiT5aQzK5Wrg7Pl-nrw + beetmover-checksums-my-win32-nightly/opt: Z8YoKXCqSGCmjG0JcS6s1Q + beetmover-checksums-my-win64-nightly/opt: a_n7kem7RhyVHpdYeQLWNA + beetmover-checksums-nb-NO-linux-nightly/opt: We_KijuDQMWdYU7bzCrYvQ + beetmover-checksums-nb-NO-linux64-nightly/opt: bsgzIdtMSa2vJe0gQYuXmA + beetmover-checksums-nb-NO-macosx64-nightly/opt: ab3h2zrETQyCRUyAIa734A + beetmover-checksums-nb-NO-win32-nightly/opt: dXxOX8WgSBim0BULz1HM_w + beetmover-checksums-nb-NO-win64-nightly/opt: FBSYlXoQQnawTM5_C5OzPg + beetmover-checksums-ne-NP-linux-nightly/opt: S-_AVBieRs-GnzCEYwUJig + beetmover-checksums-ne-NP-linux64-nightly/opt: M7Vh5iyrSWCq37RioGfYgw + beetmover-checksums-ne-NP-macosx64-nightly/opt: NLuC7B6IRwq2WuaZ4hoZ7A + beetmover-checksums-ne-NP-win32-nightly/opt: F39VgsRURSeDqvbKWBVsAw + beetmover-checksums-ne-NP-win64-nightly/opt: flu-EUASQiKlgydWQegl4w + beetmover-checksums-nl-linux-nightly/opt: J-wWyn3UQQqy48zrf2MfVA + beetmover-checksums-nl-linux64-nightly/opt: OMooz00yTTKtW5IUjdxzHQ + beetmover-checksums-nl-macosx64-nightly/opt: Gm8rluB0QF2ly7aasfCBAQ + beetmover-checksums-nl-win32-nightly/opt: UGUmq3n3QpCDKs6y55bwnQ + beetmover-checksums-nl-win64-nightly/opt: asieBCuQTlmll6skT9DRAg + beetmover-checksums-nn-NO-linux-nightly/opt: QcMT-rCkSuSCBVIaF4fuxw + beetmover-checksums-nn-NO-linux64-nightly/opt: BlsUnDkMRHyEI4O50nZeTQ + beetmover-checksums-nn-NO-macosx64-nightly/opt: X382m5qURWegjeFyZJDh9A + beetmover-checksums-nn-NO-win32-nightly/opt: TAkkKyZBSg6FLMHIailLLA + beetmover-checksums-nn-NO-win64-nightly/opt: fi8EQaa3S8yddp0UTrbnnA + beetmover-checksums-oc-linux-nightly/opt: BWDg146RSZeKf_eY0UTwIA + beetmover-checksums-oc-linux64-nightly/opt: ayn27RK4SiSmplTl8ybC0Q + beetmover-checksums-oc-macosx64-nightly/opt: U6r6txoGSBSK8KZpbZDFRg + beetmover-checksums-oc-win32-nightly/opt: dggQe6jsQIezPvRWV2LowQ + beetmover-checksums-oc-win64-nightly/opt: Ir6vcTtiRUiiGMMx4vU1zw + beetmover-checksums-or-linux-nightly/opt: Udrp7McEQr-LFqn8IH4vBA + beetmover-checksums-or-linux64-nightly/opt: JMQuW5sXQhqsQ5oSnmvECg + beetmover-checksums-or-macosx64-nightly/opt: U70NqjA4S4qo8hhCc1--DA + beetmover-checksums-or-win32-nightly/opt: G3IKaFYqRhCMX8O4D50-JA + beetmover-checksums-or-win64-nightly/opt: c1lxOaNGT-K0bUmzTjb_7g + beetmover-checksums-pa-IN-linux-nightly/opt: WLDXv4ofTWm1z9pbuisjvQ + beetmover-checksums-pa-IN-linux64-nightly/opt: X1LMWI0DT_ie8JOat79YWg + beetmover-checksums-pa-IN-macosx64-nightly/opt: JdGeT1_BSY-i8OFHZXAHig + beetmover-checksums-pa-IN-win32-nightly/opt: Mr-JyAkZSm2adEI16y8wxw + beetmover-checksums-pa-IN-win64-nightly/opt: ICdXd_KATMueH846Dli1Cg + beetmover-checksums-pl-linux-nightly/opt: QzfNbwZgQ2-4fy44NzbJPQ + beetmover-checksums-pl-linux64-nightly/opt: Xki9V98nSwGtJXc7pgm9og + beetmover-checksums-pl-macosx64-nightly/opt: btw5e5e4RZi8oCIFOmHhNQ + beetmover-checksums-pl-win32-nightly/opt: PWrE9YtRTvmUhJxRf71SSA + beetmover-checksums-pl-win64-nightly/opt: TIpJuDT_QP6A6K-9AhKQnA + beetmover-checksums-pt-BR-linux-nightly/opt: JobU6RvyRvWd06OAxOCKKA + beetmover-checksums-pt-BR-linux64-nightly/opt: SzzgC2clRF-AN5GQF1oMhg + beetmover-checksums-pt-BR-macosx64-nightly/opt: RJ4WQokpT7K_8UzlfFaAjA + beetmover-checksums-pt-BR-win32-nightly/opt: JnFsjCeXQKG9GNhfYsyhPQ + beetmover-checksums-pt-BR-win64-nightly/opt: U5sgUsl7RdWKOR0i4d7Hig + beetmover-checksums-pt-PT-linux-nightly/opt: VHzTQo1hRlut1AL3LT0cJQ + beetmover-checksums-pt-PT-linux64-nightly/opt: W5sYMVC6QBijmuUd5gELKQ + beetmover-checksums-pt-PT-macosx64-nightly/opt: bqJdEOFiS1-KnEJT0E7Fkg + beetmover-checksums-pt-PT-win32-nightly/opt: LnCzhRTISr-E94NQnL38hQ + beetmover-checksums-pt-PT-win64-nightly/opt: GXeLufuKQem-nRgZMSIqLQ + beetmover-checksums-rm-linux-nightly/opt: dnXfRJJbQYinzS4IVFQa6w + beetmover-checksums-rm-linux64-nightly/opt: AUqpqHUARs-ww4aHntd7mg + beetmover-checksums-rm-macosx64-nightly/opt: XpJoxRgHT_Wof_FZsyxkjw + beetmover-checksums-rm-win32-nightly/opt: XIGmok7HTaeaX7jyJlZw8A + beetmover-checksums-rm-win64-nightly/opt: ekaNiGvyRxm8EroGgzQYWA + beetmover-checksums-ro-linux-nightly/opt: PiDd5SKMQCiH8Bw5Wwlbpw + beetmover-checksums-ro-linux64-nightly/opt: SpwqPu6xQvWHj_YEOj5iZw + beetmover-checksums-ro-macosx64-nightly/opt: SpuuEVRARWyB0cA9vHIM5A + beetmover-checksums-ro-win32-nightly/opt: c2kymHrqTq2Bo4WvKZvzGg + beetmover-checksums-ro-win64-nightly/opt: TGIAMuNLRLa9KeS6b7KY1w + beetmover-checksums-ru-linux-nightly/opt: F580ngfQRDyzVElHtPMaZg + beetmover-checksums-ru-linux64-nightly/opt: BSGQ9OXPT16Sf-8oCPsMVQ + beetmover-checksums-ru-macosx64-nightly/opt: EXxus861STe77mtdoSXIyA + beetmover-checksums-ru-win32-nightly/opt: D7Eg4kbsRS2GCHiIC2ipNw + beetmover-checksums-ru-win64-nightly/opt: b6E0mXbCSDKSBtCMXDakQw + beetmover-checksums-si-linux-nightly/opt: VRhmfcaITRalTHPHVxFrtA + beetmover-checksums-si-linux64-nightly/opt: HgGMtD7pRPWxPyOgGQAMxQ + beetmover-checksums-si-macosx64-nightly/opt: Ih4xJWITQsSXhqraNZG7Xw + beetmover-checksums-si-win32-nightly/opt: fBf5nJtnTM2pk3W2Dd665A + beetmover-checksums-si-win64-nightly/opt: H5fmbPvVQ9-F0-Ewqhwn2g + beetmover-checksums-sk-linux-nightly/opt: SlIiJnIgQGKkvDRrGarKOg + beetmover-checksums-sk-linux64-nightly/opt: HX_zSzbSTYWglsINdLmaoQ + beetmover-checksums-sk-macosx64-nightly/opt: TlZk49IfQ7CM5LM8K0TPzw + beetmover-checksums-sk-win32-nightly/opt: Xkhys5J4QwKuyoW0JShYsQ + beetmover-checksums-sk-win64-nightly/opt: X0ATm1G9QfKUX_jZbcDcUQ + beetmover-checksums-sl-linux-nightly/opt: W90N6V_hSAObL1HLcEsO0g + beetmover-checksums-sl-linux64-nightly/opt: I86kBbw_StC5-rtBf9kpow + beetmover-checksums-sl-macosx64-nightly/opt: Xo0PHWuGTA2TmqxL_uCYgA + beetmover-checksums-sl-win32-nightly/opt: ckyoUa7MTbCsmVtgLBzDEQ + beetmover-checksums-sl-win64-nightly/opt: PgepVp75SpSfrLZiLCTkYA + beetmover-checksums-son-linux-nightly/opt: Xu3RZrlASpKfAZbNyA5nXg + beetmover-checksums-son-linux64-nightly/opt: eC_jKJr8QRSFOs-OE6Xnug + beetmover-checksums-son-macosx64-nightly/opt: Ez8xfGuMSd-pKmUKSKLOCw + beetmover-checksums-son-win32-nightly/opt: DgakwJ6cS-OvcKD5PuSDnQ + beetmover-checksums-son-win64-nightly/opt: cyucWTfYRlGVHJaarLHTig + beetmover-checksums-sq-linux-nightly/opt: OAcCtRW2RbuXXJ_aZr_Jcw + beetmover-checksums-sq-linux64-nightly/opt: BQrohtsDS0ylvgYEg1cJQg + beetmover-checksums-sq-macosx64-nightly/opt: NStEIH7LQzOEYuJLOy2GMw + beetmover-checksums-sq-win32-nightly/opt: EU_L-tBhQtGi8kfPA90nmg + beetmover-checksums-sq-win64-nightly/opt: IhWzeRx-Sx6poyRDUoiAgA + beetmover-checksums-sr-linux-nightly/opt: YC6bSkjoQu2LgK5N5_mzaA + beetmover-checksums-sr-linux64-nightly/opt: Rz4qN5bFRpOxbmVYFwer3A + beetmover-checksums-sr-macosx64-nightly/opt: aDYBTl1uS5iBwEor1reCtg + beetmover-checksums-sr-win32-nightly/opt: IfrzG_Y8TRufFdVJI46NEg + beetmover-checksums-sr-win64-nightly/opt: MMnqcyicTbKWPHJ1d35pag + beetmover-checksums-sv-SE-linux-nightly/opt: CjhU50sFTJGo3ijxotALRA + beetmover-checksums-sv-SE-linux64-nightly/opt: GNN_AcmkQ2mQlKipVoNe3A + beetmover-checksums-sv-SE-macosx64-nightly/opt: CP3LwYY-TjKPm--_KGUQ2g + beetmover-checksums-sv-SE-win32-nightly/opt: TmpACjulQ4KyJsOWgzB7Yg + beetmover-checksums-sv-SE-win64-nightly/opt: CJKYk_dwSeKSVl082XHrRg + beetmover-checksums-ta-linux-nightly/opt: aATIxaO6Qd6uk9PqNub5Ig + beetmover-checksums-ta-linux64-nightly/opt: N8IMAik8SMmbWCAHac2nfw + beetmover-checksums-ta-macosx64-nightly/opt: IvxRSwvdSfuUXIVDCPTdfA + beetmover-checksums-ta-win32-nightly/opt: F9gsD2gEQ4SFNmHilqkhzA + beetmover-checksums-ta-win64-nightly/opt: S0W5hxc8S_2OHun1T7tuPg + beetmover-checksums-te-linux-nightly/opt: BIH5MAZwQhatXXCoX1kqgA + beetmover-checksums-te-linux64-nightly/opt: WpNg7fdyRaG8a8Nrtrbh4Q + beetmover-checksums-te-macosx64-nightly/opt: akaJVM2sSMi2OMn9T-fIZg + beetmover-checksums-te-win32-nightly/opt: D7MmLxLESjiwhw8rNl-tNw + beetmover-checksums-te-win64-nightly/opt: Iuc3v5qJTx-SOPRUxs5sTA + beetmover-checksums-th-linux-nightly/opt: HESyv6KnQc-lD1viq-Dnqg + beetmover-checksums-th-linux64-nightly/opt: WKPgyZRIQoiNkob7_ShzoA + beetmover-checksums-th-macosx64-nightly/opt: APisBl97Q_m3hGXCVrXLZA + beetmover-checksums-th-win32-nightly/opt: EOBT_yNbS1-GCsFqJumsrw + beetmover-checksums-th-win64-nightly/opt: Gxfkk6IwTVyZVDFR-Iu0LA + beetmover-checksums-tr-linux-nightly/opt: RjmBvEygR46UWg5LK7HOww + beetmover-checksums-tr-linux64-nightly/opt: PHF2N4ufSEeJS_DK1nB58A + beetmover-checksums-tr-macosx64-nightly/opt: UmnnaBvrT8Cfx8tUf9gFAQ + beetmover-checksums-tr-win32-nightly/opt: JlWE0TJZSROHq0hRb9kONQ + beetmover-checksums-tr-win64-nightly/opt: S-8_FKW5Th2ZnxHll8LQcQ + beetmover-checksums-uk-linux-nightly/opt: DbQ_SpIyTdOmfjxdJpBTqw + beetmover-checksums-uk-linux64-nightly/opt: OY_tSyxBSB2xXit8WB-HMA + beetmover-checksums-uk-macosx64-nightly/opt: R9XPW2J4R6yZ3lD7-i0B6Q + beetmover-checksums-uk-win32-nightly/opt: B-antu3qRqS3IYwcK606_g + beetmover-checksums-uk-win64-nightly/opt: VSwhFEQNTkW5t2Ldao_CHg + beetmover-checksums-ur-linux-nightly/opt: Utahe7OzSri-13cCZa6T9w + beetmover-checksums-ur-linux64-nightly/opt: YLjDWVOnSKWlziob_3JSbA + beetmover-checksums-ur-macosx64-nightly/opt: L9sUSNTnRiq3uAJUr-Nr_w + beetmover-checksums-ur-win32-nightly/opt: f2BfnoDYTDWK4RWDzLL1iQ + beetmover-checksums-ur-win64-nightly/opt: BSgNScmPTOu-CqQY8e_zQQ + beetmover-checksums-uz-linux-nightly/opt: U00j2dk5QY-O8KjohcWAFA + beetmover-checksums-uz-linux64-nightly/opt: Dl3xWcuIQ8CMUk2xI9l4tQ + beetmover-checksums-uz-macosx64-nightly/opt: IIAf9pAtRfeLLA9CQlHGXw + beetmover-checksums-uz-win32-nightly/opt: br0MIF0PRrWjogLp7hGiZg + beetmover-checksums-uz-win64-nightly/opt: avf1lZJPRKa2O1MfmGW9xQ + beetmover-checksums-vi-linux-nightly/opt: C-vuSxDlTQGKqexrJV3STA + beetmover-checksums-vi-linux64-nightly/opt: MBFC21k9QnSttXrulB4spQ + beetmover-checksums-vi-macosx64-nightly/opt: AGFnjA1OTWyotsaRuxrQFw + beetmover-checksums-vi-win32-nightly/opt: FO-9bu6BQRqu5yBPlbBpWA + beetmover-checksums-vi-win64-nightly/opt: VVFixA13RzSbPO409ppGhQ + beetmover-checksums-win32-nightly/opt: N3roPN9GRoOW4ZCVaXteoA + beetmover-checksums-win64-nightly/opt: Je0T0VBFRC6_lPDOl2OmYw + beetmover-checksums-xh-linux-nightly/opt: EJSiHJLGT72dksMJ6KY7tw + beetmover-checksums-xh-linux64-nightly/opt: ZfPHMutYQmiwQYqjniB0IQ + beetmover-checksums-xh-macosx64-nightly/opt: DCjtdlWfR1WLcuajiozLsw + beetmover-checksums-xh-win32-nightly/opt: X6OBMxqwTS6kM8KnhY8GYQ + beetmover-checksums-xh-win64-nightly/opt: FSzOOasxRkKdED8SGDvtFQ + beetmover-checksums-zh-CN-linux-nightly/opt: SfdhJImWTfSZsRr25yxM0w + beetmover-checksums-zh-CN-linux64-nightly/opt: M3kEp0wpS2S42oF81MBhkA + beetmover-checksums-zh-CN-macosx64-nightly/opt: daKa2m-hROGXFE-TIRJ6Xw + beetmover-checksums-zh-CN-win32-nightly/opt: JYwQMOI2S_OOGXlmKFkaKg + beetmover-checksums-zh-CN-win64-nightly/opt: VAyxa_tAR4WCchLfTA97Og + beetmover-checksums-zh-TW-linux-nightly/opt: UGZ_ovbNRFm2LDAp4JhD2A + beetmover-checksums-zh-TW-linux64-nightly/opt: dBWqhDRkQBCibNr5xjR0-A + beetmover-checksums-zh-TW-macosx64-nightly/opt: D98QimVbQqOxsrHXlNJi7w + beetmover-checksums-zh-TW-win32-nightly/opt: e2cG-5CTQqKcwffoRkLFyA + beetmover-checksums-zh-TW-win64-nightly/opt: ZpzesNn0R6Gj6mgFpqhBWg + beetmover-repackage-ach-linux-nightly/opt: T0TMBosvRCqpmD4aviGeSA + beetmover-repackage-ach-linux64-nightly/opt: SMBOLn7oQ9We8EK-8B1vEQ + beetmover-repackage-ach-macosx64-nightly/opt: TpYugzhCS1S8N07oDpm1Iw + beetmover-repackage-ach-win32-nightly/opt: N6AuE-76RwW_rY2k_hlFLg + beetmover-repackage-ach-win64-nightly/opt: K5u4Rr2yS0GfEw1cmyEYvQ + beetmover-repackage-af-linux-nightly/opt: E0_TAQ6ERCmJzk4MURDdiw + beetmover-repackage-af-linux64-nightly/opt: NWK90IISRK-5jH86a4igqw + beetmover-repackage-af-macosx64-nightly/opt: RZ28deERRPGwtMnzGQr20g + beetmover-repackage-af-win32-nightly/opt: avl_qJNNRsCPG8COasRQCQ + beetmover-repackage-af-win64-nightly/opt: RrJqKLlxQRCxkFklnN7L_w + beetmover-repackage-an-linux-nightly/opt: E7JPu99bSHSVOppHZ5eR1A + beetmover-repackage-an-linux64-nightly/opt: ZdziLgxpRKqzDfQ_ROYEfg + beetmover-repackage-an-macosx64-nightly/opt: ag1oD52eTMOYzBGLeApWMA + beetmover-repackage-an-win32-nightly/opt: O4UWhndYQz2MiHacXj4sDQ + beetmover-repackage-an-win64-nightly/opt: VxeZ1rivReKUcfHOFYPOVw + beetmover-repackage-ar-linux-nightly/opt: FqTnlFa9RwW7eGrmiFoaiw + beetmover-repackage-ar-linux64-nightly/opt: MrKdqB37Qo-1iOCwP85bGA + beetmover-repackage-ar-macosx64-nightly/opt: dqFHFYIyTuGcWUzSrR5WLw + beetmover-repackage-ar-win32-nightly/opt: XZXzihUoRaiXMxTA_AORnA + beetmover-repackage-ar-win64-nightly/opt: HtYBksRoSr-GvHEXf7WWYw + beetmover-repackage-as-linux-nightly/opt: aWQWZZBaSIeX4rMVHGNMqA + beetmover-repackage-as-linux64-nightly/opt: L53DblPpTnGvxAyq8vNsng + beetmover-repackage-as-macosx64-nightly/opt: LYfSWCXjTPq2vYRkv8qZnA + beetmover-repackage-as-win32-nightly/opt: dDpBXBOORJ6hlkc5FJ7Fsg + beetmover-repackage-as-win64-nightly/opt: WbzrVTD5TjGuavrke9Za6A + beetmover-repackage-ast-linux-nightly/opt: LdDGHLTwSK6RJPspfJSobQ + beetmover-repackage-ast-linux64-nightly/opt: Ld5GC_WpSYmVIPOJgppqOw + beetmover-repackage-ast-macosx64-nightly/opt: WZlLLRXBRXe34_Jj4iVKWg + beetmover-repackage-ast-win32-nightly/opt: SNZDUw_dTeOLdjoXtcOsdg + beetmover-repackage-ast-win64-nightly/opt: E-kjRKAmQXKg77hNBueM3w + beetmover-repackage-az-linux-nightly/opt: PPTL6shFRLOx8csCco-zQQ + beetmover-repackage-az-linux64-nightly/opt: IE4-H9OvTvGjbHB7fwt1eA + beetmover-repackage-az-macosx64-nightly/opt: Xa2pYNLdR-euPYinzN5g_g + beetmover-repackage-az-win32-nightly/opt: eZHSrVvESqmtODMiLfwl-Q + beetmover-repackage-az-win64-nightly/opt: aWYhHe6MSomon2ldyUQFEQ + beetmover-repackage-be-linux-nightly/opt: dplioIgmSOiDG3Zp7WHl_Q + beetmover-repackage-be-linux64-nightly/opt: QB3vQVnCRgOlLOdR-PvT5Q + beetmover-repackage-be-macosx64-nightly/opt: UICXFoRPRNC3S-DFUGt4ow + beetmover-repackage-be-win32-nightly/opt: ASyb8Ap8R2OSgC5sGGZLsQ + beetmover-repackage-be-win64-nightly/opt: OHxrtwhUQ62RHaxE44eq3g + beetmover-repackage-bg-linux-nightly/opt: Ou2XZvsJRLC08T0JqG6P7A + beetmover-repackage-bg-linux64-nightly/opt: dRVqmBD9Qba0BEAD1KWU4A + beetmover-repackage-bg-macosx64-nightly/opt: Cg4jHH2nSEytt61CujbxeA + beetmover-repackage-bg-win32-nightly/opt: ZfVbqhMaSUqiglS8QuWWjQ + beetmover-repackage-bg-win64-nightly/opt: YZK-hW4TRBydjNZe7qDTuQ + beetmover-repackage-bn-BD-linux-nightly/opt: S2MKeHWJQRuX4NsLDaeK0w + beetmover-repackage-bn-BD-linux64-nightly/opt: CAreRKRHSECR7yoaAC0NeA + beetmover-repackage-bn-BD-macosx64-nightly/opt: S08zcgg8QKOTaZsJnfWDYA + beetmover-repackage-bn-BD-win32-nightly/opt: Q7Ybo_k1RjC5n6zRgbZzaA + beetmover-repackage-bn-BD-win64-nightly/opt: bcP991rKSeKzspDg3qJL2w + beetmover-repackage-bn-IN-linux-nightly/opt: bda5WeiVReGdpVN7tPyH-Q + beetmover-repackage-bn-IN-linux64-nightly/opt: FEiYOnAmSc-nhxfKzVsmoA + beetmover-repackage-bn-IN-macosx64-nightly/opt: Xp2EvBidRmGXt7zvolkWZg + beetmover-repackage-bn-IN-win32-nightly/opt: amdxmjZ1QrS1yD6gUe-feQ + beetmover-repackage-bn-IN-win64-nightly/opt: CKpV5w1rSiuwuBgg5pHJig + beetmover-repackage-br-linux-nightly/opt: C2MZ74sfQi2WslG6lMV_2w + beetmover-repackage-br-linux64-nightly/opt: HfDZ4KBKTPSaSkD0eVoDxA + beetmover-repackage-br-macosx64-nightly/opt: Bq6D8yuvSYqA4Q1_I6j04A + beetmover-repackage-br-win32-nightly/opt: VFigux2XSjq-Xr4fy4Yr_g + beetmover-repackage-br-win64-nightly/opt: R2UoQHZTR3myClDcCj1ctg + beetmover-repackage-bs-linux-nightly/opt: Axcb736qRmqLeEyYuCKoUA + beetmover-repackage-bs-linux64-nightly/opt: C-hci-p4QkSHszi_SrvsSA + beetmover-repackage-bs-macosx64-nightly/opt: dJmWmoQVRCGtU9e4oPVP8g + beetmover-repackage-bs-win32-nightly/opt: JtxMGV2ESMuHtyJje1Cpgw + beetmover-repackage-bs-win64-nightly/opt: LquOOkWiTpyR-GmDlQr3zg + beetmover-repackage-ca-linux-nightly/opt: F-IOYRWNTuWEhAkDWdhu7A + beetmover-repackage-ca-linux64-nightly/opt: H3SOLS9DRX2SnriZJrypVA + beetmover-repackage-ca-macosx64-nightly/opt: PNyvVqm2RfSnYOb144ju4A + beetmover-repackage-ca-win32-nightly/opt: Y8V9Lzi5SjiYOtQVVLC1EA + beetmover-repackage-ca-win64-nightly/opt: AJdVhSumQAaCaPAhGVzzbQ + beetmover-repackage-cak-linux-nightly/opt: b6Yj_IlISoWTy77IW53GDQ + beetmover-repackage-cak-linux64-nightly/opt: B0pLeywxQwGOZukGSibzWA + beetmover-repackage-cak-macosx64-nightly/opt: AbCq3OIIRmGsuT1ggtn31A + beetmover-repackage-cak-win32-nightly/opt: f5UP4tHlQGKt6G3Zo3nPgg + beetmover-repackage-cak-win64-nightly/opt: WcNvjPyVTc22DenVmwDzpA + beetmover-repackage-cs-linux-nightly/opt: d6hnCwCUSJuUz_mpSczYPg + beetmover-repackage-cs-linux64-nightly/opt: Oxh_RUuFQZqBD3n35da4wA + beetmover-repackage-cs-macosx64-nightly/opt: FWVp-9QDTRKyM6JRaVC9gw + beetmover-repackage-cs-win32-nightly/opt: NCLQJSJnRNW-KoQHA9M-qw + beetmover-repackage-cs-win64-nightly/opt: TwJNHkcqR_uJr-Tk7P79Rw + beetmover-repackage-cy-linux-nightly/opt: e2dS0rD4TX-inqSrFOlUXg + beetmover-repackage-cy-linux64-nightly/opt: WRtqUx53Tze90dv1l2DH9A + beetmover-repackage-cy-macosx64-nightly/opt: O6rX30GpTt-IKgUWS1hSSw + beetmover-repackage-cy-win32-nightly/opt: KFDMdxsvSjatAXDEEXzymg + beetmover-repackage-cy-win64-nightly/opt: WetOqmV_SuyaS2srsIwqOg + beetmover-repackage-da-linux-nightly/opt: QSec8ATMSbWlbAAbUi4-YQ + beetmover-repackage-da-linux64-nightly/opt: BqjCEDqsTaSDpyv8pGiwUQ + beetmover-repackage-da-macosx64-nightly/opt: dHhK0kxZThS9WmKnrvfAOQ + beetmover-repackage-da-win32-nightly/opt: NrUPE6sPRxmHDXKUyLj_7Q + beetmover-repackage-da-win64-nightly/opt: D7PhB8F_QsSUpaSX5eEqtA + beetmover-repackage-de-linux-nightly/opt: B7BCad7YTCqiAbQbmzb4_w + beetmover-repackage-de-linux64-nightly/opt: RF-oI_jRQtmnkpbLbIjsTw + beetmover-repackage-de-macosx64-nightly/opt: JdvSjqo0QP61AY_PKr6VIA + beetmover-repackage-de-win32-nightly/opt: bHe8ErWnTB2g38dHj_AAuA + beetmover-repackage-de-win64-nightly/opt: CIa5HsrFQZaks6ArJTv3LA + beetmover-repackage-dsb-linux-nightly/opt: DKF9tyH3SFO2_rrAAFefzA + beetmover-repackage-dsb-linux64-nightly/opt: VNe8NA6xSQiWSxd6EYtN-Q + beetmover-repackage-dsb-macosx64-nightly/opt: NGMiMIfdTnaUHWkNKw7Sxw + beetmover-repackage-dsb-win32-nightly/opt: JW7NzbCyTByfO-bEgVOIjg + beetmover-repackage-dsb-win64-nightly/opt: KrX-Jf5ESaqJBH57WeyojA + beetmover-repackage-el-linux-nightly/opt: VfVbz8qRRV6jaDIo1aneVg + beetmover-repackage-el-linux64-nightly/opt: C58pRnjIQSGv-TA3fje0_w + beetmover-repackage-el-macosx64-nightly/opt: LzWTGu8kRYmgNJeeDAwt8Q + beetmover-repackage-el-win32-nightly/opt: Q1J7Iz1WSZe5JN4Wf4zqSg + beetmover-repackage-el-win64-nightly/opt: IEdwqr_9QKCD3wcqyWhYEA + beetmover-repackage-en-CA-linux-nightly/opt: IAIkG-7eTKW6oTnAz0H6Fg + beetmover-repackage-en-CA-linux64-nightly/opt: NFXWi-O5TBKFObRNHD1Dyw + beetmover-repackage-en-CA-macosx64-nightly/opt: IckvqAvBTWOov3Gdvcd6Zg + beetmover-repackage-en-CA-win32-nightly/opt: TTZKctYVS62Oal250037QQ + beetmover-repackage-en-CA-win64-nightly/opt: AnQm3wzeRG607PNa_fjJPQ + beetmover-repackage-en-GB-linux-nightly/opt: GRl_mZHQTFmM1WgYCWpXwA + beetmover-repackage-en-GB-linux64-nightly/opt: Vpl9VBy3Q1-oupRgJosz4w + beetmover-repackage-en-GB-macosx64-nightly/opt: Fpp1x6CoTZWIh5r_V1Sxlw + beetmover-repackage-en-GB-win32-nightly/opt: VNnPqG2GQiOWasSbbQsd1g + beetmover-repackage-en-GB-win64-nightly/opt: EW50p_jrSxabYX3IC52gnw + beetmover-repackage-en-ZA-linux-nightly/opt: JNuMJqdvTTGfNTPyXYXkkg + beetmover-repackage-en-ZA-linux64-nightly/opt: Mh8vEurDQ-Kt8478p_WcPg + beetmover-repackage-en-ZA-macosx64-nightly/opt: P_OxKVYdT1OfzBVFdzJjeQ + beetmover-repackage-en-ZA-win32-nightly/opt: HSPTjbPETEOEZ0CQ3lTGGw + beetmover-repackage-en-ZA-win64-nightly/opt: BCONUj6HQ1awAi46B6e3Uw + beetmover-repackage-eo-linux-nightly/opt: NMocu83QSvuPQzitQkyclA + beetmover-repackage-eo-linux64-nightly/opt: butTzclsTQGvWKhLJixNHg + beetmover-repackage-eo-macosx64-nightly/opt: GAuPMH7HR7Si2dApBxTM6Q + beetmover-repackage-eo-win32-nightly/opt: Gk_7RX8UThyt6kkaCpAaUA + beetmover-repackage-eo-win64-nightly/opt: ZEWMtXoxQHKKjB5wX3FaZQ + beetmover-repackage-es-AR-linux-nightly/opt: QHItbozbRiOsbaXvlAADvA + beetmover-repackage-es-AR-linux64-nightly/opt: JiCO9DXpQNG4y-kLMCbPvw + beetmover-repackage-es-AR-macosx64-nightly/opt: JJhGu8G-R6ey5HMrt8N7WA + beetmover-repackage-es-AR-win32-nightly/opt: d3pvNDsRRRCpIT1huhHPqA + beetmover-repackage-es-AR-win64-nightly/opt: Jm4fFZwHQdioDLMzx9GD9Q + beetmover-repackage-es-CL-linux-nightly/opt: HlrVp-eCTAGKa2qHjrf90A + beetmover-repackage-es-CL-linux64-nightly/opt: CimY8oC2TlubOwGLk2v-ZA + beetmover-repackage-es-CL-macosx64-nightly/opt: fBAykKCOQDKQqW7I4mpGXg + beetmover-repackage-es-CL-win32-nightly/opt: WypRc2nQTy6klu5lqqiIuA + beetmover-repackage-es-CL-win64-nightly/opt: TD-jCgOfTcaxpVmkKVGe2A + beetmover-repackage-es-ES-linux-nightly/opt: Brva-VkuR2Wp1FrMlHz1hA + beetmover-repackage-es-ES-linux64-nightly/opt: GWEBcq_RRpKrejQlVqc1mQ + beetmover-repackage-es-ES-macosx64-nightly/opt: MSzu9QJ4QTGmrd09lMe31w + beetmover-repackage-es-ES-win32-nightly/opt: HHlaojwRQaW7N8HDskyzmA + beetmover-repackage-es-ES-win64-nightly/opt: cy43GuciQXG97nvDe-6dQA + beetmover-repackage-es-MX-linux-nightly/opt: Osts3rvvSAu2zwjKJNDz8g + beetmover-repackage-es-MX-linux64-nightly/opt: N_GOxtRxSIyQ1XwLbHQzTQ + beetmover-repackage-es-MX-macosx64-nightly/opt: RdwHq7uURx-xyUdFnIKH7g + beetmover-repackage-es-MX-win32-nightly/opt: cKpQWdnzQHK5URpITV7t7w + beetmover-repackage-es-MX-win64-nightly/opt: fmrv_3DmTRWOxErDAcrNyw + beetmover-repackage-et-linux-nightly/opt: c-Awag1KTWGOfg1FyGEl6Q + beetmover-repackage-et-linux64-nightly/opt: R5k74SNoSPyfunfnRi1JZA + beetmover-repackage-et-macosx64-nightly/opt: W57B_YuvTceh7Neol-UN2w + beetmover-repackage-et-win32-nightly/opt: W2oCMAvlT3aI_N_8WyYCMw + beetmover-repackage-et-win64-nightly/opt: BB6VI46WQpOTqmL5KBIpnw + beetmover-repackage-eu-linux-nightly/opt: Dm7Pl-yITXycabzxuUpFpQ + beetmover-repackage-eu-linux64-nightly/opt: Oe7tlJQ9S563-Hl-3Sk_yg + beetmover-repackage-eu-macosx64-nightly/opt: Dt4t448kTliszaEj2gUXig + beetmover-repackage-eu-win32-nightly/opt: TezOlH5qQFSfDolqCHYnkQ + beetmover-repackage-eu-win64-nightly/opt: Pi9a_Q6kSV2bREnSjVT2dw + beetmover-repackage-fa-linux-nightly/opt: EdkCIA51RluWp3WXe4sXxA + beetmover-repackage-fa-linux64-nightly/opt: WiG-8z8SQAmhM8fuVNgE3g + beetmover-repackage-fa-macosx64-nightly/opt: F96eva97Tq6p9Sx0MnKNVw + beetmover-repackage-fa-win32-nightly/opt: fntJsAgOTSmoKeeqCLU5oQ + beetmover-repackage-fa-win64-nightly/opt: YS9csF60SYGgsenCMotZAw + beetmover-repackage-ff-linux-nightly/opt: dOWlHfp-R_SfW2dQ5Tat8Q + beetmover-repackage-ff-linux64-nightly/opt: SkxXmkfOT5aPQOO_-9YGiw + beetmover-repackage-ff-macosx64-nightly/opt: T8T1hIwfQUm_GsorEnvmug + beetmover-repackage-ff-win32-nightly/opt: GmZlf_SyRfiPQ2v-MWhnJQ + beetmover-repackage-ff-win64-nightly/opt: f05mB4DGSTCOd5G4fWXxBQ + beetmover-repackage-fi-linux-nightly/opt: Z_RBq4ARSgi7ASmRP6sn1A + beetmover-repackage-fi-linux64-nightly/opt: ISgrf-WMQXGFnjlZU9JAEA + beetmover-repackage-fi-macosx64-nightly/opt: At6Vi3kCQSmwHYSFL4Z1eQ + beetmover-repackage-fi-win32-nightly/opt: NywzLPJtQp2aB4eIPocx2g + beetmover-repackage-fi-win64-nightly/opt: WF7Ex2OAQWm7Z5Ni8ZVaHQ + beetmover-repackage-fr-linux-nightly/opt: EWMNpDQlTqmnx1oOsQnCZA + beetmover-repackage-fr-linux64-nightly/opt: O3bAikO5QDa5YItV78UzUA + beetmover-repackage-fr-macosx64-nightly/opt: ZWDUa0F6STi-0TDjhQYcsg + beetmover-repackage-fr-win32-nightly/opt: SB9auZqJQuugTezOWdMjmQ + beetmover-repackage-fr-win64-nightly/opt: LS_t59ItQs-B0X6hIjDY0A + beetmover-repackage-fy-NL-linux-nightly/opt: VexwdunSSB22NOSajyx0qw + beetmover-repackage-fy-NL-linux64-nightly/opt: Pcx7JRK3QtW2O-3_OdG17A + beetmover-repackage-fy-NL-macosx64-nightly/opt: AgR_e1yLR1e5jYa_82-PdQ + beetmover-repackage-fy-NL-win32-nightly/opt: GjXo07vRQjOFSbRxT-S_iA + beetmover-repackage-fy-NL-win64-nightly/opt: BqW5_HxxSTKi6rFAeggbxg + beetmover-repackage-ga-IE-linux-nightly/opt: Cs-PemPORdC1wAldJGJUmA + beetmover-repackage-ga-IE-linux64-nightly/opt: anwRhctkQxGPoGr7V9lN_g + beetmover-repackage-ga-IE-macosx64-nightly/opt: bYtOPqgAT1m3oaJeu_MK4g + beetmover-repackage-ga-IE-win32-nightly/opt: NwS1ExwMR7aEuw1akzG1ug + beetmover-repackage-ga-IE-win64-nightly/opt: PAZLsQhwSv-YFNBeZ--oZw + beetmover-repackage-gd-linux-nightly/opt: KGCT5EpORd-WJqi4q26fDA + beetmover-repackage-gd-linux64-nightly/opt: Tk_LgZLbTM6yoJ_ELnoW0A + beetmover-repackage-gd-macosx64-nightly/opt: UOyLHhKJRTubiod6ls2Gtg + beetmover-repackage-gd-win32-nightly/opt: fW4ZUoSDSZusn08Syfr2BA + beetmover-repackage-gd-win64-nightly/opt: DL4cUiWjQWO7O3wn1r_6qA + beetmover-repackage-gl-linux-nightly/opt: FW6PoOi_TCKY5iXTubuvOQ + beetmover-repackage-gl-linux64-nightly/opt: b0N9DALdRRmoRCIq62SV9w + beetmover-repackage-gl-macosx64-nightly/opt: LaOIsTc6Qxuq0QMjW2IkRw + beetmover-repackage-gl-win32-nightly/opt: fhXpQOvRRHuGVsObxQ669Q + beetmover-repackage-gl-win64-nightly/opt: Iqpn3BgoT-2iwjQ_hGkH_Q + beetmover-repackage-gn-linux-nightly/opt: PnpOCozXT3-fhdoeJQeB4g + beetmover-repackage-gn-linux64-nightly/opt: IcB7LmWRTHmy0qiXQuDiow + beetmover-repackage-gn-macosx64-nightly/opt: IqB6MsfVT26Kz8jIdogyuA + beetmover-repackage-gn-win32-nightly/opt: Jnkr1JjqRIKq5kMLDOjiiQ + beetmover-repackage-gn-win64-nightly/opt: MryT0QCMRGS8PeRHYLiaDg + beetmover-repackage-gu-IN-linux-nightly/opt: Ylg2TUnPRMm1h21fyYRmbw + beetmover-repackage-gu-IN-linux64-nightly/opt: P8n0O-A2SIaKGujWD7VPIQ + beetmover-repackage-gu-IN-macosx64-nightly/opt: ML8Z9HAAQ-6R7qfjzd413A + beetmover-repackage-gu-IN-win32-nightly/opt: ZNAp2RfBQ8utinrV1u9RRw + beetmover-repackage-gu-IN-win64-nightly/opt: NfvhMspdRLqHq1AUYjBBxw + beetmover-repackage-he-linux-nightly/opt: H5nTycQuRoerZiFzRKXReg + beetmover-repackage-he-linux64-nightly/opt: Gg6xdHCHRJW5rR0VQ1OJPA + beetmover-repackage-he-macosx64-nightly/opt: cGITz_8ZTJOEFdR_0oMqqg + beetmover-repackage-he-win32-nightly/opt: Cd0chyHTR5WjSpxjpc_SMQ + beetmover-repackage-he-win64-nightly/opt: bxQor4tBSMKFHiZXubUvJQ + beetmover-repackage-hi-IN-linux-nightly/opt: BS0PzZ1XTCuP41KFS6d-eA + beetmover-repackage-hi-IN-linux64-nightly/opt: Bs2LBPx6T6mMzkN1HgiSSw + beetmover-repackage-hi-IN-macosx64-nightly/opt: HtJjNZFrQ2qNWS05dyaMUA + beetmover-repackage-hi-IN-win32-nightly/opt: dq-WYunJSf2hAi6FoBFS9g + beetmover-repackage-hi-IN-win64-nightly/opt: RL36I4i7RMyweQpqP9LTPQ + beetmover-repackage-hr-linux-nightly/opt: Hcxr_OTNRbKPPj2wTHYssw + beetmover-repackage-hr-linux64-nightly/opt: cd1vLOttT66coEZmlUwVmw + beetmover-repackage-hr-macosx64-nightly/opt: CMziF882RW2hoSpjDqUHpA + beetmover-repackage-hr-win32-nightly/opt: KO5LlTChQgeNdlTIFQ8SDQ + beetmover-repackage-hr-win64-nightly/opt: b1z-Or8lTf-1yhlzGWvWpA + beetmover-repackage-hsb-linux-nightly/opt: YMbXbudAR2ew-GxelGpFtg + beetmover-repackage-hsb-linux64-nightly/opt: ZX6YsGWsS82FZBnoYPsJEQ + beetmover-repackage-hsb-macosx64-nightly/opt: U800fpO_QSSH8QRvUwn_qg + beetmover-repackage-hsb-win32-nightly/opt: UwJJSlZaRKKv74xlaOiPQA + beetmover-repackage-hsb-win64-nightly/opt: VuPZy77_TI2odFC_4TFc5Q + beetmover-repackage-hu-linux-nightly/opt: Pb_7eNeCTVmQaZwka2oG7Q + beetmover-repackage-hu-linux64-nightly/opt: QtETo4BFT62G5vCUUGgZYA + beetmover-repackage-hu-macosx64-nightly/opt: Fbn-q5JkQFiKIYoJuqg-Xw + beetmover-repackage-hu-win32-nightly/opt: Qk2uljhfTUqI0NGVxvAkGg + beetmover-repackage-hu-win64-nightly/opt: StsjcF2wQy2c-1oRcvh6Dg + beetmover-repackage-hy-AM-linux-nightly/opt: YPFp7-zeSV-fsoAAjvsaig + beetmover-repackage-hy-AM-linux64-nightly/opt: CfkG0fjwSFmoxp_BR9fE1w + beetmover-repackage-hy-AM-macosx64-nightly/opt: YNn_UQlGTYmmA78HoPDjlQ + beetmover-repackage-hy-AM-win32-nightly/opt: RLXO_OIwRV20Sm6E6meprg + beetmover-repackage-hy-AM-win64-nightly/opt: UeJegHhVTqqPkSvsV8SDEw + beetmover-repackage-ia-linux-nightly/opt: JZxZvNNWRC27uayH1YpJPw + beetmover-repackage-ia-linux64-nightly/opt: ZTTG0eBiQFaBffqEvxMlMg + beetmover-repackage-ia-macosx64-nightly/opt: F6pR1g1OSeSJsegxn04P0A + beetmover-repackage-ia-win32-nightly/opt: KnP8tnqbTwmGX_m3HIjPfA + beetmover-repackage-ia-win64-nightly/opt: QYt7460cSLqS7o84rsTsAA + beetmover-repackage-id-linux-nightly/opt: EafEPfk4TaOVp36dLdB_rw + beetmover-repackage-id-linux64-nightly/opt: KEEAVOlJQkC5MdNJkLYgqA + beetmover-repackage-id-macosx64-nightly/opt: F0n1IWfyRiWkrchjeywInw + beetmover-repackage-id-win32-nightly/opt: Y14ViEVFQoe5S6Q3JbxLew + beetmover-repackage-id-win64-nightly/opt: d8-sY-BYQ1K5xRw1RY2rlQ + beetmover-repackage-is-linux-nightly/opt: B3r_x9VgQK200oOKouvXEA + beetmover-repackage-is-linux64-nightly/opt: Wlj9Pr1USP2HOINAdoi7aw + beetmover-repackage-is-macosx64-nightly/opt: F5JleVV6SHq-U0dWQGaBwg + beetmover-repackage-is-win32-nightly/opt: QvpQYqoHThaMghWhySwmuQ + beetmover-repackage-is-win64-nightly/opt: FsLYhHHVSg6XwJCovzi-Zw + beetmover-repackage-it-linux-nightly/opt: CJvhiWc0TKasyZ1EBEnuRw + beetmover-repackage-it-linux64-nightly/opt: GhxdqpQ0QoO9ga8tgcWJ1A + beetmover-repackage-it-macosx64-nightly/opt: LNdDVm9fTui3obbtjmGlRg + beetmover-repackage-it-win32-nightly/opt: e_pGFdmRSPGX2e4Prrh1Rw + beetmover-repackage-it-win64-nightly/opt: GXeT_7_GS-e_WgEsfGdjhw + beetmover-repackage-ja-JP-mac-macosx64-nightly/opt: b6opRl6PSS6KUIqOO4_9YA + beetmover-repackage-ja-linux-nightly/opt: TRygNdiLSNO20HkQxFNxWg + beetmover-repackage-ja-linux64-nightly/opt: XH4tiChMRgSBHWF-NAB0tQ + beetmover-repackage-ja-win32-nightly/opt: YR6WXHtXTbuHYQufry8ZCA + beetmover-repackage-ja-win64-nightly/opt: MfCIujg8RtSk-H-JCSbtzA + beetmover-repackage-ka-linux-nightly/opt: C-YjvdgUSC2fk9OYqVqG3w + beetmover-repackage-ka-linux64-nightly/opt: HTW-bqDoRXqNTnleJCNj7A + beetmover-repackage-ka-macosx64-nightly/opt: A9K8nrzBQgKQqyGPLOpIdA + beetmover-repackage-ka-win32-nightly/opt: JKmWjMTGTrCjLMSXsSXEeg + beetmover-repackage-ka-win64-nightly/opt: QEPuLwFkTGWlZsKxjrD0Dw + beetmover-repackage-kab-linux-nightly/opt: TCf5t_4_TtOCfKxSQjebfg + beetmover-repackage-kab-linux64-nightly/opt: e1IDNIhLShWLPJW9aLj10g + beetmover-repackage-kab-macosx64-nightly/opt: JPeCKEacRNGZ3Oa-fLOC4g + beetmover-repackage-kab-win32-nightly/opt: YlJt8v4JTnCI5tQkRXPp3w + beetmover-repackage-kab-win64-nightly/opt: QxztbZxWSOuEd0nDvGLE0Q + beetmover-repackage-kk-linux-nightly/opt: ZjdiltPgSKm3x9g0MpkQ7A + beetmover-repackage-kk-linux64-nightly/opt: SFNO0O4QQPe1EZ6aWo0F2w + beetmover-repackage-kk-macosx64-nightly/opt: ewpAZknIQK2HpjKkvykCtg + beetmover-repackage-kk-win32-nightly/opt: MmeUkaDhQWCy9-bZDPtNjQ + beetmover-repackage-kk-win64-nightly/opt: R-ni211MSXKA1iuXDgbK1w + beetmover-repackage-km-linux-nightly/opt: cdX-RfXzSkasFVxlFbCrAg + beetmover-repackage-km-linux64-nightly/opt: UYK-2knSSwWMEtzpbKp7GQ + beetmover-repackage-km-macosx64-nightly/opt: C2OzZK2tSTWy8K-k65-eGA + beetmover-repackage-km-win32-nightly/opt: N_McP1auTqymybGQAl-WJA + beetmover-repackage-km-win64-nightly/opt: S9rRDUqWR8e3udNmBH_5Nw + beetmover-repackage-kn-linux-nightly/opt: BEQl5usRTQKRCsscoW-iDA + beetmover-repackage-kn-linux64-nightly/opt: edtYE1mRQAqq1H1O3L52Yg + beetmover-repackage-kn-macosx64-nightly/opt: AXGLoQMsQcOk5Vj90fdPyg + beetmover-repackage-kn-win32-nightly/opt: VmxFOfpISyihEoHNwfZu6w + beetmover-repackage-kn-win64-nightly/opt: JYiWx82BSHW8MWybvQntaA + beetmover-repackage-ko-linux-nightly/opt: WgW1LPSjR8u4lbwmO26f2g + beetmover-repackage-ko-linux64-nightly/opt: cFAjbJqWTtmcJ_JViFAZ5A + beetmover-repackage-ko-macosx64-nightly/opt: HzfyPtQqTbOY-Sr37e0C6g + beetmover-repackage-ko-win32-nightly/opt: fT_XLNyMSICeWFNdOmJVEg + beetmover-repackage-ko-win64-nightly/opt: MJWmh3DUSEO2Pr-y2EM8aw + beetmover-repackage-lij-linux-nightly/opt: fvEN7tJLRia6VFb4HP-G8A + beetmover-repackage-lij-linux64-nightly/opt: CqOUKJdIRjGneyE51DE-MA + beetmover-repackage-lij-macosx64-nightly/opt: C5JYSXUqTUynTEv7DFWJMQ + beetmover-repackage-lij-win32-nightly/opt: Is0HW-j1RBKMCaKg9L2O8A + beetmover-repackage-lij-win64-nightly/opt: EyM0yBOPSJ-8BkJQSP7J6g + beetmover-repackage-linux-nightly/opt: Me-zHWyySOCwDp_0-S0P6A + beetmover-repackage-linux64-nightly/opt: f9hEcIfwQw-4t4CxU3s6rw + beetmover-repackage-lt-linux-nightly/opt: bCnhY6yfT36_oNqtQ1vGAw + beetmover-repackage-lt-linux64-nightly/opt: HgF0Yg2vQQOaHRG0pMo1yw + beetmover-repackage-lt-macosx64-nightly/opt: RMCnnJFCT4uqSVdd2f1OFA + beetmover-repackage-lt-win32-nightly/opt: HYU4ghhWQdC0CqiyA0sUrA + beetmover-repackage-lt-win64-nightly/opt: R4qldvvST2SP_fPiuTKnSA + beetmover-repackage-lv-linux-nightly/opt: emkD4WgxTlqwjgqCXmSeGQ + beetmover-repackage-lv-linux64-nightly/opt: UKm84q62TK6IGslrQo6DKw + beetmover-repackage-lv-macosx64-nightly/opt: Rgqc7eRzRea0-7yT_wlo2Q + beetmover-repackage-lv-win32-nightly/opt: MDkP1lVlSW2BU4xY7m3v_Q + beetmover-repackage-lv-win64-nightly/opt: IUd6w6unSaCVySzTpPtNDg + beetmover-repackage-macosx64-nightly/opt: U-1KjmHDSfitmIloCZqTmA + beetmover-repackage-mai-linux-nightly/opt: fXFGYTUDTLC4W-dBK9B38A + beetmover-repackage-mai-linux64-nightly/opt: JretRfOwQUGi415SmM6kKw + beetmover-repackage-mai-macosx64-nightly/opt: YOKs3fJjR4alOJDx5WJ42A + beetmover-repackage-mai-win32-nightly/opt: VvZ5lsbETQ2T2o7OPCowBA + beetmover-repackage-mai-win64-nightly/opt: FX5g1bNOQtyUbezKKRxWnQ + beetmover-repackage-mk-linux-nightly/opt: Ro3vajMJTBeYla0S-8AE7A + beetmover-repackage-mk-linux64-nightly/opt: BIpBu_Z_Rtyj9DwknxK8Qw + beetmover-repackage-mk-macosx64-nightly/opt: MvfNg5JISR2CxChpMrGcVQ + beetmover-repackage-mk-win32-nightly/opt: D80Sj1j_TGOKdf0KfyjmUg + beetmover-repackage-mk-win64-nightly/opt: Uep4KIwXQyCnD7dF87IGEg + beetmover-repackage-ml-linux-nightly/opt: B6sAHufJSTy6MXmNxWJwgg + beetmover-repackage-ml-linux64-nightly/opt: IPPsAYyeSUqQ6KL_XZQaWA + beetmover-repackage-ml-macosx64-nightly/opt: BemH4RmeTGOyMjDBWjyqXA + beetmover-repackage-ml-win32-nightly/opt: J0UzKvakS5KA_vPK1h6kqg + beetmover-repackage-ml-win64-nightly/opt: XUlYvDiOSkatP1XDlLmZng + beetmover-repackage-mr-linux-nightly/opt: cx0vcDkfS6KQ24aKLBlNLQ + beetmover-repackage-mr-linux64-nightly/opt: BmsYgMb7S5uYkd3BI4ct-A + beetmover-repackage-mr-macosx64-nightly/opt: XTm97ikkQ6OvAAikNCKkkQ + beetmover-repackage-mr-win32-nightly/opt: H1AILI1VRjWpQ_gyZal3YA + beetmover-repackage-mr-win64-nightly/opt: GGxzRgx7S1udIsStyoF0NQ + beetmover-repackage-ms-linux-nightly/opt: PVgLgKFMQQCVvgnng01pNQ + beetmover-repackage-ms-linux64-nightly/opt: KgdyxWNkSSiuUmZEVYDcIQ + beetmover-repackage-ms-macosx64-nightly/opt: RZgT-3mKRFqq04YEoKkeBg + beetmover-repackage-ms-win32-nightly/opt: UaVPwKBdSdqfGPdQgozobg + beetmover-repackage-ms-win64-nightly/opt: SZvYmKTqQBuOs3qxc4nWRw + beetmover-repackage-my-linux-nightly/opt: c1G8knuPS5m1MLbwl_kqUw + beetmover-repackage-my-linux64-nightly/opt: NdhruHSAQ9uZD2EaRM52xg + beetmover-repackage-my-macosx64-nightly/opt: U1z8gBDHQgCSnqUxzDLcYA + beetmover-repackage-my-win32-nightly/opt: FPlTcyUZSpq91UA4DpSDEA + beetmover-repackage-my-win64-nightly/opt: N5YS7RFERfyU6RFY0RXkFg + beetmover-repackage-nb-NO-linux-nightly/opt: JNz9MBhVTkmjD4_G3reRTg + beetmover-repackage-nb-NO-linux64-nightly/opt: APW6-pRZSqaHzb9WpglpMA + beetmover-repackage-nb-NO-macosx64-nightly/opt: J3ykhHcLQtmgQzg3P2zwLA + beetmover-repackage-nb-NO-win32-nightly/opt: VGZDOejmT-WTu_PfYdqIOA + beetmover-repackage-nb-NO-win64-nightly/opt: X-TIAN7PTOqCd_4t2KoHUA + beetmover-repackage-ne-NP-linux-nightly/opt: GflbzSu7TsWc-rgIXVp1FQ + beetmover-repackage-ne-NP-linux64-nightly/opt: b9yE9-3vT7mhcjUKKdG80A + beetmover-repackage-ne-NP-macosx64-nightly/opt: NW-O4N-wTJGPGOZFlrcNOQ + beetmover-repackage-ne-NP-win32-nightly/opt: B34zzKEFSdaivBcRzXem6g + beetmover-repackage-ne-NP-win64-nightly/opt: bWfeYkC6SCOhSpV-UhHlyw + beetmover-repackage-nl-linux-nightly/opt: TgYr-u9bT4Skoc7RaNg0zw + beetmover-repackage-nl-linux64-nightly/opt: VQNZmoQ4TEK2iXZM-kPK_g + beetmover-repackage-nl-macosx64-nightly/opt: N5saas7-T5-TxOuLdpvgdw + beetmover-repackage-nl-win32-nightly/opt: SxlnPNIHQyKuzKrUTyVswA + beetmover-repackage-nl-win64-nightly/opt: XZFul6aER9yoFeiIzqlzKw + beetmover-repackage-nn-NO-linux-nightly/opt: EVEaeA2NSuuOuHK6t_llow + beetmover-repackage-nn-NO-linux64-nightly/opt: ebt9r7gpRzG3XyGm9uor8A + beetmover-repackage-nn-NO-macosx64-nightly/opt: XsJobL55TV-hrM_dbwaDBQ + beetmover-repackage-nn-NO-win32-nightly/opt: M243GtiATEqO9ASMIxN34w + beetmover-repackage-nn-NO-win64-nightly/opt: HoW_8LQwRtqWbUR7FFAYfw + beetmover-repackage-oc-linux-nightly/opt: MEyzC5qSRAW2N4RzAmeEJw + beetmover-repackage-oc-linux64-nightly/opt: BT3ptDLBTqS3f2GgcUFVmw + beetmover-repackage-oc-macosx64-nightly/opt: fpcP_UmdTV6OJ0fYtJcGvw + beetmover-repackage-oc-win32-nightly/opt: DfWTHOJmQjuijQInA76yhA + beetmover-repackage-oc-win64-nightly/opt: QJQzmGmcQ0qFouK3_v4m6A + beetmover-repackage-or-linux-nightly/opt: bzheFQObShur7JW7gpXReg + beetmover-repackage-or-linux64-nightly/opt: MWHd3t9VSG2NMy91l3KCfA + beetmover-repackage-or-macosx64-nightly/opt: MPhSRqRNTA6RadJF--th4Q + beetmover-repackage-or-win32-nightly/opt: VeDho8ZuTuSBoPW_-fZ7wg + beetmover-repackage-or-win64-nightly/opt: Kvn_zQQQTvywHsI-aB5WGA + beetmover-repackage-pa-IN-linux-nightly/opt: MrNrjnScT6C19lBy0Ebsxw + beetmover-repackage-pa-IN-linux64-nightly/opt: JQE_ESNmRxC-lKOCHFxlkw + beetmover-repackage-pa-IN-macosx64-nightly/opt: E1mexvZiQpKjCun-EwSk2w + beetmover-repackage-pa-IN-win32-nightly/opt: ECG4GAG1Ryy_A-Gi5ISBRQ + beetmover-repackage-pa-IN-win64-nightly/opt: eJ-9-rkASzW84M0awiYm5Q + beetmover-repackage-pl-linux-nightly/opt: dOa0gX5iRna4zPc9JwAW_A + beetmover-repackage-pl-linux64-nightly/opt: RJqn-XGJTGm3LwxFQva-0g + beetmover-repackage-pl-macosx64-nightly/opt: TZNAPhCgTJuDzapWg4SUwQ + beetmover-repackage-pl-win32-nightly/opt: Q-VaPgObSJeTGAdOtVvzMQ + beetmover-repackage-pl-win64-nightly/opt: MJaui02-QROqbDue5_XTeQ + beetmover-repackage-pt-BR-linux-nightly/opt: cGzoBII-QoCyAWEkagMRpg + beetmover-repackage-pt-BR-linux64-nightly/opt: aPy4ojGqRqiP9qZfYA6r2Q + beetmover-repackage-pt-BR-macosx64-nightly/opt: YampoF2XTx2KixbCZxb2Dg + beetmover-repackage-pt-BR-win32-nightly/opt: Zz2mUu8pTg2Ho82Z6AH0iQ + beetmover-repackage-pt-BR-win64-nightly/opt: Z0xSecrRSr22LjJUWwilqw + beetmover-repackage-pt-PT-linux-nightly/opt: O1dPSI3DR8SQQsiuhMKxeQ + beetmover-repackage-pt-PT-linux64-nightly/opt: cteaZ5-vT5KXsWnILhoTIg + beetmover-repackage-pt-PT-macosx64-nightly/opt: fp-MCOCGRJeDYl_LGy46Mg + beetmover-repackage-pt-PT-win32-nightly/opt: B0nxsE2pSIOljA2ceB_Q3w + beetmover-repackage-pt-PT-win64-nightly/opt: GZk8aRtNTBSWAOP-7umQKQ + beetmover-repackage-rm-linux-nightly/opt: c3X7HBUjRiu2i2HBIAS4rA + beetmover-repackage-rm-linux64-nightly/opt: BAK_1kX2SauObBedx2fcxQ + beetmover-repackage-rm-macosx64-nightly/opt: JYaC9qZPSriUQDfsvzZaRA + beetmover-repackage-rm-win32-nightly/opt: WqXpIvKtTp6694RqlcobwA + beetmover-repackage-rm-win64-nightly/opt: ZIRmf10GQ0OKbKM3pkscAg + beetmover-repackage-ro-linux-nightly/opt: YCI9zXqaQwiHVYQ1bJDJRw + beetmover-repackage-ro-linux64-nightly/opt: MuOKoCEuSBCO_ZU59Jc_WA + beetmover-repackage-ro-macosx64-nightly/opt: HEBygsKlSFeghU_kcJ94Zw + beetmover-repackage-ro-win32-nightly/opt: VG0cb04FQwCH3jNw2hsdJg + beetmover-repackage-ro-win64-nightly/opt: IHaxxt69S62poikbx_zWLQ + beetmover-repackage-ru-linux-nightly/opt: T5s1hFWAQPajvGXOKzY3ZA + beetmover-repackage-ru-linux64-nightly/opt: FyzvGw8aSu-tixhYBHdcOw + beetmover-repackage-ru-macosx64-nightly/opt: PN0CpjZ3R1mCLT831Ey1IQ + beetmover-repackage-ru-win32-nightly/opt: fPAComkYTiCdLNMbJk4Uzg + beetmover-repackage-ru-win64-nightly/opt: P5Zn27QcQ1K2-FD19VxGkQ + beetmover-repackage-si-linux-nightly/opt: bT8zRu7RS2ugks47cgInYQ + beetmover-repackage-si-linux64-nightly/opt: I-gcz9cTRdukvuXLnfkiTA + beetmover-repackage-si-macosx64-nightly/opt: XkChb3EuQUWpwpUTsn4htA + beetmover-repackage-si-win32-nightly/opt: CZmRbZ25TDOrH5s0i8YR6Q + beetmover-repackage-si-win64-nightly/opt: fdDzyhQdSH6dlTZlwwunCQ + beetmover-repackage-sk-linux-nightly/opt: GI1Au7JqSnS3OW8QdY873w + beetmover-repackage-sk-linux64-nightly/opt: YNEPHOttS-agBy1BJ31R1g + beetmover-repackage-sk-macosx64-nightly/opt: O7wSRTChSCGknGZW3tpi_w + beetmover-repackage-sk-win32-nightly/opt: VsqAcp2XRKiM0C7dtIN1wA + beetmover-repackage-sk-win64-nightly/opt: WWHe3zPBQ3u4H6gzdauB_w + beetmover-repackage-sl-linux-nightly/opt: KqDt7iGXSyqdn0mT6xU7bg + beetmover-repackage-sl-linux64-nightly/opt: fCS_TYl9SfOPR7KpgDKMJw + beetmover-repackage-sl-macosx64-nightly/opt: PbNO0hmiTs2EvToUEJdzyA + beetmover-repackage-sl-win32-nightly/opt: RAOMzvmYQ_i0E5X2MQS-Ag + beetmover-repackage-sl-win64-nightly/opt: JV5LtWGrQ9KI5fLSNr7gJQ + beetmover-repackage-son-linux-nightly/opt: JiVT_KV9SIC18gQWDr4CbQ + beetmover-repackage-son-linux64-nightly/opt: eNANePuKQ9GIrA38O9zZjA + beetmover-repackage-son-macosx64-nightly/opt: Z9rk9DKGTtG42rWzneBXvA + beetmover-repackage-son-win32-nightly/opt: F4AmQPKsQgehWxYuhjrhsA + beetmover-repackage-son-win64-nightly/opt: fY-VdpbsSayXSw8wxHkO4A + beetmover-repackage-sq-linux-nightly/opt: PX_81qu5SZ-mFmGHxRMPgg + beetmover-repackage-sq-linux64-nightly/opt: FZi7ipQ-TLqQ1utsG5mNKg + beetmover-repackage-sq-macosx64-nightly/opt: BcAVDoD4TduHVbEBh9YhWg + beetmover-repackage-sq-win32-nightly/opt: PjFeLVezS92ws2YA5shHBw + beetmover-repackage-sq-win64-nightly/opt: Fe0V0HPVQ4izzaWEVweR9Q + beetmover-repackage-sr-linux-nightly/opt: fz9CiU7GTvyVpsejimbeUQ + beetmover-repackage-sr-linux64-nightly/opt: H05nVlkaTjC5vHdoB68M2w + beetmover-repackage-sr-macosx64-nightly/opt: UNidIAwNRZiNrp0SNQo0rA + beetmover-repackage-sr-win32-nightly/opt: WUnQGWCvT6KEVAsOwo5POQ + beetmover-repackage-sr-win64-nightly/opt: Df3UUu4BTI6UHpui7Gtb2A + beetmover-repackage-sv-SE-linux-nightly/opt: QngZEldsTPeQG8g8boia3g + beetmover-repackage-sv-SE-linux64-nightly/opt: QxWxmChURIeXMlJmOccU6w + beetmover-repackage-sv-SE-macosx64-nightly/opt: WLw-TkLkQnqmciPsgStthQ + beetmover-repackage-sv-SE-win32-nightly/opt: DDh9T8ntTRmWyETCtlTTQA + beetmover-repackage-sv-SE-win64-nightly/opt: UEfsXAOxQOKnT7tKE_xl6g + beetmover-repackage-ta-linux-nightly/opt: D6UE8DTZS8amLKtkj2m7_A + beetmover-repackage-ta-linux64-nightly/opt: XWiwh1FaSlKOm1QYrLrl7Q + beetmover-repackage-ta-macosx64-nightly/opt: TAh4ZYhzTKGLR7JYCA90PQ + beetmover-repackage-ta-win32-nightly/opt: b9Xx7o9fSd21MLJGQgjwwg + beetmover-repackage-ta-win64-nightly/opt: dfiHqcJFSnaZANv3vpg4EA + beetmover-repackage-te-linux-nightly/opt: NHwcQ26KSmirnnlqDH9kiw + beetmover-repackage-te-linux64-nightly/opt: WqtlenMJShqHtQW3swGjyg + beetmover-repackage-te-macosx64-nightly/opt: fUb8Iu1TRzSNoSin0OkWdQ + beetmover-repackage-te-win32-nightly/opt: Rlhj7gNcRUqgFixrksvC6Q + beetmover-repackage-te-win64-nightly/opt: YkZMT5SHQ1-nC7c1FHQyDg + beetmover-repackage-th-linux-nightly/opt: Tdqaq0eWTyOUENkal7qfdg + beetmover-repackage-th-linux64-nightly/opt: EQNZoYRGSI-VcygKNlxnTA + beetmover-repackage-th-macosx64-nightly/opt: BZFqbV8rQzGhTHtTfpWCIg + beetmover-repackage-th-win32-nightly/opt: ZKLsYmGuRmCxE-CUEOjZcQ + beetmover-repackage-th-win64-nightly/opt: PVNnBNfqReyQcmksZeWo2g + beetmover-repackage-tr-linux-nightly/opt: dnSUfpZ1R9qy5J-LsJbKFg + beetmover-repackage-tr-linux64-nightly/opt: bGl7OUUhT_aB2HxqXFoxqg + beetmover-repackage-tr-macosx64-nightly/opt: cxBleeNVSQ-tXusDoYwwsw + beetmover-repackage-tr-win32-nightly/opt: HDILTRFQTNC96YflOaMKIw + beetmover-repackage-tr-win64-nightly/opt: P-AjUy0oR2ipFRIgBbiB3A + beetmover-repackage-uk-linux-nightly/opt: XLKOnuQgT268M7O41MLa6Q + beetmover-repackage-uk-linux64-nightly/opt: Y-iTrDx8TqK2M5W4YXyoeg + beetmover-repackage-uk-macosx64-nightly/opt: EVMMuGG_R6eyaLawETsvkw + beetmover-repackage-uk-win32-nightly/opt: ea-FlI9qReq5ONL-yXSVkg + beetmover-repackage-uk-win64-nightly/opt: ZZMEgWKrSzq9qvjL_3ahfA + beetmover-repackage-ur-linux-nightly/opt: T3IQwb3wRzC9U6jI-Fj5Vg + beetmover-repackage-ur-linux64-nightly/opt: W8GWNO5HQYu1ReCy8gkxBQ + beetmover-repackage-ur-macosx64-nightly/opt: Ks9jDBFMTkSBE1RMvCOwzA + beetmover-repackage-ur-win32-nightly/opt: G8aCz8_RQS2Y64T2XtdaXA + beetmover-repackage-ur-win64-nightly/opt: W1B8gk3YQNW9cxK2px9t9A + beetmover-repackage-uz-linux-nightly/opt: YUJ__9UwRYSwKdrEpRDZ1A + beetmover-repackage-uz-linux64-nightly/opt: N9zg7Y2IQRS49mZDi5Eamw + beetmover-repackage-uz-macosx64-nightly/opt: HMNr8ur1S1emIM7cScrYjg + beetmover-repackage-uz-win32-nightly/opt: ACF1YV4rSN-l9Atjc-nNeA + beetmover-repackage-uz-win64-nightly/opt: Q08EpvoFRl2tQYmvF9OQGA + beetmover-repackage-vi-linux-nightly/opt: cX7xvX22TWm58zfXhmYivQ + beetmover-repackage-vi-linux64-nightly/opt: PpZg1ymzRxqrOme6Z1qlAQ + beetmover-repackage-vi-macosx64-nightly/opt: S1OqWMsnQO6DTt06zQHUTQ + beetmover-repackage-vi-win32-nightly/opt: F6pb2od6TwCTipWcJqj1ag + beetmover-repackage-vi-win64-nightly/opt: Mp7XvJD0TROqGDkD4Ab6ug + beetmover-repackage-win32-nightly/opt: fgJmEzGmRXKAkCdIn8nnMg + beetmover-repackage-win64-nightly/opt: F0WbwTyqTRiNlVGzgFwfQQ + beetmover-repackage-xh-linux-nightly/opt: epHgRVelQNK5bBGePnWWeQ + beetmover-repackage-xh-linux64-nightly/opt: Oi2h8B0GRH2wX8mwyxtg3Q + beetmover-repackage-xh-macosx64-nightly/opt: R-hh5SRJT3q_kiJNbvbBbQ + beetmover-repackage-xh-win32-nightly/opt: J3tN1CUQQYGUdQn9L9Bjsg + beetmover-repackage-xh-win64-nightly/opt: bP6vG5pVTKmfJdLVrfKfMQ + beetmover-repackage-zh-CN-linux-nightly/opt: QTkW1NfEQo2q0z5l3DSOOQ + beetmover-repackage-zh-CN-linux64-nightly/opt: IKFKel8jR9CuJoGuYw2W8Q + beetmover-repackage-zh-CN-macosx64-nightly/opt: WJfz9N5KSMiH4KjTsz29AA + beetmover-repackage-zh-CN-win32-nightly/opt: HKcwO6c6T6qedymgg71ECw + beetmover-repackage-zh-CN-win64-nightly/opt: dQYD8vxiSFSId2lPZNRCsQ + beetmover-repackage-zh-TW-linux-nightly/opt: XwAWrAFGQOKVsGHWRx7WHA + beetmover-repackage-zh-TW-linux64-nightly/opt: CQSQu06WTZ-cbJwQpIRSPQ + beetmover-repackage-zh-TW-macosx64-nightly/opt: UzH7TVTVQvOLxmJBkcVk1A + beetmover-repackage-zh-TW-win32-nightly/opt: XsFDo3ZKQ4Sg5O50DrrKVw + beetmover-repackage-zh-TW-win64-nightly/opt: QXd0FyDPQTSbmSww111liQ + beetmover-signed-langpacks-build-linux-nightly/opt: ToqKjwXvR9aRyjtap_-ADQ + beetmover-signed-langpacks-build-linux64-nightly/opt: NusBVJ5zQyuXLaUa2NvE1Q + beetmover-signed-langpacks-build-macosx64-nightly/opt: NwWDXJhlQDSvRDs35VY9Eg + beetmover-signed-langpacks-build-win32-nightly/opt: WPFILzZqR7GfmFyUkHx7jw + beetmover-signed-langpacks-build-win64-nightly/opt: PUc0gQPmROW2mFSuu5BX4A + beetmover-signed-langpacks-nightly-l10n-linux-nightly-1/opt: HgNXpPwzRs-Op9MdkDd_CQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-10/opt: L9tno3VuThO2-4_wsP2xEQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-11/opt: WxTF0LoyQZWnm6fTda3vvQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-12/opt: Nsy-ad-9QR65Ewpx1DZTkw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-13/opt: BT7EPC9sTfmHtv0m_T8g_w + beetmover-signed-langpacks-nightly-l10n-linux-nightly-14/opt: aRAkaNV0SPGovE_oIsQZ7Q + beetmover-signed-langpacks-nightly-l10n-linux-nightly-15/opt: DEUFxH4rRmKlZLmBtJq7Pg + beetmover-signed-langpacks-nightly-l10n-linux-nightly-16/opt: IsK0yFVnTCG8_V_ENsOsiA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-17/opt: U63ff7qjTdmVcjtd1JURRQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-18/opt: Ynp8LxFrRUarb-QwkJDDyg + beetmover-signed-langpacks-nightly-l10n-linux-nightly-19/opt: ThBZAcQJRBmY6EkCaxyhMQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-2/opt: NTLUB3wTRPq9hlFvcgYk3w + beetmover-signed-langpacks-nightly-l10n-linux-nightly-20/opt: QJT3mZuFQZiAaLW9WbYflw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-3/opt: Z04WT45_QO2x0kV7wnCNiw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-4/opt: I787Fc0yTB-ksr0WvntCGw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-5/opt: YADlgGJnTriFd7m08kygbw + beetmover-signed-langpacks-nightly-l10n-linux-nightly-6/opt: JoMTRva9T2uXAB3Mfkh7oQ + beetmover-signed-langpacks-nightly-l10n-linux-nightly-7/opt: YfiT4rKPSUyRZf5zmcDLvA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-8/opt: eZvDWMGYQ3WI2D3Ef9oQWA + beetmover-signed-langpacks-nightly-l10n-linux-nightly-9/opt: VSG0a7ySSamfjXjUcaPR5g + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-1/opt: azk36HraTXCUVYJ7oku2Yg + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-10/opt: CqI2on3tRUi-doKi5iEaug + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-11/opt: QF7Z3TXHQly7Ihg9jlaqpA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-12/opt: dhkf1shbSK2JF0MUIHUjEg + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-13/opt: fwNm1xDkRC66yOWLgyNoXw + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-14/opt: WkUWjCy1QBCt0OKdo1fPyQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-15/opt: IsyMp_JVT3esfP5yhk7pog + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-16/opt: Kz0WaP_2SvSOYg79Hd3k3A + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-17/opt: N46xAPtrQtGsRgQJLFD4YA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-18/opt: SRt3pXcXTO6ouhgroL7gZA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-19/opt: JPPxzh2GQ16fV1gDCwf-aQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-2/opt: MlcWxuzsSJODuiqWHwr70A + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-20/opt: JEeRKmspSf6O2sgX_LdOEA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-3/opt: Pt7DzxvASOGXr8jHhwkgrQ + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-4/opt: VI8-3J09TBO3aeIMe7nxOA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-5/opt: B3gytGZiTzmtRxonLMgNgA + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-6/opt: Oqq_rW8cSwWuzRV7gE-rOw + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-7/opt: ToBaS7-uR_KRS8rNkRjm5g + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-8/opt: cTW7WGt3QIetIKFSO4ml7w + beetmover-signed-langpacks-nightly-l10n-linux64-nightly-9/opt: dIPOCZRYSmioKQwo0olwyQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-1/opt: GSu3v6w3Q6iveDrHJU-j-g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-10/opt: W57uvEYJR_6M2kTqWNiOMQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-11/opt: PpXoqzWnRsaWpoXRzX0tXQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-12/opt: PeUzRTwwQuylPRMD3RuZ1g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-13/opt: JbAlC6wQR2K1PG6XMhWRdQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-14/opt: LK3GmKsXSUSGF6x3nIdgKw + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-15/opt: YeZPKM1ORKWUgt2wJ_N0GA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-16/opt: EXQeUHUoSs2RcIoXvPGo5Q + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-17/opt: GGnuZOA8S1abhtZ21ole6w + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-18/opt: SB7f5glwQIqMXaF9x9h9ew + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-19/opt: Zj3_K_fJQXexfJS-cM4MYA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-2/opt: BOOj0fujTSu_FKXQEbf1iw + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-20/opt: JpdZlli8TjKeEPUdj8xn8w + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-3/opt: C6XTrpsiT7W7sBMCpaFF3A + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-4/opt: Ix7RDCzyTzqyHFmOuYzuHg + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-5/opt: GUaxD_BGQ-2Zc_YqDEhnNQ + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-6/opt: Xm8SjqipRmmIQKv_DMPSoA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-7/opt: K9JnK5wOSKa_W85AOBijtA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-8/opt: XLI4UNESRMWHbPGWq38_NA + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-9/opt: PIYfG1KxTW23_j42yIuN8g + beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: d4NGW3L8SFSCBncLKDyzmw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-1/opt: Wr7v4JPrSyaSXCJyHq1LOQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-10/opt: LGPu7NFnSui0-NfUb0_jlQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-11/opt: DYA23ClHRRmghnDNPzxySA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-12/opt: GAz96NF6R_qMK50jBkq6-A + beetmover-signed-langpacks-nightly-l10n-win32-nightly-13/opt: Hsl-rZWoTHiqNLDISXh6Cw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-14/opt: MSQ4SsDNRIaPn0jnbePNBA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-15/opt: JAP2mI6YQ9ua1BoLaCiZGQ + beetmover-signed-langpacks-nightly-l10n-win32-nightly-16/opt: ARw-7OsYQU6TIkKkBaTvzA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-17/opt: SVcVbiEcQhCJ0QWo_WqiCA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-18/opt: Ydu7XqYJQKON-IlTCNwLow + beetmover-signed-langpacks-nightly-l10n-win32-nightly-19/opt: Kzl6iGdoTGmk30bG22vS9g + beetmover-signed-langpacks-nightly-l10n-win32-nightly-2/opt: Yvb2mAFUSZqzcoQ9noXoGg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-20/opt: CgASdaSvRQqs7vXwS_LXyg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-3/opt: CNNN9qIGRw-fF7TvGDJTzA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-4/opt: Ss6VQfFvS-qv4m5kytFPxw + beetmover-signed-langpacks-nightly-l10n-win32-nightly-5/opt: YoCdVAGWR56di23avu1Ndg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-6/opt: fhkSLu3bSzW8Ij1CIQw98g + beetmover-signed-langpacks-nightly-l10n-win32-nightly-7/opt: ItsKtytQS3WDKzGcIuwBeg + beetmover-signed-langpacks-nightly-l10n-win32-nightly-8/opt: ehgneIt6RxyAhTy6-LZzwA + beetmover-signed-langpacks-nightly-l10n-win32-nightly-9/opt: Y0thOUuWRTCtg6I5zIVMNg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-1/opt: HfWgTl5gSlyHCAAUE3tYQw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-10/opt: VgrZcxVnTCmzboAk67Z0kA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-11/opt: dJYtaTvtS2mDKXBV5IFY4w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-12/opt: LxPTERvkR0aSY_fBHMoy8Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-13/opt: eJwEu0oTSQupUADVlT8xJg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-14/opt: PF708LP0Q3KRdzOeI8g89A + beetmover-signed-langpacks-nightly-l10n-win64-nightly-15/opt: LIpBTIW3S3OLT_8WBLsZ7w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-16/opt: WntNamkYTumijV4iw8gNng + beetmover-signed-langpacks-nightly-l10n-win64-nightly-17/opt: GnB8SejySNyKC-2q154CSA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-18/opt: D5EXh-HYRZqis0WY5cBAlw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-19/opt: ADHRBTyBTfSWNh9ehW1lOg + beetmover-signed-langpacks-nightly-l10n-win64-nightly-2/opt: NA8XaTL2Tcex1cnZftIfBA + beetmover-signed-langpacks-nightly-l10n-win64-nightly-20/opt: THGt7LOzRiqj_uuxiG2R0A + beetmover-signed-langpacks-nightly-l10n-win64-nightly-3/opt: MM4r3QXlSMGc6sjsQu769Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-4/opt: Xl8xKPaxQEOfbctl_L24EQ + beetmover-signed-langpacks-nightly-l10n-win64-nightly-5/opt: XilE8MATT_uQmWzQRNn07Q + beetmover-signed-langpacks-nightly-l10n-win64-nightly-6/opt: FEMDxp0aQSe7xR08bFNh2w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-7/opt: IWpg_5u8TEynsl0YcuKXkw + beetmover-signed-langpacks-nightly-l10n-win64-nightly-8/opt: XhqMvZAFQfOk6c-y3ZOc9w + beetmover-signed-langpacks-nightly-l10n-win64-nightly-9/opt: aRD-JqixRnumrtxxx0NVMg + beetmover-source-firefox-source/opt: TY6KaixBSiiPL1NWm5eu_w + build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg + build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ + build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og + build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw + build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA + build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ + build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA + build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA + build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg + build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg + build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ + build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g + build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ + build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ + build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ + build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA + build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w + build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw + build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg + build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg + build-docker-image-lint: XGNAECEES72AEPxwbO4jKw + build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg + build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ + build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw + build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ + build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q + build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw + build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q + build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw + build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ + build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w + build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ + build-linux/debug: LhIiq80ZSRyJh5nWgkakaA + build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw + build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw + build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw + build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA + build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA + build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w + build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw + build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg + build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w + build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw + build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg + build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw + build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg + build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w + build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA + build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ + build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw + build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA + build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA + build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A + build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ + build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA + build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA + build-macosx64/debug: CibCdzr9QLODly5buEeBvw + build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg + build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA + build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw + build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw + build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg + build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng + build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ + build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg + build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA + build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA + build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw + build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA + build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w + build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA + build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA + build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ + build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q + build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA + build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig + build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw + build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ + build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ + build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA + build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw + build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ + build-win32/opt: YKC_SzyIQy2y83trQ49WQg + build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw + build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g + build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA + build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg + build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA + build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ + build-win64/debug: EDHK4shfRKyhAv5cIZihew + build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw + checksums-signing-ach-linux-nightly/opt: HKNStYLrSrKG7DAJykDmrg + checksums-signing-ach-linux64-nightly/opt: RtAQh6bWR3q3c1pFqrnWtg + checksums-signing-ach-macosx64-nightly/opt: NbFo7NSTTE-oDWhBR5QKtw + checksums-signing-ach-win32-nightly/opt: WF4LBNq8QOqjVcrOHkl3Dg + checksums-signing-ach-win64-nightly/opt: JoP9tg19QqWa1K_ElhLazQ + checksums-signing-af-linux-nightly/opt: eq72aFWlT0mp1TAoUgfhcQ + checksums-signing-af-linux64-nightly/opt: A3okjsdmRT6_OZhI5vg9Cg + checksums-signing-af-macosx64-nightly/opt: DUQBiRUDRQuIhPM_YxQ0aQ + checksums-signing-af-win32-nightly/opt: COPyyFCcSYWmCuuHFMksGw + checksums-signing-af-win64-nightly/opt: JKkvpoXwSyu6TvhIn1zUng + checksums-signing-an-linux-nightly/opt: KtIkudidTBarJzjhwMPwdw + checksums-signing-an-linux64-nightly/opt: IOgIAuPiQPWiF2ET2JFk3w + checksums-signing-an-macosx64-nightly/opt: EVVOR45rS2Sj2Aj-SQ0v5w + checksums-signing-an-win32-nightly/opt: eXv-TvgTR9KzIkLrd9sPeA + checksums-signing-an-win64-nightly/opt: ImXcLJIcRxWa6wM6eyFGxg + checksums-signing-ar-linux-nightly/opt: W5lR6DHySHyo5IdpBDyu7g + checksums-signing-ar-linux64-nightly/opt: TSuHgBl1Qz682yJL5gNHwg + checksums-signing-ar-macosx64-nightly/opt: cqnFA8BISJ-u8sQhR-EruQ + checksums-signing-ar-win32-nightly/opt: AvLxmxpSToOvWBfhuHxdlQ + checksums-signing-ar-win64-nightly/opt: WIlIxVHvSmCSTiLHouts4w + checksums-signing-as-linux-nightly/opt: QQtpBg_lTiSNu9xzZtZhcg + checksums-signing-as-linux64-nightly/opt: eEdTGktgSOSUoFSvE-M91A + checksums-signing-as-macosx64-nightly/opt: awn8_8MaQ9OuDhJNLDa9Xw + checksums-signing-as-win32-nightly/opt: YNC4gixaRBeQ5tW863M8oQ + checksums-signing-as-win64-nightly/opt: c1_jdf3LQSqQZX6vGQmnvw + checksums-signing-ast-linux-nightly/opt: VVPUzyYcQJiUTVLaZCMU1A + checksums-signing-ast-linux64-nightly/opt: UD8GTBQBTaWlZNCk4T-dYg + checksums-signing-ast-macosx64-nightly/opt: Vc4WzS7HT_6mUs-Inei_qQ + checksums-signing-ast-win32-nightly/opt: AKBxeqaUT1-SGTkztHG8FA + checksums-signing-ast-win64-nightly/opt: NRm2m2csRoKwdw-dDfPncQ + checksums-signing-az-linux-nightly/opt: Q91tq4ZNRWK-xpe7g5F59Q + checksums-signing-az-linux64-nightly/opt: XKh60ZcgQ_ySMUxe91Xywg + checksums-signing-az-macosx64-nightly/opt: CiwBakUUS2G6WCYN41DEAg + checksums-signing-az-win32-nightly/opt: Zvum4MzBT6K_ujzVOayV4w + checksums-signing-az-win64-nightly/opt: EXBs7P_XT5-A6m9O0ql_Lg + checksums-signing-be-linux-nightly/opt: ScPWb4eFQ5mV5KHTnDp1Ng + checksums-signing-be-linux64-nightly/opt: WrW72HpDQJSnAEqgQeNing + checksums-signing-be-macosx64-nightly/opt: Uusr2ioMT769xssJUMyo3w + checksums-signing-be-win32-nightly/opt: TgMkgTOkRcig2ZKxHBxJzQ + checksums-signing-be-win64-nightly/opt: CE33GDsYSLWS3BUiLC0LlQ + checksums-signing-bg-linux-nightly/opt: T-Z2UgvTTyShrKnXqVegkA + checksums-signing-bg-linux64-nightly/opt: efQAKe6WT8OGofjzw88AeQ + checksums-signing-bg-macosx64-nightly/opt: OAQlMt2DQFioEdOF5DShpA + checksums-signing-bg-win32-nightly/opt: F5Mc9-z1RF-kXtaW8Dm6Ug + checksums-signing-bg-win64-nightly/opt: PL3-TOwxTbaycwS_dW6f5Q + checksums-signing-bn-BD-linux-nightly/opt: X-VEPeikTI2ZKNiP8YdaUg + checksums-signing-bn-BD-linux64-nightly/opt: QKliapu0QXiTVDD4EMQTMQ + checksums-signing-bn-BD-macosx64-nightly/opt: Eiej4DSNSGi5OXIA0za-Hg + checksums-signing-bn-BD-win32-nightly/opt: N2rkQ8FpQ6-fXj4met76RA + checksums-signing-bn-BD-win64-nightly/opt: GIVwA6NhSfyAAwZ4WpRypg + checksums-signing-bn-IN-linux-nightly/opt: FcJ78cV-SguIPd7rae_UFg + checksums-signing-bn-IN-linux64-nightly/opt: Z7pBsPXARmOMuoHInwg-iQ + checksums-signing-bn-IN-macosx64-nightly/opt: QfOwm2UXRLyz9MiKSp399A + checksums-signing-bn-IN-win32-nightly/opt: GHd6r_DHTK6kNzLzxsY79w + checksums-signing-bn-IN-win64-nightly/opt: e3ajCwA1S2mpMYkDf5ivPA + checksums-signing-br-linux-nightly/opt: RLrWz8yuTCGQQYRNfTN-Kw + checksums-signing-br-linux64-nightly/opt: DJPSuB_ISSaxD-LBobTK7g + checksums-signing-br-macosx64-nightly/opt: RJSTVKoORTSOWi0bm_1Azg + checksums-signing-br-win32-nightly/opt: R0kT6iOBQ4qmYT09N2vHJA + checksums-signing-br-win64-nightly/opt: Vx4R5D7NQZeFF9Hqzko4wQ + checksums-signing-bs-linux-nightly/opt: fXY3cYBRQi-_CuQvibxTSQ + checksums-signing-bs-linux64-nightly/opt: S6rwDE2cTBqRgkogIaOT2w + checksums-signing-bs-macosx64-nightly/opt: MiZpEjWySzCRXABn_WcCxw + checksums-signing-bs-win32-nightly/opt: AMb-6EixRku0jB0ya_fO5w + checksums-signing-bs-win64-nightly/opt: RRZEJDSaTbmW5HqZqDNing + checksums-signing-ca-linux-nightly/opt: ZjMNY6U7TvKMEUsI_OAQcw + checksums-signing-ca-linux64-nightly/opt: U5t3NvidQbCpjS_MFrt70Q + checksums-signing-ca-macosx64-nightly/opt: GHlm35aKSRqa9PAzmmXjeg + checksums-signing-ca-win32-nightly/opt: e_NYwiRkSMKOmP1uCw_FVw + checksums-signing-ca-win64-nightly/opt: XaxgjpYqSv6kJYXzrmooTw + checksums-signing-cak-linux-nightly/opt: cRzDzoQGRkG5kpHfi7Y9LQ + checksums-signing-cak-linux64-nightly/opt: d6jIcAebTRiQLxDa-35UMQ + checksums-signing-cak-macosx64-nightly/opt: dHCqQflVQP21hAsDFIt89Q + checksums-signing-cak-win32-nightly/opt: Eu7EUDO-R4614fXPyxq_GA + checksums-signing-cak-win64-nightly/opt: XJW94ufyRXeZJC4x-ciX3w + checksums-signing-cs-linux-nightly/opt: FkROwABnQHuS2Bwop8JwhQ + checksums-signing-cs-linux64-nightly/opt: bgO4fCrcTzO2AYrdFUw9FQ + checksums-signing-cs-macosx64-nightly/opt: P82rfvHWTN6PGpThNF8GKw + checksums-signing-cs-win32-nightly/opt: X_Tg-VwGReejsoal-0kS2w + checksums-signing-cs-win64-nightly/opt: Q7HqtOljQcKCLPpCO8iTJA + checksums-signing-cy-linux-nightly/opt: VSQE8uV3TGaq0i4uF_JEsw + checksums-signing-cy-linux64-nightly/opt: dMt4FG74TrS7hjf9NfK7AA + checksums-signing-cy-macosx64-nightly/opt: EeJw6HiVSwy9Cr81-kymwg + checksums-signing-cy-win32-nightly/opt: EfqXlJ3HRC6Ybsh61QwqpQ + checksums-signing-cy-win64-nightly/opt: Ljm2Bw63QXeae1KlZedHgw + checksums-signing-da-linux-nightly/opt: RXRFrvGSSZmiVK0Fg05mWg + checksums-signing-da-linux64-nightly/opt: QF0ihb1bTba4Qpfv5r_EiA + checksums-signing-da-macosx64-nightly/opt: I1sLL8r3Q_ak4R9geDVWuA + checksums-signing-da-win32-nightly/opt: cZ4H4bOWSH-JTpFe_koQQA + checksums-signing-da-win64-nightly/opt: W_7x77AtRG-uA9a_WLBx6Q + checksums-signing-de-linux-nightly/opt: foK2yPyNQNSt79nY-Hcbrw + checksums-signing-de-linux64-nightly/opt: RV1ZSnh1RG2754VSfdqgkQ + checksums-signing-de-macosx64-nightly/opt: Jg-2OYNBSX6LXk6rA1Xevw + checksums-signing-de-win32-nightly/opt: QG-zwVqDQtyDnUWV-AbIiw + checksums-signing-de-win64-nightly/opt: HnRv5rjbQua_NAimpjswZw + checksums-signing-dsb-linux-nightly/opt: LEex2aRUQKGQjyD6xCR4-w + checksums-signing-dsb-linux64-nightly/opt: BOJu_WJxTeKmnmujvJQ1dg + checksums-signing-dsb-macosx64-nightly/opt: CfzEO-T8TRGMP6QCdQu3EA + checksums-signing-dsb-win32-nightly/opt: TRrnZh4LRFOSpLHSfahgEQ + checksums-signing-dsb-win64-nightly/opt: WEKbazzQRSeuwpIeCJQGrg + checksums-signing-el-linux-nightly/opt: M27OL5YbSB-QxYeoh24y0Q + checksums-signing-el-linux64-nightly/opt: LDj3tXchQGm7pTgw_V6XrA + checksums-signing-el-macosx64-nightly/opt: bBDp0s7zQweE6DIfRC3AsA + checksums-signing-el-win32-nightly/opt: ZWNZZoM4QTiaXlwGnXOOKA + checksums-signing-el-win64-nightly/opt: GaDb9efbQDG1htYnBu-b8w + checksums-signing-en-CA-linux-nightly/opt: JSCGpsFZRt6ytsJqVNW43A + checksums-signing-en-CA-linux64-nightly/opt: an3Y4AjVSOGeDdODFZ-POQ + checksums-signing-en-CA-macosx64-nightly/opt: Vf1glTFcQfyg3H2bYqfaFg + checksums-signing-en-CA-win32-nightly/opt: SpBNmVVYTjS1AcnCiHL98w + checksums-signing-en-CA-win64-nightly/opt: IgNNSrWdRsCIb5nbAZI_DA + checksums-signing-en-GB-linux-nightly/opt: J0oohZg5QaW2pr7HRwdR1w + checksums-signing-en-GB-linux64-nightly/opt: PAH5G6bET7S8fAlGX4AWQg + checksums-signing-en-GB-macosx64-nightly/opt: K2TdPlJQTAGQfKzuYKZYpA + checksums-signing-en-GB-win32-nightly/opt: H3hsyqm-RqKKPFUWzTQt-A + checksums-signing-en-GB-win64-nightly/opt: EjdFYTLiTYqKgdx8vrIXkQ + checksums-signing-en-ZA-linux-nightly/opt: E6jdORXhQFSvUvDjgdVYbQ + checksums-signing-en-ZA-linux64-nightly/opt: Hh-XFLxyTWa36jLpFUFh7w + checksums-signing-en-ZA-macosx64-nightly/opt: DbKdGoE3Tb2K0JZ87xclbQ + checksums-signing-en-ZA-win32-nightly/opt: VRSMTafUQUCxVRgZawuKpQ + checksums-signing-en-ZA-win64-nightly/opt: d_fYfR_eT--5gLeQr9zCyw + checksums-signing-eo-linux-nightly/opt: c10LvwFQRR-lTZ7aSJ0LGg + checksums-signing-eo-linux64-nightly/opt: dFBsSWgUQRG1t7aOqUkuCQ + checksums-signing-eo-macosx64-nightly/opt: ASMxJqQoQyG8z8J8Is4p-w + checksums-signing-eo-win32-nightly/opt: LZSZVsJ1QI--xwufjKTNvw + checksums-signing-eo-win64-nightly/opt: GlcfhkFSQ0WorxIqng5CjA + checksums-signing-es-AR-linux-nightly/opt: RFHuPGujTfa0Yfermu18rw + checksums-signing-es-AR-linux64-nightly/opt: YAf9l8_NRNCpIk0EUQYG2Q + checksums-signing-es-AR-macosx64-nightly/opt: OyCUJWeNTC-5wyW-TId1TA + checksums-signing-es-AR-win32-nightly/opt: WfR62EDUQxSx-SM_ebMD4w + checksums-signing-es-AR-win64-nightly/opt: XKvUwQFbSsywwD0rkIzrJw + checksums-signing-es-CL-linux-nightly/opt: Vt7srtVKROOchJ6IcRGXtA + checksums-signing-es-CL-linux64-nightly/opt: DQxrnKTfThWI2U2KqZaabA + checksums-signing-es-CL-macosx64-nightly/opt: Qa4vJ3VcQuiDVWNCRMeI_Q + checksums-signing-es-CL-win32-nightly/opt: Fqdlj67_RzSWPJTqVX0rZA + checksums-signing-es-CL-win64-nightly/opt: Tn0ASUCNTQyA3_18Ds-AOg + checksums-signing-es-ES-linux-nightly/opt: Ad0dDMr3RQGCMFZz_uREsA + checksums-signing-es-ES-linux64-nightly/opt: S-cql5JQQx6J-aC_DuWEqw + checksums-signing-es-ES-macosx64-nightly/opt: KLBL_oNZRwyzpp0KsfbiWA + checksums-signing-es-ES-win32-nightly/opt: Hyowsj-PTkyeZCntSJDvyw + checksums-signing-es-ES-win64-nightly/opt: c7h7eKugR6u9N_qp4ohyiA + checksums-signing-es-MX-linux-nightly/opt: Qk2mgwUBSzGBO_D2mWKjSw + checksums-signing-es-MX-linux64-nightly/opt: Mqs1AkQiRvW8lUVL9x9RyA + checksums-signing-es-MX-macosx64-nightly/opt: Po1rg54ASNmypSBKw6jBhA + checksums-signing-es-MX-win32-nightly/opt: ZC3wQumLRjKOwBYgil-Seg + checksums-signing-es-MX-win64-nightly/opt: DegMguzVQJKqNSehEom-ZQ + checksums-signing-et-linux-nightly/opt: IPpncWOFRCOceH9ggMPnhg + checksums-signing-et-linux64-nightly/opt: QhOjcRwDSny3r39dZz8JSw + checksums-signing-et-macosx64-nightly/opt: L3kedNJpTiK02PGGAOz7Ng + checksums-signing-et-win32-nightly/opt: CyTQCY_lQWOXTFwpVeD7sg + checksums-signing-et-win64-nightly/opt: eWJNZfZiSCGwQHMsZg0hkg + checksums-signing-eu-linux-nightly/opt: NfhiUBRaT1WKakl5QUTByA + checksums-signing-eu-linux64-nightly/opt: PtwtE1z5SuO1VbPn_fB3hQ + checksums-signing-eu-macosx64-nightly/opt: Yal6avx4S8mud1X6OFHNSg + checksums-signing-eu-win32-nightly/opt: JuPjlt2yQvCoKL4JKaEnkg + checksums-signing-eu-win64-nightly/opt: WfOIOTh8TfGvEVhsaRrgPw + checksums-signing-fa-linux-nightly/opt: Rsl_R9o_RiWoiafYOHH1UA + checksums-signing-fa-linux64-nightly/opt: fvZEpS98RzyqqHbj_tAu1A + checksums-signing-fa-macosx64-nightly/opt: NbQDYC91SgS1iNfjLyV5WA + checksums-signing-fa-win32-nightly/opt: RhkSL3clQYGffrSqjwff9g + checksums-signing-fa-win64-nightly/opt: eOuPZO3lSDyOpT7mQDAe1A + checksums-signing-ff-linux-nightly/opt: RHBBQxrYS6ya64I5HMU-Jw + checksums-signing-ff-linux64-nightly/opt: LrWWqjBNSxWK7r6ObOyxZQ + checksums-signing-ff-macosx64-nightly/opt: JrDGqm_8RpOATDVkk8P1eQ + checksums-signing-ff-win32-nightly/opt: JW7BqgBiQguzu1WFDms1tg + checksums-signing-ff-win64-nightly/opt: GMiyWWQmSFaEVpStinWtnw + checksums-signing-fi-linux-nightly/opt: baabxPAkRn6uMQyS8xDwKg + checksums-signing-fi-linux64-nightly/opt: akp5PmrpQdukn0cmIUndqA + checksums-signing-fi-macosx64-nightly/opt: cjFwbQRaTBy1p-29H-qqkg + checksums-signing-fi-win32-nightly/opt: ahyEujfmQN2TSOsCIiv_Pw + checksums-signing-fi-win64-nightly/opt: btO0gMexRJG6LJCwCU9JuA + checksums-signing-fr-linux-nightly/opt: B3oD2VqqSCeMX5Y5wiw11g + checksums-signing-fr-linux64-nightly/opt: aaNspnKdQ0iIKVSrPsqIZA + checksums-signing-fr-macosx64-nightly/opt: O8GTvRpuThyw-dpUas6wVA + checksums-signing-fr-win32-nightly/opt: IvrBgZITS16Cu4lC0fZCSw + checksums-signing-fr-win64-nightly/opt: eErUM2rVQQKf2qRNKCoe8g + checksums-signing-fy-NL-linux-nightly/opt: IETrRjJmR9iF2QFzYZSrAA + checksums-signing-fy-NL-linux64-nightly/opt: Qi6GBhnkSkKdKb1n-UA-tg + checksums-signing-fy-NL-macosx64-nightly/opt: czrCA3RAQASGsvZ8tsvCNg + checksums-signing-fy-NL-win32-nightly/opt: Wg6edmNIRSaqtRLpHNm5Rw + checksums-signing-fy-NL-win64-nightly/opt: Qbc9Cmm6TLm4rSC6zStTHw + checksums-signing-ga-IE-linux-nightly/opt: YoxjkaWET9mxdpEbzOv3Ug + checksums-signing-ga-IE-linux64-nightly/opt: V3XBUwMtTbKHVxnABUER5w + checksums-signing-ga-IE-macosx64-nightly/opt: N5n9c8WBRKis42q8E2kdpg + checksums-signing-ga-IE-win32-nightly/opt: Uu9RaFBaTD61RbBTKbWsqg + checksums-signing-ga-IE-win64-nightly/opt: Uxz7xPSLS_uh24GsbyeOtA + checksums-signing-gd-linux-nightly/opt: W_IgAa5DRyO0K3y6_HpNUQ + checksums-signing-gd-linux64-nightly/opt: TiI4gPpKQomziDrtdN_7zw + checksums-signing-gd-macosx64-nightly/opt: Lkv5O2wIQ9uFaKxpZBuTIQ + checksums-signing-gd-win32-nightly/opt: Hzm5DWRnRWKSZsi9cXnM8A + checksums-signing-gd-win64-nightly/opt: dlslTCzRTuSC_Xj01mPC4A + checksums-signing-gl-linux-nightly/opt: TNh4IVcuR1a_qB_gvCdLGg + checksums-signing-gl-linux64-nightly/opt: TGXwDYeIRVOQ95GvhrQeqQ + checksums-signing-gl-macosx64-nightly/opt: IvA5oC4BRFeRGOQhrXn5Hw + checksums-signing-gl-win32-nightly/opt: CiGDypZhRECqF2fJEaz4vQ + checksums-signing-gl-win64-nightly/opt: A3I83guHQ4yOLPrfx2LUrQ + checksums-signing-gn-linux-nightly/opt: ZzjMrNPNQvGVykifdgW9QA + checksums-signing-gn-linux64-nightly/opt: RW0xXsYEQF6Ml_rDicCj1A + checksums-signing-gn-macosx64-nightly/opt: S-9Mqeb5TuOjrG1rBZtKkw + checksums-signing-gn-win32-nightly/opt: PXRGMjSyRGqstkCb5qKyCw + checksums-signing-gn-win64-nightly/opt: L3LBFD-JRpa0KfKPK_RHFg + checksums-signing-gu-IN-linux-nightly/opt: Ic35N_2dRsKE-gjyFoPcSw + checksums-signing-gu-IN-linux64-nightly/opt: McJQudM6S8uCFaN-pOROqg + checksums-signing-gu-IN-macosx64-nightly/opt: QMzFnnGKTIOadvVqcPczzQ + checksums-signing-gu-IN-win32-nightly/opt: d2dM_OjgSKGuks5-u4KUQw + checksums-signing-gu-IN-win64-nightly/opt: TApNioviSUCNTLG1-KwL9Q + checksums-signing-he-linux-nightly/opt: QSZ73IolTnqRLP9GTMXKmg + checksums-signing-he-linux64-nightly/opt: IxNSY1GRShSTSjlrHpViYw + checksums-signing-he-macosx64-nightly/opt: BNKUpiMgS6Sr1UZi9fU5Vw + checksums-signing-he-win32-nightly/opt: XfvtJWDfS4OXBxjH_UX2Fg + checksums-signing-he-win64-nightly/opt: NSEvEVFoRRS4IIQJly4B4w + checksums-signing-hi-IN-linux-nightly/opt: ZHup7BhuSf2l1cPzoXdXQg + checksums-signing-hi-IN-linux64-nightly/opt: DvJJW3i-TcmtKmaIJ0cGRA + checksums-signing-hi-IN-macosx64-nightly/opt: VYaVOE93Sji6D5W6gHbCBw + checksums-signing-hi-IN-win32-nightly/opt: eavJwkqBSpK16pG0soN_5w + checksums-signing-hi-IN-win64-nightly/opt: Jf_KabZeRcGPZQW2f5NuRQ + checksums-signing-hr-linux-nightly/opt: OpJ7xw8XTTK8W4TA4NeIKQ + checksums-signing-hr-linux64-nightly/opt: Qx_pkeKcSK2cw_Taxm5ELQ + checksums-signing-hr-macosx64-nightly/opt: OCWaK7_ASESnR7CmhKYR3A + checksums-signing-hr-win32-nightly/opt: Tw2qP8NyTFKpsap7rixXqQ + checksums-signing-hr-win64-nightly/opt: eeq4pqxpR5KYUclCVQopsA + checksums-signing-hsb-linux-nightly/opt: QKP8f8pbTNquZDtt6k5Cqw + checksums-signing-hsb-linux64-nightly/opt: b4U03dj9TqGU2iHKP7Nfew + checksums-signing-hsb-macosx64-nightly/opt: UtqoKpTuT7imBFbo1RfnDQ + checksums-signing-hsb-win32-nightly/opt: PRUGLxbiQ0uvWmdXbXHNKg + checksums-signing-hsb-win64-nightly/opt: EbnbBdq1RGGgyhyW68Ab2g + checksums-signing-hu-linux-nightly/opt: P_Go6lRfRaWpa3mS04mjyg + checksums-signing-hu-linux64-nightly/opt: E9GD0_d-SqyynOV-W1WadQ + checksums-signing-hu-macosx64-nightly/opt: Z1aPTCx4S7SCqCOBedMTMQ + checksums-signing-hu-win32-nightly/opt: WwHXZSuOTKS_U6vbmnZYyw + checksums-signing-hu-win64-nightly/opt: NkU7iqd0Rkahao614L1_Hw + checksums-signing-hy-AM-linux-nightly/opt: I_0JVZerRvuq8tVQFfFRaw + checksums-signing-hy-AM-linux64-nightly/opt: S9zM0MDwRaCNzg3VLpBjCQ + checksums-signing-hy-AM-macosx64-nightly/opt: Twlo57PkTvCId4ri1CNR8g + checksums-signing-hy-AM-win32-nightly/opt: Yxcyed4qT5q355oe9alU4w + checksums-signing-hy-AM-win64-nightly/opt: Z1oghly0QOWtT5kN4eazMw + checksums-signing-ia-linux-nightly/opt: Vvtv3x7FQha6QEz0sgLUoQ + checksums-signing-ia-linux64-nightly/opt: F_lddlF9T-yqKg6j07BWGA + checksums-signing-ia-macosx64-nightly/opt: D079DMR6TSCH2brgto6iKQ + checksums-signing-ia-win32-nightly/opt: XwtUlGarSViwJJcpyivHQQ + checksums-signing-ia-win64-nightly/opt: D34FQgscSbSGm_Prm--N-A + checksums-signing-id-linux-nightly/opt: LO4LvHjoSd-1lVB1rC-_DA + checksums-signing-id-linux64-nightly/opt: L_gnnigdQwmMcDq9T62kRA + checksums-signing-id-macosx64-nightly/opt: FfQ7asCeSzukB61oIICIaw + checksums-signing-id-win32-nightly/opt: b-OKvM_ZRVuwKLHN2cQYGQ + checksums-signing-id-win64-nightly/opt: A7kAKxnCRmGxAlOP3GcxhA + checksums-signing-is-linux-nightly/opt: PPnocV_ASE-qsfbsSL9nPw + checksums-signing-is-linux64-nightly/opt: DT7kEEW8TiqpXb8J6R-Jzg + checksums-signing-is-macosx64-nightly/opt: YYd1sPP7Q-Wx0aNxMk_Qrg + checksums-signing-is-win32-nightly/opt: dtRSWw7UQ_mlvepotDPyYA + checksums-signing-is-win64-nightly/opt: djbxuuohTNe7HQPLjdvC5Q + checksums-signing-it-linux-nightly/opt: UXX8LcA0SzqJxr5Lw_9etA + checksums-signing-it-linux64-nightly/opt: TXsTnqYoQVyLumHWcKms5w + checksums-signing-it-macosx64-nightly/opt: YKJKS-OXQma5tRx7MqP1Tg + checksums-signing-it-win32-nightly/opt: ctZYCe5ZT-2EJWnthWlHPw + checksums-signing-it-win64-nightly/opt: Erak48gXQwy181KqWpB9Vg + checksums-signing-ja-JP-mac-macosx64-nightly/opt: LEImBHArStCIXrqicNptsA + checksums-signing-ja-linux-nightly/opt: OFfemLg4QhGPUX4t_BW6LA + checksums-signing-ja-linux64-nightly/opt: PTGvOEUFTRqDWjudxZctIA + checksums-signing-ja-win32-nightly/opt: ectFzahOT_Kn58-vGBp1_g + checksums-signing-ja-win64-nightly/opt: Xd2MnHVyTaqTIvCMXO6koA + checksums-signing-ka-linux-nightly/opt: B82Nkxy4T1yW8hZzP89z7A + checksums-signing-ka-linux64-nightly/opt: IA4-AYnkTb6p3MG-NHKICA + checksums-signing-ka-macosx64-nightly/opt: bqDCQwh1Qsijs39xN9g2iA + checksums-signing-ka-win32-nightly/opt: Be59chQfQ_WvefGu277xIQ + checksums-signing-ka-win64-nightly/opt: Lqk00aY-RaWz-DyB3qK34A + checksums-signing-kab-linux-nightly/opt: bQT9b9p-TLq-PWT1rsgFxw + checksums-signing-kab-linux64-nightly/opt: FT88Fsq6S_ehnBj80TWP4Q + checksums-signing-kab-macosx64-nightly/opt: MSfyynvvT4OEuk6D5eJpkg + checksums-signing-kab-win32-nightly/opt: b1-VpkyCTZyF1uC_-rWF_A + checksums-signing-kab-win64-nightly/opt: Fe3wC8HPQF26_s9_ZqGm_A + checksums-signing-kk-linux-nightly/opt: JUZYDCfaSxeT-otpPBgzjA + checksums-signing-kk-linux64-nightly/opt: fl0VxBoASYOgG8mbJE4xvQ + checksums-signing-kk-macosx64-nightly/opt: ChukFzmxQa2bK8Ou0oUoUA + checksums-signing-kk-win32-nightly/opt: DLek-u6iSkOOAgiclmEMNg + checksums-signing-kk-win64-nightly/opt: btPgn-YzQR-lnZu5B-gzbQ + checksums-signing-km-linux-nightly/opt: DohZqgCaRLqNk1CVDryryw + checksums-signing-km-linux64-nightly/opt: Yoh5sjQVRCe6K9vl8LCLQQ + checksums-signing-km-macosx64-nightly/opt: Lr9R_nInQTmB8QGMUDDgZg + checksums-signing-km-win32-nightly/opt: HmU4nDB-R8qkiWP-d5C7ng + checksums-signing-km-win64-nightly/opt: EgccQ5E8QFqRefDZ8lKxaA + checksums-signing-kn-linux-nightly/opt: EBH3OHf-Q_imHokgbwcyiA + checksums-signing-kn-linux64-nightly/opt: QNiirMRcTV6wRYkZG-ZBFg + checksums-signing-kn-macosx64-nightly/opt: NvtKdjFTT_W7bMI4sMWNkw + checksums-signing-kn-win32-nightly/opt: AEIsbCUETYmk6kjnyKCI6w + checksums-signing-kn-win64-nightly/opt: Z-tgRViISF23RP42zVJXcQ + checksums-signing-ko-linux-nightly/opt: TFaul3h4Roah0CtTPm6UEg + checksums-signing-ko-linux64-nightly/opt: brqqptATQl6k5_OLOXPW6Q + checksums-signing-ko-macosx64-nightly/opt: XMcwWUxMSc2t-RFzZVZkTA + checksums-signing-ko-win32-nightly/opt: a0k8WsusSt6VqYMrHT4coQ + checksums-signing-ko-win64-nightly/opt: IcGpD0u_RxiX8JbuRwx0wA + checksums-signing-lij-linux-nightly/opt: d6bFppblQlq1RHA_v-C7fw + checksums-signing-lij-linux64-nightly/opt: AepAh7e7RJ2qg6usDnwrWA + checksums-signing-lij-macosx64-nightly/opt: PIk2u6DxQyCwfH2wf1oBmw + checksums-signing-lij-win32-nightly/opt: OHAW45IjQqaabT78R--xDA + checksums-signing-lij-win64-nightly/opt: KHmdowjhSNesLdOZx0wU5g + checksums-signing-linux-nightly/opt: ErIbYHZ8QoWVS7hQPmj5ug + checksums-signing-linux64-nightly/opt: fcO7yaZSQzC8Y6NqyvisiA + checksums-signing-lt-linux-nightly/opt: ECEQWq5DS3aSLJvrwShS2A + checksums-signing-lt-linux64-nightly/opt: b6-A3Hr5RkSMLRchc-tpbg + checksums-signing-lt-macosx64-nightly/opt: PInLkRoWS4iMsJEF1oQQeg + checksums-signing-lt-win32-nightly/opt: d0OrwjsARiyT22gUu8JQYA + checksums-signing-lt-win64-nightly/opt: OPnefgP4S6yXRVK15P-C2A + checksums-signing-lv-linux-nightly/opt: R2Sf78uJSx68HolrSCqZTQ + checksums-signing-lv-linux64-nightly/opt: e6j9bz9ARISpWixxWOCCVA + checksums-signing-lv-macosx64-nightly/opt: OLEWYbJYROSBnbHdG0bzdg + checksums-signing-lv-win32-nightly/opt: Up7RToh9QnOIgto9Y2sZZA + checksums-signing-lv-win64-nightly/opt: AIunuKu_SMqd4tkR-7wCPw + checksums-signing-macosx64-nightly/opt: Sm8VOZ2JSNCp2o1vhwFFQA + checksums-signing-mai-linux-nightly/opt: EVAVAp-SQ4S2emL8uwQ4mA + checksums-signing-mai-linux64-nightly/opt: bqxel9RjTQq3p86OpZFYcA + checksums-signing-mai-macosx64-nightly/opt: PilDbahdSUC5MUsnIBr0nA + checksums-signing-mai-win32-nightly/opt: SiLErbB_RQ2DxZ06PrsTqA + checksums-signing-mai-win64-nightly/opt: MwFuGFb4RGmVllVVKmxSVw + checksums-signing-mk-linux-nightly/opt: eNbXgoc0R9CEhdxJ6FeWlQ + checksums-signing-mk-linux64-nightly/opt: YfHrLIQQTLCPvwLcBNdrIA + checksums-signing-mk-macosx64-nightly/opt: VNmYGwL8QU-tAL8j1o3t3g + checksums-signing-mk-win32-nightly/opt: baa3s4v0SnqjYckdM-ctDg + checksums-signing-mk-win64-nightly/opt: KXC_bm1cTFqMzS2mvWEq2Q + checksums-signing-ml-linux-nightly/opt: bnD9orTPT-eCJvydxexQqQ + checksums-signing-ml-linux64-nightly/opt: KhzBf8rVQm2CsRF6deUtNA + checksums-signing-ml-macosx64-nightly/opt: PVhErE9aTH-kslU6lOLtQw + checksums-signing-ml-win32-nightly/opt: XetSCzEoQ2yfJa5dgeI1Ew + checksums-signing-ml-win64-nightly/opt: T0QFX40JTCuZA4TrNpgwaw + checksums-signing-mr-linux-nightly/opt: FBamX3M4Rn-Gx-88fTAPoA + checksums-signing-mr-linux64-nightly/opt: FeQZarnzRvqCQI-sHkoU0g + checksums-signing-mr-macosx64-nightly/opt: Wu4RGQ0wSHWHh1Of60Y4eg + checksums-signing-mr-win32-nightly/opt: egalbvcDSsqLZH8lDKFXIA + checksums-signing-mr-win64-nightly/opt: CjIPsAGHS86TPsaz2RrZnA + checksums-signing-ms-linux-nightly/opt: ZPHS2bI6TS2rcuMcsu1qDQ + checksums-signing-ms-linux64-nightly/opt: XxOdkxrxTMyfrBfTD-R0aA + checksums-signing-ms-macosx64-nightly/opt: K5nRdk92TlSqmMXO3PxRag + checksums-signing-ms-win32-nightly/opt: X_S3WVdHRii3hkmiSycIJw + checksums-signing-ms-win64-nightly/opt: Vy6EegfXS1SP0X_U9elSwA + checksums-signing-my-linux-nightly/opt: fZWKqHUXTt6h03b6xrjokw + checksums-signing-my-linux64-nightly/opt: XMLLsp9aTcmwLoz8aLGD5Q + checksums-signing-my-macosx64-nightly/opt: GkhnYuK0REyaNDgNYiA99g + checksums-signing-my-win32-nightly/opt: dApz9xjlRY6SVajfU1i7_g + checksums-signing-my-win64-nightly/opt: JbeUI4e1Szayj00R5QZndQ + checksums-signing-nb-NO-linux-nightly/opt: QpGs_mQUSESXBt0g3DTF3w + checksums-signing-nb-NO-linux64-nightly/opt: FXvq940oTSekn-OcYDfcyg + checksums-signing-nb-NO-macosx64-nightly/opt: EnkxwtnaSjiPUnbhMtjtzw + checksums-signing-nb-NO-win32-nightly/opt: CCWFmVfaQ4Ws7kmLf1OOsQ + checksums-signing-nb-NO-win64-nightly/opt: Ex2NcUA_T7OyuYQQcTm8KQ + checksums-signing-ne-NP-linux-nightly/opt: PYFihC3kQACQZAfHrExIHw + checksums-signing-ne-NP-linux64-nightly/opt: RgGUqLoKQR6Gz9GN3GYh-Q + checksums-signing-ne-NP-macosx64-nightly/opt: WLBdLMR2SQ-qh2wqohdDBg + checksums-signing-ne-NP-win32-nightly/opt: GDhq81HuR7qFSVWo0qTeAQ + checksums-signing-ne-NP-win64-nightly/opt: Xd85hF8aS2O4N9GjUzbHYQ + checksums-signing-nl-linux-nightly/opt: Lddh06IpT_KpNYbe0ze1jA + checksums-signing-nl-linux64-nightly/opt: ASi0blIqSY6oDVv7A7bmSw + checksums-signing-nl-macosx64-nightly/opt: dgwb2O8ISkeHHhoWvNnJvQ + checksums-signing-nl-win32-nightly/opt: MAcZIW66R0yBoe70GMe5rA + checksums-signing-nl-win64-nightly/opt: YAiFqMiTSuWlYSyBJ6pTZw + checksums-signing-nn-NO-linux-nightly/opt: Y80UdLkjQq-6j3pv9a7bJg + checksums-signing-nn-NO-linux64-nightly/opt: MetJV7p4S0e41mi5EsEPag + checksums-signing-nn-NO-macosx64-nightly/opt: Ianc1Pe-Q_OixYytdM7Yqw + checksums-signing-nn-NO-win32-nightly/opt: A7IR1cUuQn2V2s-n9eyYag + checksums-signing-nn-NO-win64-nightly/opt: QudO4R4pRLGwQWyEzxpVTg + checksums-signing-oc-linux-nightly/opt: byjisNBfT3Czcf9YjttsOA + checksums-signing-oc-linux64-nightly/opt: f-jOWr43QE-BZz5yQAHuLQ + checksums-signing-oc-macosx64-nightly/opt: Myory5CjQSCX49UHaqVs8Q + checksums-signing-oc-win32-nightly/opt: dVLb16lFRRmswWungfnLJQ + checksums-signing-oc-win64-nightly/opt: bTXzGIA7SGeg4M6uhhH2pw + checksums-signing-or-linux-nightly/opt: NSy-QYvsQ5u6OXPbXzJF7w + checksums-signing-or-linux64-nightly/opt: OEH4ithFS1ymYTzg_DGyKQ + checksums-signing-or-macosx64-nightly/opt: O_Bcb_mZRxSMsN66HM79Cg + checksums-signing-or-win32-nightly/opt: B8KiFOCHR5y6RUZC-YxPBg + checksums-signing-or-win64-nightly/opt: AjoUoKtMRM-P0vaT9ouDiA + checksums-signing-pa-IN-linux-nightly/opt: Natf6ZrUQYyKCz1Y7-CZoQ + checksums-signing-pa-IN-linux64-nightly/opt: V3ssux5mQi-UBJGeMOusYQ + checksums-signing-pa-IN-macosx64-nightly/opt: ZHoKhyhqTLedbVX9i-sinw + checksums-signing-pa-IN-win32-nightly/opt: KfMUlwEESwmFXJu5yd4cWg + checksums-signing-pa-IN-win64-nightly/opt: A8N9_364QVGwfFY-tRXMVQ + checksums-signing-pl-linux-nightly/opt: VvXWmRTzTwawGSHtmu2NQw + checksums-signing-pl-linux64-nightly/opt: BQxpFLqmSyuzRTFgd3WZ0A + checksums-signing-pl-macosx64-nightly/opt: Mbxxh0crTy-YCONNcPbC1Q + checksums-signing-pl-win32-nightly/opt: dW1jQLOXQjy66IzjhyXfmA + checksums-signing-pl-win64-nightly/opt: H7oiDk7FR2eytEcqCz63Yw + checksums-signing-pt-BR-linux-nightly/opt: JBzXcACxSRyFifcz3mRzhA + checksums-signing-pt-BR-linux64-nightly/opt: OKmgJytgTreLqih_itHiqA + checksums-signing-pt-BR-macosx64-nightly/opt: VCX8yIBSRDWCp5yn9HzDdA + checksums-signing-pt-BR-win32-nightly/opt: FXVrbjs3S96AVbvzoJdbkg + checksums-signing-pt-BR-win64-nightly/opt: QuHN-i9tQ8O49m_fkSMpcQ + checksums-signing-pt-PT-linux-nightly/opt: A-ViJvVtRiKf_3QQtONnVA + checksums-signing-pt-PT-linux64-nightly/opt: WQaVJmpURr6BHUrL6DxioA + checksums-signing-pt-PT-macosx64-nightly/opt: LVZuxiI7TUytrVtldQh-Nw + checksums-signing-pt-PT-win32-nightly/opt: Pmecsok3Q6qtHT4GTZMmcA + checksums-signing-pt-PT-win64-nightly/opt: Lj6SLhiUTkmDZoSOyXuUWw + checksums-signing-rm-linux-nightly/opt: WM2KVp6-TDqPzaKZ9gbkVg + checksums-signing-rm-linux64-nightly/opt: ZH0ELrJGRLepu6XAKQPRrA + checksums-signing-rm-macosx64-nightly/opt: dq67QwJtRHOzK4f2z7NAPQ + checksums-signing-rm-win32-nightly/opt: Gh8C7tqkSACO1ZMZ2gz9YA + checksums-signing-rm-win64-nightly/opt: CG7y67oRTNqHnTIH98O5GQ + checksums-signing-ro-linux-nightly/opt: O5CU1Ph5Raq47hAWVkt-cQ + checksums-signing-ro-linux64-nightly/opt: aZX1sibtS_-0-VTRaLOqcQ + checksums-signing-ro-macosx64-nightly/opt: b6SBkllRQWOyiyjg072ZiQ + checksums-signing-ro-win32-nightly/opt: EK1hvRWbScWTP7TUyaMUmg + checksums-signing-ro-win64-nightly/opt: bCFtwla9TQazKOs3RziAfg + checksums-signing-ru-linux-nightly/opt: VxO55FUQSJey9pzJu8QL1g + checksums-signing-ru-linux64-nightly/opt: FJQMDPohTkW4YJTqjXviyQ + checksums-signing-ru-macosx64-nightly/opt: Xq44GJ7CTZiuIGle9l-n6A + checksums-signing-ru-win32-nightly/opt: F4gU6XhfQ7KvdESdRv659g + checksums-signing-ru-win64-nightly/opt: ULgxnLgGQ9yJyJT926AtNQ + checksums-signing-si-linux-nightly/opt: AoMuekyCRe2ByH4fZIrvhQ + checksums-signing-si-linux64-nightly/opt: Jwmu5vfjQ_KesnQxewpIxg + checksums-signing-si-macosx64-nightly/opt: eXDTNq5-QROP5e-3j_UUuw + checksums-signing-si-win32-nightly/opt: UicdNE_jQ4-h4oraI3VSkQ + checksums-signing-si-win64-nightly/opt: G3K9R1DKQg6f4I_mlJg8pg + checksums-signing-sk-linux-nightly/opt: EAtlHjF2SU2TE2DV2dc2jw + checksums-signing-sk-linux64-nightly/opt: QsZMxtV8QTKGDIn4HOQ-sQ + checksums-signing-sk-macosx64-nightly/opt: NbRFCAXtTE2svKgCwgF0Xw + checksums-signing-sk-win32-nightly/opt: U5u-nYjLStmOkE_V8nGXdw + checksums-signing-sk-win64-nightly/opt: b2coeibQQOay8ytvlZbpPw + checksums-signing-sl-linux-nightly/opt: J3zBhoW1RqGLmIdDRPM3_w + checksums-signing-sl-linux64-nightly/opt: DfYgMS0jRbCrO4EVow658A + checksums-signing-sl-macosx64-nightly/opt: OvvZ4ze_TQ6OIUai-YxGWQ + checksums-signing-sl-win32-nightly/opt: QSkW3PwaQXGzqTCcDSB8gg + checksums-signing-sl-win64-nightly/opt: RIT2ZWUeQw60qDe1Slhd7A + checksums-signing-son-linux-nightly/opt: EpPk_I9-SJ22vwlNoqKqTA + checksums-signing-son-linux64-nightly/opt: XSl7CdPZQeiFx2rwDyvyvA + checksums-signing-son-macosx64-nightly/opt: HtU7XbfaR9m4_XzTdk6MIw + checksums-signing-son-win32-nightly/opt: aLLdzt7EROuavQHGVJfvXQ + checksums-signing-son-win64-nightly/opt: RDLF943VQl2weQC4mxxCbw + checksums-signing-sq-linux-nightly/opt: OHBS_XFURF-bHitNKIZGKg + checksums-signing-sq-linux64-nightly/opt: EcWrj3TrQASvkI4O7J-0BQ + checksums-signing-sq-macosx64-nightly/opt: AQCMYGN2Tlm2DazfcXZaSA + checksums-signing-sq-win32-nightly/opt: O3-xmTu4S0urh5FhqEsFkg + checksums-signing-sq-win64-nightly/opt: XOqXx3AuQCubqPa-TWkAtQ + checksums-signing-sr-linux-nightly/opt: bhIKLEvcT-WhkZGRzW_H2g + checksums-signing-sr-linux64-nightly/opt: IMDmNM-TQS-2XFz39xkVGQ + checksums-signing-sr-macosx64-nightly/opt: V6PYTPjsTvCwiMkaV1Zx-w + checksums-signing-sr-win32-nightly/opt: WIXcUD7GQVyhQCmrq4-VaA + checksums-signing-sr-win64-nightly/opt: K_4nbyQrQ9OpeKRePuXgYQ + checksums-signing-sv-SE-linux-nightly/opt: CTOVgGKiSKqyXf3iIciFDA + checksums-signing-sv-SE-linux64-nightly/opt: OGlfN1ueRX6lQsYrdwWnsg + checksums-signing-sv-SE-macosx64-nightly/opt: FdRoEjRLTOqXUjypgBzBYg + checksums-signing-sv-SE-win32-nightly/opt: Y3dEl91_R1Svee2y3D5zUA + checksums-signing-sv-SE-win64-nightly/opt: ENKZhMaYTuS9cS2OhkgHlA + checksums-signing-ta-linux-nightly/opt: WWNBHqHQTdOnPxLyrFbdLA + checksums-signing-ta-linux64-nightly/opt: Hnz2QMOORqyQPdG2vFMXlA + checksums-signing-ta-macosx64-nightly/opt: aHdgSW3iRIuCEyVadT3ZCA + checksums-signing-ta-win32-nightly/opt: aFsMvWxjTl23QhGYPcVeng + checksums-signing-ta-win64-nightly/opt: XhVDN63vQEukME6nhSiR8w + checksums-signing-te-linux-nightly/opt: O2uOJHQxT-WsEx9GwDN7jw + checksums-signing-te-linux64-nightly/opt: G0PoNvo_QF25ru3dkEUOFQ + checksums-signing-te-macosx64-nightly/opt: BeRheTqRTKm2AHlqBAwGCA + checksums-signing-te-win32-nightly/opt: RK-u3qGASoeG7iVc0pCo4A + checksums-signing-te-win64-nightly/opt: P2O0vojNQ6-ycwgiKy2Oew + checksums-signing-th-linux-nightly/opt: WbhluOk4TyalFR0LwSuWHQ + checksums-signing-th-linux64-nightly/opt: fE07mwO8TvaXVguxWVZZ3g + checksums-signing-th-macosx64-nightly/opt: Io7pxd_0Sn-xucFkR3PhMw + checksums-signing-th-win32-nightly/opt: MwgXxZjUSNmIXBsNeQFWEw + checksums-signing-th-win64-nightly/opt: V53tYswzTbSGksYdIsU3DQ + checksums-signing-tr-linux-nightly/opt: e_P25-7tSUO3-aEEZOgG3g + checksums-signing-tr-linux64-nightly/opt: FoyNh9kKRTWqbsBuB967vA + checksums-signing-tr-macosx64-nightly/opt: QvfGI-5eTkiBwkKpW8XsOQ + checksums-signing-tr-win32-nightly/opt: W7Qkgg5_Sp2xtb6LDS_JFg + checksums-signing-tr-win64-nightly/opt: VswSIuBYR5uczm0EafH0WA + checksums-signing-uk-linux-nightly/opt: NeWlbPKrQdedHnJtzWWOzg + checksums-signing-uk-linux64-nightly/opt: cujf16CvSOGrZKw7ZSXG5g + checksums-signing-uk-macosx64-nightly/opt: HRsQLOZDRwuO8Ku6ZCpHxA + checksums-signing-uk-win32-nightly/opt: YGPJ-GHaSZu5e7aqPf5KVA + checksums-signing-uk-win64-nightly/opt: c39hlTnlQQmQvqh5NXVPTg + checksums-signing-ur-linux-nightly/opt: Crj5gXEQT6yGrD4TK4STOg + checksums-signing-ur-linux64-nightly/opt: KxzDifBuQEyHF-F4C5YRNA + checksums-signing-ur-macosx64-nightly/opt: BB6bMlQkSEWMwAcwahFbfw + checksums-signing-ur-win32-nightly/opt: Xq1_LsO4T9emfXj4n2vDDg + checksums-signing-ur-win64-nightly/opt: DyrTulFlTZiQqaQXjUnsZA + checksums-signing-uz-linux-nightly/opt: agxhEAxdSlmfsiguJmz6ZA + checksums-signing-uz-linux64-nightly/opt: L1aehcqkR3Oq89GG7d0eiA + checksums-signing-uz-macosx64-nightly/opt: T8FbY-3ATkqIM4e_jqRrDA + checksums-signing-uz-win32-nightly/opt: d0lVoW6qSkWGxIfoLPxdSA + checksums-signing-uz-win64-nightly/opt: dvuZdDJnSjizmInGloBQlw + checksums-signing-vi-linux-nightly/opt: T_9_tRRmTfStyFQdAKgF6Q + checksums-signing-vi-linux64-nightly/opt: YfcSBf7zRS6PzZzQs1_VsQ + checksums-signing-vi-macosx64-nightly/opt: epDQOdGPR5mMj1gXTAgtww + checksums-signing-vi-win32-nightly/opt: ZAI8u5x0T-GdPXd1uJMyEA + checksums-signing-vi-win64-nightly/opt: dsr4Lr0lRLygmCpHXLBqoQ + checksums-signing-win32-nightly/opt: aQfV70drRA-29dhZBxF_DA + checksums-signing-win64-nightly/opt: KndlrnjKRL-SHsBwv6Rqvw + checksums-signing-xh-linux-nightly/opt: dlLsh7GfQT6x-vO7d_ArLg + checksums-signing-xh-linux64-nightly/opt: Bb3HxWOoTRWPbNA21b1NkQ + checksums-signing-xh-macosx64-nightly/opt: aK8B_2aDSGaTxHf-5Nd9kw + checksums-signing-xh-win32-nightly/opt: QCaNAODgRhW5lAgCO-6oDA + checksums-signing-xh-win64-nightly/opt: eHV-Mch4THKStRfViVHM9w + checksums-signing-zh-CN-linux-nightly/opt: E4P65q9OTDq_pAv3gunjTg + checksums-signing-zh-CN-linux64-nightly/opt: dshNTa2jTnij8tNQa_60Yg + checksums-signing-zh-CN-macosx64-nightly/opt: BpbGzNKDTK-DmZCbDPhR3g + checksums-signing-zh-CN-win32-nightly/opt: FVkZVTGORzmWw2aTEWssuA + checksums-signing-zh-CN-win64-nightly/opt: F1ndgAy4RKWRVUVB7WpYKw + checksums-signing-zh-TW-linux-nightly/opt: PqQA1ZcKTJCeZGS9IthBlw + checksums-signing-zh-TW-linux64-nightly/opt: XTGG5Ec7Rt2omRMoyIa9fQ + checksums-signing-zh-TW-macosx64-nightly/opt: cMGpg-IuST-SwugpvEy2PQ + checksums-signing-zh-TW-win32-nightly/opt: di1RM6STTHebfM-AfYRY_g + checksums-signing-zh-TW-win64-nightly/opt: YEcRN4TuSm2tkcqsg631Vg + fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ + fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA + fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ + fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q + fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og + fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q + fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg + fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ + fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ + fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g + fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q + firefox-push-to-release: U0qqZPLmSS6e6cTxTRQAbQ + hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A + nightly-l10n-linux-nightly-1/opt: M3fma7PWTSCmn0zpybL8PQ + nightly-l10n-linux-nightly-10/opt: fWqGYTd_RP-y-1b8R-B_DA + nightly-l10n-linux-nightly-11/opt: e4r7V2bIQGu1Z57m57zn4A + nightly-l10n-linux-nightly-12/opt: DpIk6MlOSS2AtO2caKOFeQ + nightly-l10n-linux-nightly-13/opt: bwEyoHgwTOW2gCUNIpiAqA + nightly-l10n-linux-nightly-14/opt: avKg-GvpTKac7lZhHkrd7Q + nightly-l10n-linux-nightly-15/opt: SXEK3Ru9Ry2KVmi-xFJecQ + nightly-l10n-linux-nightly-16/opt: ZgENtuuhS_6ZWk-A2d-_UA + nightly-l10n-linux-nightly-17/opt: M9kCrsbZSgufZAru0yuIqQ + nightly-l10n-linux-nightly-18/opt: Kt4WAULxTaeGV-zPpocCBA + nightly-l10n-linux-nightly-19/opt: arRWcxmzRsSSSrTeFD6nwQ + nightly-l10n-linux-nightly-2/opt: PU-WMys7SMKbpc7Pb1Gq2g + nightly-l10n-linux-nightly-20/opt: TPJ1zVoKSEu0BtbkAvK40A + nightly-l10n-linux-nightly-3/opt: B4YtpxKWQtO4nLKmIc8_0w + nightly-l10n-linux-nightly-4/opt: bvlqFe21Tp-BqG3wmFtqXw + nightly-l10n-linux-nightly-5/opt: N9R3QY6qREiBduEHDbO4bw + nightly-l10n-linux-nightly-6/opt: N6tzp0LsTkW5QG-ZilYHuQ + nightly-l10n-linux-nightly-7/opt: RCSYfW1dSEmQ9rS6MCZbOg + nightly-l10n-linux-nightly-8/opt: HM5erlZiQsKPV3L4KH0K9g + nightly-l10n-linux-nightly-9/opt: NCu9reHbSKaKqCJ_M5yd8w + nightly-l10n-linux64-nightly-1/opt: ZvyQtn96RxiZyCaDjkqHSw + nightly-l10n-linux64-nightly-10/opt: Qh7C2Ra0RM6hcTHGQCCPCA + nightly-l10n-linux64-nightly-11/opt: I88Zies5QMiT_aH1V_3y-w + nightly-l10n-linux64-nightly-12/opt: JOVwKKjiQmaQEevb1OMKbQ + nightly-l10n-linux64-nightly-13/opt: eLSfvfSsT5297kSM0o0J9Q + nightly-l10n-linux64-nightly-14/opt: RMjOhFTES5mKjc6RT2zVQg + nightly-l10n-linux64-nightly-15/opt: R6dlAkl_QsCLzDjCibIznQ + nightly-l10n-linux64-nightly-16/opt: BRsT9HDPSleVJEkBDw0rAw + nightly-l10n-linux64-nightly-17/opt: TasNIvJaQ9axS1APzIKVdQ + nightly-l10n-linux64-nightly-18/opt: Yl5FUrSwQoq2M1rPsrZvvQ + nightly-l10n-linux64-nightly-19/opt: Ak03-49gTM2pu0ZCBZNY3Q + nightly-l10n-linux64-nightly-2/opt: KLL5HYCRSfKEboKKkmtI9g + nightly-l10n-linux64-nightly-20/opt: afZps1V1RIu31_26GClGQA + nightly-l10n-linux64-nightly-3/opt: QUDHc3eDRQaeTCz21FBaYg + nightly-l10n-linux64-nightly-4/opt: PzF33T1PQnydTpXmSOngyA + nightly-l10n-linux64-nightly-5/opt: IW0a4N-2RN-csUW1HZ685Q + nightly-l10n-linux64-nightly-6/opt: Bs2RbuVZSS2iCPoYk51ong + nightly-l10n-linux64-nightly-7/opt: NBCtAhEgSvmoogT_ssTLxg + nightly-l10n-linux64-nightly-8/opt: AHkfpzMqTkuMxHBE2pIIlg + nightly-l10n-linux64-nightly-9/opt: OYRfWE3ITrKbOBkD68888A + nightly-l10n-macosx64-nightly-1/opt: MJGU52EETjCqDiXp8_dbLg + nightly-l10n-macosx64-nightly-10/opt: aEIj6W9_RRaRQ2juf0XTkQ + nightly-l10n-macosx64-nightly-11/opt: ILjTOqt8Ttu7LI0KkjxTGA + nightly-l10n-macosx64-nightly-12/opt: L7ERVMblRAqqngH_8gKqQw + nightly-l10n-macosx64-nightly-13/opt: U9P36EijQMu7aT5x75Bmvg + nightly-l10n-macosx64-nightly-14/opt: Y517BHv5RhmYF-PRUYvbfw + nightly-l10n-macosx64-nightly-15/opt: AQsMvwytT6uOnEFVUpsgEg + nightly-l10n-macosx64-nightly-16/opt: G4zdtxccQuaxm5PmCvUeLQ + nightly-l10n-macosx64-nightly-17/opt: cf7zk29mSP-9BFs2gL_5AA + nightly-l10n-macosx64-nightly-18/opt: RlWuvgC_QhqlHtIOthwKiA + nightly-l10n-macosx64-nightly-19/opt: doIEdwXDR16m3ttyx4QUZg + nightly-l10n-macosx64-nightly-2/opt: OFslDtdUROGLvXql5LAQIQ + nightly-l10n-macosx64-nightly-20/opt: fSZY8R3PT525MBTERRtdvA + nightly-l10n-macosx64-nightly-3/opt: O8UoAIB5TkCYpWSli4BxjA + nightly-l10n-macosx64-nightly-4/opt: Z5oe2o9fQset_AjLOgA5Kw + nightly-l10n-macosx64-nightly-5/opt: fuXsM7QMQK6P5j4wcKnpCg + nightly-l10n-macosx64-nightly-6/opt: T-aRkoWZT2eMpSF10bWuRA + nightly-l10n-macosx64-nightly-7/opt: MpGM-fTmTOSdW2xvdmawrg + nightly-l10n-macosx64-nightly-8/opt: OwbqeygvTBOiAv-5hEVW2A + nightly-l10n-macosx64-nightly-9/opt: MSPETCeXRpCk3DY65qwSKA + nightly-l10n-signing-linux-nightly-1/opt: YTPeRAioSYqYS5ZmqRWn1w + nightly-l10n-signing-linux-nightly-10/opt: TH6Pu5yNQyS4pGSUAZd4Tg + nightly-l10n-signing-linux-nightly-11/opt: HLxlh0cERwCDOfZrm7UZ-A + nightly-l10n-signing-linux-nightly-12/opt: Fp9tFiW5R8a0zS15T62cZw + nightly-l10n-signing-linux-nightly-13/opt: df2C4bIEQ12JjpLe_9e2qA + nightly-l10n-signing-linux-nightly-14/opt: HYO-xU0NT6-7kH7DMyHsqw + nightly-l10n-signing-linux-nightly-15/opt: eUrOPg5wTM2-i2XV-7kWIQ + nightly-l10n-signing-linux-nightly-16/opt: Altp_eTQQZa39ZvOQpke3A + nightly-l10n-signing-linux-nightly-17/opt: Y2jMDKf0RFW-K4vOiBvOgw + nightly-l10n-signing-linux-nightly-18/opt: BHYHgFGHTOa0dU_GAJ1EIg + nightly-l10n-signing-linux-nightly-19/opt: DoqO8w14Tda7hYGBKbIWjg + nightly-l10n-signing-linux-nightly-2/opt: ckWS5YvxThGGkb0bYZL6vA + nightly-l10n-signing-linux-nightly-20/opt: NJ6MiF7DS_i_2BCOPkLKCA + nightly-l10n-signing-linux-nightly-3/opt: YzoUdy8pQKK64EWDVT15RQ + nightly-l10n-signing-linux-nightly-4/opt: Mlmvz9myRzWxKo23hkc-Vg + nightly-l10n-signing-linux-nightly-5/opt: RT_9wjj3RIuZd-JSkPLAuQ + nightly-l10n-signing-linux-nightly-6/opt: IGiiOO9xQNuNCSVBWeCU9A + nightly-l10n-signing-linux-nightly-7/opt: Q3RiB1ElSkWE1S647UpDxQ + nightly-l10n-signing-linux-nightly-8/opt: UkbjtdVITUiKgoAlTapt1g + nightly-l10n-signing-linux-nightly-9/opt: JEPxCpqvQyefYYnWJShVoA + nightly-l10n-signing-linux64-nightly-1/opt: QiX1Z_dfSRKJwIoBhVPEew + nightly-l10n-signing-linux64-nightly-10/opt: arKIYpPhRayi7tEShKNYzQ + nightly-l10n-signing-linux64-nightly-11/opt: Xp5izAReTimc1JEyIGAd5Q + nightly-l10n-signing-linux64-nightly-12/opt: VjEjI4-YQOmn0Ae0vNnSGg + nightly-l10n-signing-linux64-nightly-13/opt: HER6wom7RwG-IiXdJCZvNw + nightly-l10n-signing-linux64-nightly-14/opt: HTImDNwpTfa8iZT9B3jpdQ + nightly-l10n-signing-linux64-nightly-15/opt: RYg6wfYyQciD9lFymyzW2A + nightly-l10n-signing-linux64-nightly-16/opt: NPfaGtzSRF-wb1QuXC9o4A + nightly-l10n-signing-linux64-nightly-17/opt: Jlp1OG9jSdyy6WnfVM7Ltw + nightly-l10n-signing-linux64-nightly-18/opt: YnXbYss5RUqAdlHjINgonQ + nightly-l10n-signing-linux64-nightly-19/opt: ZvsVjupxT8qfPhi7MI1VgQ + nightly-l10n-signing-linux64-nightly-2/opt: G0EjmjqrSMiuMOoJF8ewTw + nightly-l10n-signing-linux64-nightly-20/opt: AtdEPSilRsqlAiA-BH0oUg + nightly-l10n-signing-linux64-nightly-3/opt: RYsmO6sqRuum4WpEnFeeEw + nightly-l10n-signing-linux64-nightly-4/opt: b7Cl0JCtTKa8zxOnMAso1Q + nightly-l10n-signing-linux64-nightly-5/opt: QXmQ_ut7SpasE0DxElVkPQ + nightly-l10n-signing-linux64-nightly-6/opt: Tj2KxHHJTXu21ILYS6qMMA + nightly-l10n-signing-linux64-nightly-7/opt: H1nZjKVhSVyAnFffJpZe2A + nightly-l10n-signing-linux64-nightly-8/opt: QxXcWPsoQzOJqC_ZnLjYeg + nightly-l10n-signing-linux64-nightly-9/opt: DDgSsggASymmhIaOsGEVuQ + nightly-l10n-signing-macosx64-nightly-1/opt: CcP1H8gVTRKKhH3BcsHFzw + nightly-l10n-signing-macosx64-nightly-10/opt: e6zMbtgLRQyyz9K2LNbJQQ + nightly-l10n-signing-macosx64-nightly-11/opt: LzL8X3tUT46ODpZMPGGFSA + nightly-l10n-signing-macosx64-nightly-12/opt: ZQe-XukVSNmrniRaFAmgLA + nightly-l10n-signing-macosx64-nightly-13/opt: ep9ZuJmjS4K-b0PLBhk4vg + nightly-l10n-signing-macosx64-nightly-14/opt: XFFxGBL2Rh2wL_hg96zK0g + nightly-l10n-signing-macosx64-nightly-15/opt: ex6ti43HS8KJiRroyVsCDw + nightly-l10n-signing-macosx64-nightly-16/opt: coTPE8t2Rtm-GWfk1irJxg + nightly-l10n-signing-macosx64-nightly-17/opt: c8FA8Z-cRXGSFd8XRObhtA + nightly-l10n-signing-macosx64-nightly-18/opt: MRL0zSKwRlmGkuTZnbML4Q + nightly-l10n-signing-macosx64-nightly-19/opt: GUD_A2JtQVSIMGdhwlFTcg + nightly-l10n-signing-macosx64-nightly-2/opt: ThMQ1LVoSPmTiv9jGJju-w + nightly-l10n-signing-macosx64-nightly-20/opt: Qi-e3_3oRo-dr0PUzWm9uw + nightly-l10n-signing-macosx64-nightly-3/opt: YqWtmTiUTRmIKm53SMvVRA + nightly-l10n-signing-macosx64-nightly-4/opt: LVUTiAu4TG2Wq1WPjxC6HA + nightly-l10n-signing-macosx64-nightly-5/opt: DEOOPPJTR2m9p2mxjf6Sjg + nightly-l10n-signing-macosx64-nightly-6/opt: Sy_64pFfQx2sCBGgqj8ceg + nightly-l10n-signing-macosx64-nightly-7/opt: IHKBFPS9RcmffkMl2ObX2g + nightly-l10n-signing-macosx64-nightly-8/opt: Wv1Ip9BgS5W4RhkJ4rJv9A + nightly-l10n-signing-macosx64-nightly-9/opt: WgfG86w8SIKN6TOBBOMnHA + nightly-l10n-signing-win32-nightly-1/opt: V9mSUcq3S-qNaRX7bXKnsg + nightly-l10n-signing-win32-nightly-10/opt: bibb7fhYSeCjxKNpYXy8qg + nightly-l10n-signing-win32-nightly-11/opt: SpwVErJ8TVqbFiBLisMctQ + nightly-l10n-signing-win32-nightly-12/opt: MjjQOn2MS9-0hws3o_K1mQ + nightly-l10n-signing-win32-nightly-13/opt: Egf9AI7FTym1ofDsssq0qw + nightly-l10n-signing-win32-nightly-14/opt: ME5Wx-AORVqpdfsjdqXJ9g + nightly-l10n-signing-win32-nightly-15/opt: ApB2MQz1Q-ySKAQMs_6Emg + nightly-l10n-signing-win32-nightly-16/opt: GnWoiUDMQAC8GXne_1DNxA + nightly-l10n-signing-win32-nightly-17/opt: fHU7HknlRhuE8tuRFXWWKA + nightly-l10n-signing-win32-nightly-18/opt: Rfq4ucT3Sg2OfZlR-_TxEQ + nightly-l10n-signing-win32-nightly-19/opt: erjQfXN2T2uuKKePUVdg8A + nightly-l10n-signing-win32-nightly-2/opt: XwX0RyK0Qi66OVi9S06RJg + nightly-l10n-signing-win32-nightly-20/opt: QA4UBut6Qz2PStQzB2oF2A + nightly-l10n-signing-win32-nightly-3/opt: Ry8RrzSVT92WFk_PHHPoHg + nightly-l10n-signing-win32-nightly-4/opt: DoigKNuHSNyos4Xl9E639g + nightly-l10n-signing-win32-nightly-5/opt: G47beA9XRTucSHAa5o9EKw + nightly-l10n-signing-win32-nightly-6/opt: DPG3JcmHQESC3qJ5ZFv0oA + nightly-l10n-signing-win32-nightly-7/opt: IavYtB1ARKC_IIWrZK7ozA + nightly-l10n-signing-win32-nightly-8/opt: d75wfLPRRL-tAmupT6iiiA + nightly-l10n-signing-win32-nightly-9/opt: f2guqAoPSjGYlHN4Tnv4Lg + nightly-l10n-signing-win64-nightly-1/opt: F2Sis7grRoGVnGii96XAzA + nightly-l10n-signing-win64-nightly-10/opt: NvnogtchRoCmTIQbcstj4Q + nightly-l10n-signing-win64-nightly-11/opt: aM-gXzXIQjaYaN4rfG_iqQ + nightly-l10n-signing-win64-nightly-12/opt: PFLA0G-gQuCs2YlQ2REgEA + nightly-l10n-signing-win64-nightly-13/opt: MGH2gMFFRLav6MQZ7Y97Cw + nightly-l10n-signing-win64-nightly-14/opt: cFsQneyWQXKhKv7vfaLZWQ + nightly-l10n-signing-win64-nightly-15/opt: UvbKxmkWRquNcKwcVVdhig + nightly-l10n-signing-win64-nightly-16/opt: a6ShH7FvShaJ2ht27eldmA + nightly-l10n-signing-win64-nightly-17/opt: SvNDOn7FSqmLyh_IAnDSQw + nightly-l10n-signing-win64-nightly-18/opt: QAKsMsHNQWmKUxPQog5qQA + nightly-l10n-signing-win64-nightly-19/opt: adDiWeGBQ66yn_xx13wO1A + nightly-l10n-signing-win64-nightly-2/opt: M3crvx6yQcerlysnnVixFw + nightly-l10n-signing-win64-nightly-20/opt: PBBgBODjSDyYsXCfadWd7g + nightly-l10n-signing-win64-nightly-3/opt: MDc3vCZpTuiM_lwEFrJsng + nightly-l10n-signing-win64-nightly-4/opt: Iuk7ENqBTmC_tIvKFE-Vmw + nightly-l10n-signing-win64-nightly-5/opt: R0MANCi6RKSLsgDc7LUI6Q + nightly-l10n-signing-win64-nightly-6/opt: GV5cOk7RTrKBU6qs2meXTQ + nightly-l10n-signing-win64-nightly-7/opt: cX_Byl4WQAySUKhgG1Fzyg + nightly-l10n-signing-win64-nightly-8/opt: RXx9bnBXR1es5o4oi9tLHw + nightly-l10n-signing-win64-nightly-9/opt: Nwu7D-WfT2uQCU-nAbsB-g + nightly-l10n-win32-nightly-1/opt: bHQfmDHvQTa0FJPUGdNizA + nightly-l10n-win32-nightly-10/opt: REfC9Dt6RIu5JwK9tSH3kg + nightly-l10n-win32-nightly-11/opt: MILCs2hcTfOACt0oQPBLww + nightly-l10n-win32-nightly-12/opt: ZrMHYAAQRzuMBkFZl8wgnA + nightly-l10n-win32-nightly-13/opt: brP6lNvCR0G9YUnQBl2buw + nightly-l10n-win32-nightly-14/opt: DCIsaTvlRLCdBB3EXMJHqg + nightly-l10n-win32-nightly-15/opt: NosrKgViQl-inKi8ZBRfqQ + nightly-l10n-win32-nightly-16/opt: Qdaxx1t2SBiHwbUsprix-A + nightly-l10n-win32-nightly-17/opt: bmsjYCNNRvGtO6qigtXQnA + nightly-l10n-win32-nightly-18/opt: D3_cRw0uTeazsZT5H0MJ3A + nightly-l10n-win32-nightly-19/opt: cSwWdwg1SgyKz7u_850kjQ + nightly-l10n-win32-nightly-2/opt: Hza5vp6eTn2E7xzGngXS0g + nightly-l10n-win32-nightly-20/opt: LLN14uOeRYOtM9Gk3gaBYQ + nightly-l10n-win32-nightly-3/opt: GVRJMmOpQ2iYRhq3oHidxg + nightly-l10n-win32-nightly-4/opt: YqqDUOETRK2gKcuthmV-UA + nightly-l10n-win32-nightly-5/opt: b3WtcBHbSHWkCtS1iMAFSA + nightly-l10n-win32-nightly-6/opt: X3Wf5TUnR_2B6_VQ5Og82A + nightly-l10n-win32-nightly-7/opt: VeDgth29Tqm1jHKx2-p2dw + nightly-l10n-win32-nightly-8/opt: atjMNEDtTNS1lokgUEFLbQ + nightly-l10n-win32-nightly-9/opt: DT89JvzoS2-C-a7HE_nWuw + nightly-l10n-win64-nightly-1/opt: BiPWnYYNT8iFjxWgw9dxSQ + nightly-l10n-win64-nightly-10/opt: Zq9AiBwCQFudobGgKMsOvQ + nightly-l10n-win64-nightly-11/opt: MRi-qjJxSBuehPYJb2CuKw + nightly-l10n-win64-nightly-12/opt: bWwcYKxKRsS4D8Rw1znuRA + nightly-l10n-win64-nightly-13/opt: ZZcimVyJRK-wet-gjgiGiQ + nightly-l10n-win64-nightly-14/opt: OGdkRsr0T66L3cpmwSTn_g + nightly-l10n-win64-nightly-15/opt: UNxfUEXESqWX1i_mU2zFsw + nightly-l10n-win64-nightly-16/opt: VDf0hUQnR46WoLmSnamptQ + nightly-l10n-win64-nightly-17/opt: XknO8Wv4QpmTozAdq_iTWQ + nightly-l10n-win64-nightly-18/opt: fSqjl-qoTk-w8UkrJQRd0A + nightly-l10n-win64-nightly-19/opt: ZI2_10s6S5K7G7tvaCRDXg + nightly-l10n-win64-nightly-2/opt: JRp86glISJCWYQPNA78zAw + nightly-l10n-win64-nightly-20/opt: SgqrHoiJQOuST_c8YxuC7Q + nightly-l10n-win64-nightly-3/opt: AIa3e0G3SimeOEq7wj9Gyg + nightly-l10n-win64-nightly-4/opt: DI7GL9BBS6u4QkJoMbjjZQ + nightly-l10n-win64-nightly-5/opt: HoVh0zHJRV6WpIhdB-hw5g + nightly-l10n-win64-nightly-6/opt: d2b3VdJuTLqFJUUhH5Rapg + nightly-l10n-win64-nightly-7/opt: T2Cv061_R9ufl54hn4EuTA + nightly-l10n-win64-nightly-8/opt: FuC6XWdlQK-L1k50iVxicg + nightly-l10n-win64-nightly-9/opt: a4hQWQVATCGJA6cAKyP9eQ + packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA + packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA + packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg + packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ + packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA + packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ + packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg + packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw + packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw + packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A + packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA + packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw + packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg + packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ + packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w + packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg + packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ + packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg + partials-ach-linux-nightly/opt: a5c3DbOUSwudgLPdYUDPqg + partials-ach-linux64-nightly/opt: OynTzU6UTcCj2XfsbZF96g + partials-ach-macosx64-nightly/opt: G4YJEbSZQZyqPY3IWo5AMw + partials-ach-win32-nightly/opt: fpkGXG86QO2WU4PByquw1g + partials-ach-win64-nightly/opt: OeOMYad2R9W7yFsHcVhz-A + partials-af-linux-nightly/opt: LeeAPFqlSTWNhwOof9A3Lw + partials-af-linux64-nightly/opt: Fupfx72oT16276yGbE_hhg + partials-af-macosx64-nightly/opt: JHUNty-LS4iGnPLSklz_eA + partials-af-win32-nightly/opt: VgrLMB8fSjC1L0nxTVbSqQ + partials-af-win64-nightly/opt: EpG-zFWgRnOW3ToQfvvehw + partials-an-linux-nightly/opt: S8JXISRYRzyPcPJBX15d9Q + partials-an-linux64-nightly/opt: MKGGkNzkSvGR9v3pxAJImg + partials-an-macosx64-nightly/opt: BUdg94S8QeG1WpfI0jg4Ag + partials-an-win32-nightly/opt: JfDN6Q6rTbSJVEDL6eRndg + partials-an-win64-nightly/opt: FL30WNa9TJGMiTZmFo6bkQ + partials-ar-linux-nightly/opt: LlPQWS5yR-6uhYc55KmVAw + partials-ar-linux64-nightly/opt: RNPFgrW2Qz-cyrB4VXewBA + partials-ar-macosx64-nightly/opt: KA4Ez41PSauwDfWD9ljI8w + partials-ar-win32-nightly/opt: PBMfCeGkRoqUnmBvOTR0Hw + partials-ar-win64-nightly/opt: cmRg5g8oTd2YPPiM5nYb2Q + partials-as-linux-nightly/opt: d9DHfPOCTZ67hYif3yU_JQ + partials-as-linux64-nightly/opt: cd_qg176To2sNpumZ8OmNQ + partials-as-macosx64-nightly/opt: fNC9PHLcSEeC8am5G_yHPQ + partials-as-win32-nightly/opt: cg8-OeiCTYCjqPSvcg15hQ + partials-as-win64-nightly/opt: Gifef01GQrGKn7VV0Lf8vA + partials-ast-linux-nightly/opt: XCxCVpb9TT681TaQrcBijQ + partials-ast-linux64-nightly/opt: HhF524hRRTC7apSrPmhahw + partials-ast-macosx64-nightly/opt: DQjYqBckQBSe22oy5ILKHg + partials-ast-win32-nightly/opt: eL4Qj-Z2QrOsw9OcIlZfYQ + partials-ast-win64-nightly/opt: Xl5WhwZAToejTPwKkm1Zug + partials-az-linux-nightly/opt: KMT9KjBVSs2UN-12cWRyYQ + partials-az-linux64-nightly/opt: UBZp2jgFRQCo2lgG1hMJzg + partials-az-macosx64-nightly/opt: SKQIwa6PT_aHH-qNTlmxEw + partials-az-win32-nightly/opt: LRdu7VpJSBuJP2NyaIAsxA + partials-az-win64-nightly/opt: SksxNImDTqKwczakWwqr7g + partials-be-linux-nightly/opt: EyYuvz7VRfeiQTnngWnwoA + partials-be-linux64-nightly/opt: ZmYr6tmKTrKRqUYdGPaQoA + partials-be-macosx64-nightly/opt: JmhcESQ3R6m06iTjK449TA + partials-be-win32-nightly/opt: KmZzuVHXSE6XDsyg7R1X6w + partials-be-win64-nightly/opt: dqYPPQmFSRWLG-93iqa2FA + partials-bg-linux-nightly/opt: FjF9RK1oRHGLYJpiWHMNPg + partials-bg-linux64-nightly/opt: ZpzUl8TOQVSKtL3cQcrezw + partials-bg-macosx64-nightly/opt: MGlreuskTZSi6kuHMSD2cQ + partials-bg-win32-nightly/opt: JnIg1iwUSquBACmxmjtw1g + partials-bg-win64-nightly/opt: SeA8xiBTS8aA7_aPBxJHHw + partials-bn-BD-linux-nightly/opt: OozYcUJqTZGY8G7apOIUQA + partials-bn-BD-linux64-nightly/opt: Wq-DCntASy-kVFDWnI2Aww + partials-bn-BD-macosx64-nightly/opt: IiC3VwAZR6ewrpbDQXmKCg + partials-bn-BD-win32-nightly/opt: RuIuY1m2Q7WvjQG2yFpJJQ + partials-bn-BD-win64-nightly/opt: IByS0pNPT0Cgp8go4BIm1Q + partials-bn-IN-linux-nightly/opt: XPuDT6mnRW6esptS8hlgZQ + partials-bn-IN-linux64-nightly/opt: B0Pzm7EPQr-a7OPKKrvPQQ + partials-bn-IN-macosx64-nightly/opt: L_Qq6W_jTOWKg0jWqfUY7w + partials-bn-IN-win32-nightly/opt: XlQj0g98QHidChLKl-tmjw + partials-bn-IN-win64-nightly/opt: FcOuMbwLSUmqYrASomwlEw + partials-br-linux-nightly/opt: Bp6TqDRITn2tJSUfdYFoww + partials-br-linux64-nightly/opt: RIq8YgugT66ifsZRLuTAew + partials-br-macosx64-nightly/opt: Df1tytxkR_WHQaaqZqMJrA + partials-br-win32-nightly/opt: AM__AdiWSbu-vGSvid6OLQ + partials-br-win64-nightly/opt: Bnc_t0ANQtCnZb6eZd7C1g + partials-bs-linux-nightly/opt: LlzMgGnwSFGQF29f0XErFg + partials-bs-linux64-nightly/opt: A8kHjPdPT5iio3iipRvoXQ + partials-bs-macosx64-nightly/opt: Lwgejfj3Tc2RmLPR6ED6IA + partials-bs-win32-nightly/opt: f7zkMLsmTXWnMxZpbCTnHA + partials-bs-win64-nightly/opt: F5Fqw4i-SBWyqsYZfZ2blg + partials-ca-linux-nightly/opt: MOG_FasbR0ik6WiMlMOQyg + partials-ca-linux64-nightly/opt: ZRkkQseWRAKzxzUyviFadw + partials-ca-macosx64-nightly/opt: PjQQ7SsYSRGpkhTAnoESpw + partials-ca-win32-nightly/opt: GmaioaSAQK6wOOZWNPbHCA + partials-ca-win64-nightly/opt: aM1GapkeTuGZpG2nPYPNPw + partials-cak-linux-nightly/opt: QxmX7uSsTYKLZ2mJcHygPg + partials-cak-linux64-nightly/opt: Qr6EMZnUSTqiUJs-l89WXA + partials-cak-macosx64-nightly/opt: R4NP1RqMQW2YA0V5S51XEg + partials-cak-win32-nightly/opt: SCyueIGqTKKITTIWVwV08w + partials-cak-win64-nightly/opt: CYB4LVcLTIKmv6_MJ3_06w + partials-cs-linux-nightly/opt: BG1gCoQ1RbiDWCM-w8Ci2w + partials-cs-linux64-nightly/opt: A-jECrTzR_SyNWWWUFpyHw + partials-cs-macosx64-nightly/opt: asK9C7BgS7yJ1dECYLFYug + partials-cs-win32-nightly/opt: RosbAGc4SpaSvXoZgq_Dwg + partials-cs-win64-nightly/opt: RXxRn4aoT3qP8vqUGVdhrg + partials-cy-linux-nightly/opt: KQ4K0WWnRLKp_ehExpHpoQ + partials-cy-linux64-nightly/opt: bWoM0hO5SVOR_T6jZfEt8g + partials-cy-macosx64-nightly/opt: KIv9gLmNSdSv35uTJTPZrA + partials-cy-win32-nightly/opt: ICQRRS6LT3CS8lEBDGnEug + partials-cy-win64-nightly/opt: JMgieSGwRZ-i2xjyP3ru5A + partials-da-linux-nightly/opt: Edelai6xRLq2KjkG6oGvZQ + partials-da-linux64-nightly/opt: EEQcVmCIQqGuCPx0GJlHwA + partials-da-macosx64-nightly/opt: UAxUsv4ITUCAacHUF8FizQ + partials-da-win32-nightly/opt: WU1W2cU7RheESkXEkPy9dg + partials-da-win64-nightly/opt: VTnxmZGKQL6UvMs0uFL0GA + partials-de-linux-nightly/opt: W_LMXUscRbuRHifUdIDJ0w + partials-de-linux64-nightly/opt: KA451D30RgG7ULAYckw04g + partials-de-macosx64-nightly/opt: H0kHdUlxRA2saGk-hjSnoQ + partials-de-win32-nightly/opt: YBBPPUpTS8WgIXEW3dLn5A + partials-de-win64-nightly/opt: RsjQhjo-QneVv-OFwNrlHA + partials-dsb-linux-nightly/opt: VOIF3-4CSPyKQHS2hv1MSg + partials-dsb-linux64-nightly/opt: YPAGrShJSh-qpD-yTdSZoA + partials-dsb-macosx64-nightly/opt: Lba2gI5cT_K9pSHXm2anpA + partials-dsb-win32-nightly/opt: dkMHYsGzRD22n-GgY83YiQ + partials-dsb-win64-nightly/opt: c8lOg-M6Rty6LWG4d6WzlA + partials-el-linux-nightly/opt: f7LdDRLhQQq5yhIWP-tPyA + partials-el-linux64-nightly/opt: Lq3m2ep7RXOC1B8PYEo4-A + partials-el-macosx64-nightly/opt: I05isFpUTXyrV9hk8nZTZg + partials-el-win32-nightly/opt: ILSjnJKPTkanSO37LNiHfg + partials-el-win64-nightly/opt: Sr4UYmsyQ9-yzzo27tndlg + partials-en-CA-linux-nightly/opt: EBbHBa5ASFixmnTBMzHjOA + partials-en-CA-linux64-nightly/opt: TKU-G9jwRSClNzZiVcYoxw + partials-en-CA-macosx64-nightly/opt: XyZx_PnqSqO7PyvfepoStw + partials-en-CA-win32-nightly/opt: ctQ24ZCcQ3KkDCo_lADw6w + partials-en-CA-win64-nightly/opt: aAwsFxpYQdO2IGs_PgPSxg + partials-en-GB-linux-nightly/opt: BEuOJHT7Tpij-S0Bin5sYg + partials-en-GB-linux64-nightly/opt: AEsAmiANQ-C-WsF2uiG1ZA + partials-en-GB-macosx64-nightly/opt: WK2mG6ImTuSTgMVmye6-8w + partials-en-GB-win32-nightly/opt: eeAJbUNwS3mMk03N9LcLdw + partials-en-GB-win64-nightly/opt: HYZseoccTeKQGs-QcSy5aA + partials-en-ZA-linux-nightly/opt: JdtiDyFtSPmXkeT39GzY3g + partials-en-ZA-linux64-nightly/opt: f6A0Rd5URRSkz6EAysTyoA + partials-en-ZA-macosx64-nightly/opt: MVWEoDtCQm6VomCZ6M2YcA + partials-en-ZA-win32-nightly/opt: azTwqDL1QtyrpzDzIevJ0w + partials-en-ZA-win64-nightly/opt: TilkEQd8Q9u84d_2m9eXfQ + partials-eo-linux-nightly/opt: VHYjIGkORv2Qgkzeotg2Lw + partials-eo-linux64-nightly/opt: I6ZXG31YQbOkVRfnbU2HjA + partials-eo-macosx64-nightly/opt: Y5Js1-ksRMquCNhzVRYFZA + partials-eo-win32-nightly/opt: EjGMVcs5RA-nzu06eNME4g + partials-eo-win64-nightly/opt: HfsTsGTkR8WzdkgSG2YPgQ + partials-es-AR-linux-nightly/opt: YMs-xFcCT3ymfZl6xLGqiw + partials-es-AR-linux64-nightly/opt: R_TRW1ABRKGexbMJ_djr0Q + partials-es-AR-macosx64-nightly/opt: UNGzfVR1QI-teqPO4b4XRQ + partials-es-AR-win32-nightly/opt: buqyTODxRoKDPgnxazMjbg + partials-es-AR-win64-nightly/opt: Ce0zo8S7Rz6cycMA3FUeLw + partials-es-CL-linux-nightly/opt: cZ8R3J1bR0KXqMKf6UdfVA + partials-es-CL-linux64-nightly/opt: LRXXoYzdQTmX8Ma0gschCw + partials-es-CL-macosx64-nightly/opt: UhROY_GzRNKJPYlUM2HvWQ + partials-es-CL-win32-nightly/opt: IB60vF58RQ21uLCP2zo5bQ + partials-es-CL-win64-nightly/opt: WhX3EYcRTk6SJpq-nkLGpQ + partials-es-ES-linux-nightly/opt: N4NmcgfuScC0MCp04_FbKw + partials-es-ES-linux64-nightly/opt: ZZtsUSz6RM-E44q2IWL5bg + partials-es-ES-macosx64-nightly/opt: EYxBcaFGRoO_oYHM09u5Dg + partials-es-ES-win32-nightly/opt: PHzzR2qhSBmLdCCL9hYlxA + partials-es-ES-win64-nightly/opt: c7DIwCWbTJ-zzVlEKAsjKw + partials-es-MX-linux-nightly/opt: DH6z6cLORdm99qDZIksTYQ + partials-es-MX-linux64-nightly/opt: PmDG-HmJToiK5Gwp9RjULw + partials-es-MX-macosx64-nightly/opt: PvX-emuSSuuKrsh8pC5eSQ + partials-es-MX-win32-nightly/opt: VC1N5wt_Qom7BUGoIfW5og + partials-es-MX-win64-nightly/opt: W9EOJKu8QomPfz01JXp97A + partials-et-linux-nightly/opt: O-S34ARGSjWpJAACPquteA + partials-et-linux64-nightly/opt: Rk9T70OASfumIzo32-hPZQ + partials-et-macosx64-nightly/opt: Cu1TJKrDTieWhRTjorlFTg + partials-et-win32-nightly/opt: E6tmEv0oRtStHkYIi4Nb4A + partials-et-win64-nightly/opt: Ncuah8SBRs2aaHICA_8L6g + partials-eu-linux-nightly/opt: AlKQZPigT82OiMhN5Ea_lQ + partials-eu-linux64-nightly/opt: YlTxK3D5SX2pq28OvWZcvA + partials-eu-macosx64-nightly/opt: JvFNctMGTzSHENwpTHULjw + partials-eu-win32-nightly/opt: GFng5mFPShiz1lpY93H0cg + partials-eu-win64-nightly/opt: b_v5Sd3TQnGrmwZm3KxUfg + partials-fa-linux-nightly/opt: dtyCnCxJSWiutrRVWIORkQ + partials-fa-linux64-nightly/opt: TFWT9wGHQjSD7ajkTRXRMQ + partials-fa-macosx64-nightly/opt: Hj0KpPy6TpmgKXatWy0Wag + partials-fa-win32-nightly/opt: JgxvvnE1TDO3GJ_-320S0w + partials-fa-win64-nightly/opt: Ssp3AgEhSIKvkIJcEnvxYQ + partials-ff-linux-nightly/opt: WuFmUNaORW6ZKfcuuxRV-g + partials-ff-linux64-nightly/opt: PFgrdnuUQ42u-x2ci6berQ + partials-ff-macosx64-nightly/opt: VfOTGW9HTvGACCoVgW0uUQ + partials-ff-win32-nightly/opt: T6aAhxE4T8iskiKjjiymBA + partials-ff-win64-nightly/opt: HN9EIKZ1SFWxFkzar6ktvA + partials-fi-linux-nightly/opt: N4KdM-qUT2WbwAh7SjtdRA + partials-fi-linux64-nightly/opt: b1-SfkszQEuTGrVPHDBwmw + partials-fi-macosx64-nightly/opt: cYB8Kp20SROJz5wmTaZqXA + partials-fi-win32-nightly/opt: Fh0VZHIhRVqGEGB4haEgZQ + partials-fi-win64-nightly/opt: W-yce0q1RzqtwZi0L5skRg + partials-fr-linux-nightly/opt: TxupYI60RJ-SPSsaz5t0zg + partials-fr-linux64-nightly/opt: ShEUqqv4QN-phl8c2suj8Q + partials-fr-macosx64-nightly/opt: X2XblrhtQpSyuAowxrpgHQ + partials-fr-win32-nightly/opt: MJM08x6tQeSr2njdjdlIOQ + partials-fr-win64-nightly/opt: UcfGlVXvTuK4lPMs7rAG8Q + partials-fy-NL-linux-nightly/opt: fkNYTJ8GQzej2Z-1aLbVXg + partials-fy-NL-linux64-nightly/opt: CNw1o8kjT6mojDYFwSnUng + partials-fy-NL-macosx64-nightly/opt: b7i-shXvT2qjs0tttnJq-g + partials-fy-NL-win32-nightly/opt: ChaZkeaHSgyw0O5TInPCPw + partials-fy-NL-win64-nightly/opt: BauDbnksR7K6IVQR6KnrdA + partials-ga-IE-linux-nightly/opt: ZLJBZUXARoKjmlVirq1wOA + partials-ga-IE-linux64-nightly/opt: KgGV7w99TSWqfJDgotmozA + partials-ga-IE-macosx64-nightly/opt: Yh_cmp25RvO77rTjEAqpLw + partials-ga-IE-win32-nightly/opt: In-oS7U5R1aBTQ9p0aXpVw + partials-ga-IE-win64-nightly/opt: JgsMbymHRoSB7VDhGRYopg + partials-gd-linux-nightly/opt: AQRGqvy1S4iGVQaSZgne8A + partials-gd-linux64-nightly/opt: R6hMwlfBTTmVTUHe25Ag_Q + partials-gd-macosx64-nightly/opt: LF_HwS43SceCHqiU6ZNU6g + partials-gd-win32-nightly/opt: XXE4sGooTGKVMwrmKbVjQg + partials-gd-win64-nightly/opt: KAIhNubSRZiYK8gj0TNjAA + partials-gl-linux-nightly/opt: N_EA6bt3Rkuvk7a2vF9jpg + partials-gl-linux64-nightly/opt: dadAvkxWTqG32otHnPh7PA + partials-gl-macosx64-nightly/opt: WbV5N17aQQm5M_N1w1fVug + partials-gl-win32-nightly/opt: UrSgVPL3THq8CpjYknsUtg + partials-gl-win64-nightly/opt: PHajEl5sT0GPQMUoW0zccA + partials-gn-linux-nightly/opt: RPAXYS1BTC-MizQyYGEc-Q + partials-gn-linux64-nightly/opt: TQ61u9QgTBaUe53frtqLVw + partials-gn-macosx64-nightly/opt: ASa9cs6cS_uJI_vJn666mg + partials-gn-win32-nightly/opt: PL-prStDS46tsnfY-keUnQ + partials-gn-win64-nightly/opt: PSSXKsAyS-i5pOvbONjf7w + partials-gu-IN-linux-nightly/opt: Ml-SgX4RRx627Ct4ANETtg + partials-gu-IN-linux64-nightly/opt: a7cEojv7T9S2sNw1Ur2XZg + partials-gu-IN-macosx64-nightly/opt: Uuy5UHg_StugxNySkGc1DQ + partials-gu-IN-win32-nightly/opt: ECsUd0YsSTmTilD27pSAcg + partials-gu-IN-win64-nightly/opt: QNCOAZuTQ8C_2hfsHkBIKw + partials-he-linux-nightly/opt: K4aqEXeqTUe0uNX47ieYWw + partials-he-linux64-nightly/opt: Rb3UOHCpRYu25Or90s4sNw + partials-he-macosx64-nightly/opt: GRtxYCSFT1iVQv4BFPO-TQ + partials-he-win32-nightly/opt: Aro7MFavTOWQHulzm6mMTw + partials-he-win64-nightly/opt: RjQEJT-STTKUsl-RuP7SjA + partials-hi-IN-linux-nightly/opt: Bk_VrP6FR_aBCCZwIxQfMg + partials-hi-IN-linux64-nightly/opt: DoVmle6aSIShprbtio3SDg + partials-hi-IN-macosx64-nightly/opt: VgrN5SFwScW5PvZhJVxhEg + partials-hi-IN-win32-nightly/opt: TF1oRBmHTROtF4MGZT_z_Q + partials-hi-IN-win64-nightly/opt: TWEDmUEjRfC0gRoeeJTvIw + partials-hr-linux-nightly/opt: ZCi8s9FaRMuWJyuiEu_2PQ + partials-hr-linux64-nightly/opt: BU8qhJyNSBGDw1zMcw-I7w + partials-hr-macosx64-nightly/opt: f5iQ3zNaT9CZpxSa81xJGA + partials-hr-win32-nightly/opt: EfkSfWCKS0m8LjhPY5RTSw + partials-hr-win64-nightly/opt: AFeS6oYuSEKCT5ZPP3Q9tw + partials-hsb-linux-nightly/opt: ORqq5dzWQtiZjbnvk5u_CA + partials-hsb-linux64-nightly/opt: d0_NvU7gTCuxayzwMwGLgg + partials-hsb-macosx64-nightly/opt: WXbDxGC5QSqSSHaWrwpO5Q + partials-hsb-win32-nightly/opt: UNFIqs-HTmaNdASOcOr7xQ + partials-hsb-win64-nightly/opt: elDC2DjITtyX4Vr5Eq2pjw + partials-hu-linux-nightly/opt: PrdItlPvQKy45Yxid9g6og + partials-hu-linux64-nightly/opt: IIF5eE_9RfmHUTSjDm-hQw + partials-hu-macosx64-nightly/opt: FYtNHdfHTE6TUR7n-x-hLQ + partials-hu-win32-nightly/opt: Mh7Rr_qPSBq7II4hlVr_Ig + partials-hu-win64-nightly/opt: VC9GyoHMTlax4q0gWsdQyg + partials-hy-AM-linux-nightly/opt: GcbumvRiQfiYJVknF3K5nw + partials-hy-AM-linux64-nightly/opt: O4-ve_PFSvScMzagb0QZpg + partials-hy-AM-macosx64-nightly/opt: CWiqw2Z8R2a5EuOisMcMBw + partials-hy-AM-win32-nightly/opt: T66CFfReQxa0WfmRmwWQWw + partials-hy-AM-win64-nightly/opt: efCwzyhCTcWl2qN_Ya00Qw + partials-ia-linux-nightly/opt: XK_HaMURRyugPlZFiB36rQ + partials-ia-linux64-nightly/opt: IMJBKmhkTRGeXdmCoVDP7g + partials-ia-macosx64-nightly/opt: X6D4v_7zSiqaR1XNH-jlwg + partials-ia-win32-nightly/opt: eHM_T9hzRsuhvSktcqo2iw + partials-ia-win64-nightly/opt: BHKKvCYpS56xX9niHohkJQ + partials-id-linux-nightly/opt: BISySZYERSStyimfxEfdjA + partials-id-linux64-nightly/opt: Ouy00QNIS-2ccKOSo34QTA + partials-id-macosx64-nightly/opt: R3UYh550SBmJ2cRq6Clttw + partials-id-win32-nightly/opt: KP5mseKFTRuvLWO58VqPnA + partials-id-win64-nightly/opt: fSIPFpdxTkioAymIk3oDfw + partials-is-linux-nightly/opt: Q0w4Ys0PSW6FgGwfb-7DVg + partials-is-linux64-nightly/opt: V4xZbb24RvCayqYmLe1W9g + partials-is-macosx64-nightly/opt: QNKJ3eYYQG2n75d1AjtCJA + partials-is-win32-nightly/opt: DXKc7iQjTBG9vRkl5Qk5YQ + partials-is-win64-nightly/opt: VEXXiVCtRqGeOVnW-XMm5g + partials-it-linux-nightly/opt: UzcAkXigQZmNzXRfbxkveQ + partials-it-linux64-nightly/opt: WAAJiZj6THujdjb2_GI3ag + partials-it-macosx64-nightly/opt: CnFaayYTQc2EQLm2W4MojQ + partials-it-win32-nightly/opt: bOPowrHESgqvfJ9XHxYzJw + partials-it-win64-nightly/opt: SJIZOi3sQv6I1Bh8hma-ng + partials-ja-JP-mac-macosx64-nightly/opt: egxEG__hTJiMFOwjLunXoQ + partials-ja-linux-nightly/opt: P5om5b5WRn-t2dNahTMg1g + partials-ja-linux64-nightly/opt: Gf_VJvACQL2T5E2KQcWsfg + partials-ja-win32-nightly/opt: TntFsN0qQBWBtBnus5iQRg + partials-ja-win64-nightly/opt: d4pbtiEcT5eSu2vcmgW2Nw + partials-ka-linux-nightly/opt: PZxEiTCIRWSVBSTnS8mDuQ + partials-ka-linux64-nightly/opt: V3HGTIG0TE2Fq4Sq3NY42w + partials-ka-macosx64-nightly/opt: LNuB1vbmRVeI9HfyfnPPVg + partials-ka-win32-nightly/opt: eKgYCQYbQBKuadN_uIQOMg + partials-ka-win64-nightly/opt: C3_NWKzXRCGD25XeiUi0yg + partials-kab-linux-nightly/opt: btWM0MeKQ5OWIw7TY6RSGg + partials-kab-linux64-nightly/opt: Xu7lR9VlTPqUOtRgzQfLlA + partials-kab-macosx64-nightly/opt: FRApc9oYQdmd9qbA97ecZg + partials-kab-win32-nightly/opt: fSog6IxKQeyCDgkMGaNQVg + partials-kab-win64-nightly/opt: dERn9uWCRaG_26Ztj4R8YA + partials-kk-linux-nightly/opt: bOqDTMJNQb-hrG2Lxr7m-w + partials-kk-linux64-nightly/opt: LyMj-3-YTZCnJMx6aoFhVQ + partials-kk-macosx64-nightly/opt: Vv4PgY71RketAPQ_6LVgug + partials-kk-win32-nightly/opt: Bh_v5HvBTmejRfpkm5rO8Q + partials-kk-win64-nightly/opt: YEIUuWCDQRy4Rw8WsLedTw + partials-km-linux-nightly/opt: A4cMzxbURGCjEXzDpji1Rw + partials-km-linux64-nightly/opt: WmkpblKbSKWNbgeRDKHnPA + partials-km-macosx64-nightly/opt: Zvmb8r1nRTCnvFPgvWQlMg + partials-km-win32-nightly/opt: Xk8CzuU2Q0-Dv5EiolMBYA + partials-km-win64-nightly/opt: UKK2cTG4T0akkrKTuppqAQ + partials-kn-linux-nightly/opt: ONynqXkESpyIJLdWCtkiSA + partials-kn-linux64-nightly/opt: WbKjgTZvSQWza24xRhtUCA + partials-kn-macosx64-nightly/opt: FASG2KJnT2WpyRMmwL9XrQ + partials-kn-win32-nightly/opt: A4APwXEtQMWsJP-Y844j0g + partials-kn-win64-nightly/opt: OxZgVmYfT_yAt7xTENn6cg + partials-ko-linux-nightly/opt: TkVFPbqxRmahKnEod2kZKQ + partials-ko-linux64-nightly/opt: A5Sto0MlT2q5UM0djhTKkw + partials-ko-macosx64-nightly/opt: K2rAdU-GR-2JNFQikuKDyg + partials-ko-win32-nightly/opt: Vqp8187nSSilR5djUZU-vw + partials-ko-win64-nightly/opt: Jl1S8Xf_TfafMoMxPHSlMA + partials-lij-linux-nightly/opt: QTP26wigRjuyfl9VUO_hCA + partials-lij-linux64-nightly/opt: DSKe_rCpRBiCE3gdeCevaA + partials-lij-macosx64-nightly/opt: AFiaAfoWT5q_dA103pD6Zg + partials-lij-win32-nightly/opt: LOLUQN95QlmhbCjqhxfnZw + partials-lij-win64-nightly/opt: OP_eILVfRremSBAXY0Orrw + partials-linux-nightly/opt: Tl-RP__yRoWm_VKLjq30_w + partials-linux64-nightly/opt: cDLHP0MXQ3uNOXIhmh0k9A + partials-lt-linux-nightly/opt: P7Ilzm94RaaFbiyPKg3ZcA + partials-lt-linux64-nightly/opt: OSxZQso2SZWu7xDW8B4FJg + partials-lt-macosx64-nightly/opt: MF_UX8cbQD-P2rRLsofluQ + partials-lt-win32-nightly/opt: BgjamP0mTNe1z2-ex6AObQ + partials-lt-win64-nightly/opt: Une4IYmvQd6SiabisFIkMg + partials-lv-linux-nightly/opt: YMsSm4DBQbebmAGCQTpErg + partials-lv-linux64-nightly/opt: ISEa7cAuTeSVYRrmmIijjA + partials-lv-macosx64-nightly/opt: TazzAAuZRCi6AMZ132Islg + partials-lv-win32-nightly/opt: NYIwcPQPRSijrK5mkS2Whg + partials-lv-win64-nightly/opt: WSSn31bdSr-vmqz5210dFw + partials-macosx64-nightly/opt: GiiT6ppLQCmi04NGHfXGEg + partials-mai-linux-nightly/opt: Lsip79SmS-O8O9c8MEmtcg + partials-mai-linux64-nightly/opt: F60giUPBQuWuZsrdLQYJuA + partials-mai-macosx64-nightly/opt: OfIBLC1eTqq5qqCirlNWmQ + partials-mai-win32-nightly/opt: P0FIn53DTsWEFJKAuIRprw + partials-mai-win64-nightly/opt: cYuSDhaCTeGpBwTuNIiCtg + partials-mk-linux-nightly/opt: VDHS-iUZR86vl2qBz0tAsw + partials-mk-linux64-nightly/opt: aQmzWeMBRVeNICX0AsNuow + partials-mk-macosx64-nightly/opt: aOy7-RopS8qLrTbpcHlf_A + partials-mk-win32-nightly/opt: ITBrrPYwR36LTQZzDUIflw + partials-mk-win64-nightly/opt: PuVohVqURU2kG2PN1s4iIg + partials-ml-linux-nightly/opt: Xm8yZHj3RVODqwA4PXxtjw + partials-ml-linux64-nightly/opt: AUNb3EOpTYaFkkMSAFKNBw + partials-ml-macosx64-nightly/opt: ORyCBP16Sf2fxXtVPtEc5g + partials-ml-win32-nightly/opt: WDMUQ_XVTWS00aSA6gfL2A + partials-ml-win64-nightly/opt: FuKmEcwHQEKgxjr9Boy4Gw + partials-mr-linux-nightly/opt: aCcZ8iY1QXCxkwf4Gv7IaQ + partials-mr-linux64-nightly/opt: PGKFbGlcRIWUX5W53YaboQ + partials-mr-macosx64-nightly/opt: G-7V-SzGRHSFc-ufBlRQPw + partials-mr-win32-nightly/opt: YEoT5bYNSxmgcwgu7NYryA + partials-mr-win64-nightly/opt: b-1ZeWVnRwmofhUV6HfXBw + partials-ms-linux-nightly/opt: T0Buav8lTKGGcc4D4sggDw + partials-ms-linux64-nightly/opt: Y58oLf19SLWLkhRAbcvJbQ + partials-ms-macosx64-nightly/opt: aJLb5tflQ120f1zQgCVTjw + partials-ms-win32-nightly/opt: RlvVfNlLTqmBmPwnYKeUhg + partials-ms-win64-nightly/opt: eYP3d-93RbWJrNyw0pcG-A + partials-my-linux-nightly/opt: YCrqmWv3R4yYXs0Lzjcogg + partials-my-linux64-nightly/opt: M7ZsSqfyTAK8OLRG3Qedkw + partials-my-macosx64-nightly/opt: HJ3wrM0gStKhl5xoJh4pBA + partials-my-win32-nightly/opt: GSh-iBOqT0mq8Xr49ShwaQ + partials-my-win64-nightly/opt: PViOhvw1SnaIoRXWvFJR2w + partials-nb-NO-linux-nightly/opt: H8509MOfQm2a0n0VLPP3xw + partials-nb-NO-linux64-nightly/opt: ZxVAwHOYSXCZfrRg6FcMnA + partials-nb-NO-macosx64-nightly/opt: aNdv8HnITzydC9b1WSvnew + partials-nb-NO-win32-nightly/opt: TNWFzvZ-QS6Z3Pi8C5ebhg + partials-nb-NO-win64-nightly/opt: Ml8G8JvLQrK4mnElyJEDvg + partials-ne-NP-linux-nightly/opt: UsxcyFksT_2rNfk25VlUWQ + partials-ne-NP-linux64-nightly/opt: DRSEhc8VRyKkTPGLkIvqeg + partials-ne-NP-macosx64-nightly/opt: KzLnyMA7Ryyl-l_0JtTF0A + partials-ne-NP-win32-nightly/opt: HpzvQ5s7TlSLMr1ajbq02Q + partials-ne-NP-win64-nightly/opt: IYT0A-PnS8CdTHZa3RU0vQ + partials-nl-linux-nightly/opt: ElMB-MLjR3qV7dGK_pg1rg + partials-nl-linux64-nightly/opt: DHX068zaRHyCROy8x0lDsw + partials-nl-macosx64-nightly/opt: fMaW0JFSRVOIQ-ISt6kWdw + partials-nl-win32-nightly/opt: Qhf1Aze-SSOCFwyQKCE98Q + partials-nl-win64-nightly/opt: HyjXOdKST7GKX3avCY0Cfw + partials-nn-NO-linux-nightly/opt: I9SAOxK5QviqVmR8eX-Jqw + partials-nn-NO-linux64-nightly/opt: Hy0ePsUeS8aAZ6vaB8DZfA + partials-nn-NO-macosx64-nightly/opt: F1_OVm6ITY-osALxjLvUmA + partials-nn-NO-win32-nightly/opt: Mm1eCihkSuSfD0PXX4HmMg + partials-nn-NO-win64-nightly/opt: RmYhh7-kQlqYZmPOQoxvxA + partials-oc-linux-nightly/opt: DBpbLsUIRBGwssSwzuXKfg + partials-oc-linux64-nightly/opt: LKlUrMDXRaqW9aVgsS_oNQ + partials-oc-macosx64-nightly/opt: V6Y3x_7ySPqOeqEkNefJbw + partials-oc-win32-nightly/opt: BOAA0j7dRNGzRd2S0HS0Ig + partials-oc-win64-nightly/opt: GoyQLmhZRG609-cEpJEDDg + partials-or-linux-nightly/opt: OQTseTWcQTWTXpn5t0l1hA + partials-or-linux64-nightly/opt: W8jxDSgYQK6AoQSgXCL4eQ + partials-or-macosx64-nightly/opt: XV0NQpteSQigkxw2WKlfkA + partials-or-win32-nightly/opt: YTHK8v9ZS_ijrDRS660KTA + partials-or-win64-nightly/opt: POOfpWEiSyaYrLIRkdqiDw + partials-pa-IN-linux-nightly/opt: UTxKnWhXSkyNvSESHCPo7w + partials-pa-IN-linux64-nightly/opt: D9fWTsTNRZO0Bu84cwa19Q + partials-pa-IN-macosx64-nightly/opt: NhCD2LgnR1y__BfXrPOtcw + partials-pa-IN-win32-nightly/opt: Sc6D38YDR_COlOBvmHyFlQ + partials-pa-IN-win64-nightly/opt: ADYwzMNCTQCc8ZOv3CtJrw + partials-pl-linux-nightly/opt: dB3De6NrRKOCxR9P8F3bWQ + partials-pl-linux64-nightly/opt: FFXiF26jSr6Kfnkurr0lxQ + partials-pl-macosx64-nightly/opt: VeCZXJMRSESCz4zDN-Afxw + partials-pl-win32-nightly/opt: JqIBOpcbSbGWhSwE6cc24g + partials-pl-win64-nightly/opt: JIM9HUVaQ6-qDPR1XIR2AQ + partials-pt-BR-linux-nightly/opt: Woi-TPT8R3210ZlUk9Idrg + partials-pt-BR-linux64-nightly/opt: A-6J1DE1QXuzYm89LM16zg + partials-pt-BR-macosx64-nightly/opt: Vs3MrpbuSWKRR1kbJb0bOQ + partials-pt-BR-win32-nightly/opt: dazTOEvCSG6TB3NDQLk2cA + partials-pt-BR-win64-nightly/opt: O7PtroRjRJmbQl1ctXe1hg + partials-pt-PT-linux-nightly/opt: GX0bD7tLS82ai5LSX8V_Cg + partials-pt-PT-linux64-nightly/opt: etJL1kcHSeCeORI1SYXFjQ + partials-pt-PT-macosx64-nightly/opt: d2Htf4xbTzmA-9rZqcEeLQ + partials-pt-PT-win32-nightly/opt: KQ1DQukCR8C3Y9z50JxwYA + partials-pt-PT-win64-nightly/opt: CKueCp8XSgeXxDXqm_NrRA + partials-rm-linux-nightly/opt: Iuty04TaTiKuEMAXukbwqw + partials-rm-linux64-nightly/opt: E7nOPvS_Rq6ka9DzPXJJYg + partials-rm-macosx64-nightly/opt: LOJBiys0RW2BIYyVmiv5NA + partials-rm-win32-nightly/opt: eCWfbAxVQ4-BUTQCqp_BbQ + partials-rm-win64-nightly/opt: B2yQmXHLRZKqv_9dlK_f6A + partials-ro-linux-nightly/opt: CUZhFilIS_W2uCDmQmPMeQ + partials-ro-linux64-nightly/opt: JyiPPZ80RNyMMuELtTkpQg + partials-ro-macosx64-nightly/opt: EMGuNP82Tmu0VZFGXT0r-A + partials-ro-win32-nightly/opt: DTm8MGtTTm2lhwRIeHK_sw + partials-ro-win64-nightly/opt: a4qFw5WNSx2VLNvacihEBQ + partials-ru-linux-nightly/opt: cTgBcCdiSQ-tVe3kIM_uXg + partials-ru-linux64-nightly/opt: R26YS745TImC8wv1jh1zMQ + partials-ru-macosx64-nightly/opt: LUgJPl60RN2AbRYlUcqapw + partials-ru-win32-nightly/opt: e42u1h2gTTCDg_3DjbbG1Q + partials-ru-win64-nightly/opt: LMqZ7hdAQVGVKU4irCHCTg + partials-si-linux-nightly/opt: eYhNIhonT-icoSn7JwyR4g + partials-si-linux64-nightly/opt: KM_plii9QZaAMrzuBpc_tg + partials-si-macosx64-nightly/opt: UqeVh2X6RB2aeeaueZeUOw + partials-si-win32-nightly/opt: ZZpKLBUlSlKw9dXte3d1xg + partials-si-win64-nightly/opt: YPQSmk08ScmEuNbspPL2Lw + partials-signing-ach-linux-nightly/opt: HFagEw5PRHWko0LcSoNzsw + partials-signing-ach-linux64-nightly/opt: EA4Z7LKVRf-oSGUJ2qIo9g + partials-signing-ach-macosx64-nightly/opt: cYc-ETRJT-2ifpYolV6RWg + partials-signing-ach-win32-nightly/opt: CK6XYlXnTg2ddGOvvQwQ2w + partials-signing-ach-win64-nightly/opt: KBtczv6YTdegeegD30FU5w + partials-signing-af-linux-nightly/opt: H6_5duA4SquJnxCVSPCAKQ + partials-signing-af-linux64-nightly/opt: D6L560D5SJGpwCzRsFBUKQ + partials-signing-af-macosx64-nightly/opt: QpfXW3h3RTKVgk0NyDZwhQ + partials-signing-af-win32-nightly/opt: GlUhGbiEQhizNjub1v7VxQ + partials-signing-af-win64-nightly/opt: FgkXgoDeSdyYwLBliaS9mw + partials-signing-an-linux-nightly/opt: LkJsluZdQAmDxL0pt25aGQ + partials-signing-an-linux64-nightly/opt: XhRchsuFTv2wM9yKa2NNiQ + partials-signing-an-macosx64-nightly/opt: DuqA1rfhRbqvmFPjd7NIjg + partials-signing-an-win32-nightly/opt: YVGXtH8YRT6veIz34kWyMA + partials-signing-an-win64-nightly/opt: RT4bmOkEQzmJERVzWmzC0A + partials-signing-ar-linux-nightly/opt: KXcxo6UPQXiSCDgHaUqyzw + partials-signing-ar-linux64-nightly/opt: e_zXs8UiRCeHHutXWfAenQ + partials-signing-ar-macosx64-nightly/opt: Obys75-8RyuY6pu0sAbsAQ + partials-signing-ar-win32-nightly/opt: a_GJS6KhSWGq1FopDtBUlw + partials-signing-ar-win64-nightly/opt: a_WIZC8cSNinUijvPQgpFg + partials-signing-as-linux-nightly/opt: YEwEf0ZfTPKdOIe4hpAW8g + partials-signing-as-linux64-nightly/opt: KWsbcX_gTWOyrxDswl1Y1Q + partials-signing-as-macosx64-nightly/opt: Uk6SVnrlRDWMp6UtTdJ1oQ + partials-signing-as-win32-nightly/opt: F6rgRPTyS6efVZQHTr0sXQ + partials-signing-as-win64-nightly/opt: SxqzQXFCSp-Sx0PhVfFn0Q + partials-signing-ast-linux-nightly/opt: HfkVK97ISYGByQ1Hlio57w + partials-signing-ast-linux64-nightly/opt: EEZWFezOSWy5N2h74zpULA + partials-signing-ast-macosx64-nightly/opt: XI1QB5WhQTeOCMC-hh-AxQ + partials-signing-ast-win32-nightly/opt: L1IVg43UTRmL419hX5_PCw + partials-signing-ast-win64-nightly/opt: e7Z6oBnRQYOCfuBK221qNA + partials-signing-az-linux-nightly/opt: MQS3QvTSQoGaB5xIMV6vEA + partials-signing-az-linux64-nightly/opt: Ha1J4_z8QqSmGdRQxay5RQ + partials-signing-az-macosx64-nightly/opt: RBnRVYqeSoKeHb3o1YRLkQ + partials-signing-az-win32-nightly/opt: NiGMcATEQM-q0GCYImimXg + partials-signing-az-win64-nightly/opt: AON1fwXjT0qRXec4SeINLA + partials-signing-be-linux-nightly/opt: O0UIHhJuSkKkcCn6dsx_2Q + partials-signing-be-linux64-nightly/opt: QkxIo9bZTxK2Kx7eCxLBOw + partials-signing-be-macosx64-nightly/opt: YTVJd7S_S1CO8ika0lrNYA + partials-signing-be-win32-nightly/opt: M11M0QkWQzivmPqIycUFxQ + partials-signing-be-win64-nightly/opt: RtZpj-kkQOykwwI-FGuQAw + partials-signing-bg-linux-nightly/opt: BVAMwcSRS8SICXv-UsFVgQ + partials-signing-bg-linux64-nightly/opt: U5X48KjBRbmtz_sO0nVXww + partials-signing-bg-macosx64-nightly/opt: A1WVequiT3G1rR4zV_b0dQ + partials-signing-bg-win32-nightly/opt: QShPE4XEQbqxDf4oxgI7wQ + partials-signing-bg-win64-nightly/opt: Y5xCchOkSwqNCuAQZg_IQQ + partials-signing-bn-BD-linux-nightly/opt: GYHH1qzzQNOShwSuMPT_dA + partials-signing-bn-BD-linux64-nightly/opt: I8wsKm7dTDWIA644pQ8jIg + partials-signing-bn-BD-macosx64-nightly/opt: Y_IKp-vMSZ-IGAaHcMIuiQ + partials-signing-bn-BD-win32-nightly/opt: Kr0U-_iyTUubL0HujNwzrA + partials-signing-bn-BD-win64-nightly/opt: HM1N7b6BQT-IjC7-4Y6RSA + partials-signing-bn-IN-linux-nightly/opt: eLGyl7IpRju1MLbgf96VvQ + partials-signing-bn-IN-linux64-nightly/opt: XNHyuOBZTROV7DKzkh_Cfg + partials-signing-bn-IN-macosx64-nightly/opt: Hw9aEoUzS2S9cqD7Ky8s4g + partials-signing-bn-IN-win32-nightly/opt: ewoQX_S7RbCKcdmLN_n5_w + partials-signing-bn-IN-win64-nightly/opt: DVRPhidlQzm-urNjwa36vA + partials-signing-br-linux-nightly/opt: Ko4bJKcbSUWEn0NWpr02Qg + partials-signing-br-linux64-nightly/opt: LLVobCTFQnWxCkrL1TRpNw + partials-signing-br-macosx64-nightly/opt: SodLk-Y3RxmXtlQr37TJOA + partials-signing-br-win32-nightly/opt: RArn2yHQSWSBotx3R6_tBw + partials-signing-br-win64-nightly/opt: eu4ZKfL2QJGAwFUFBXSd3Q + partials-signing-bs-linux-nightly/opt: EPC2N4JyRnOWMYusK5NHIg + partials-signing-bs-linux64-nightly/opt: Qmo0WSmlS6m6idyP2xLYUg + partials-signing-bs-macosx64-nightly/opt: eWvbs-u-QT-cc8rhCZQytA + partials-signing-bs-win32-nightly/opt: BrA99_dwSVKmxyDkYFU2kQ + partials-signing-bs-win64-nightly/opt: HEJdG0cRSum5JMTUhQMCOA + partials-signing-ca-linux-nightly/opt: ZcVFIKpURKqqxNfdpSjRRw + partials-signing-ca-linux64-nightly/opt: TAphjdjiT2G7XLLpeC7kfg + partials-signing-ca-macosx64-nightly/opt: LsiLNm6sRuSr0zJYFPJWpQ + partials-signing-ca-win32-nightly/opt: GDGSd5lESLuCkIkAYlYRdg + partials-signing-ca-win64-nightly/opt: Wpy5EApfSe2bQhuvf_ZOmw + partials-signing-cak-linux-nightly/opt: HiHNbu-8QUWe_BUCLF7jkQ + partials-signing-cak-linux64-nightly/opt: fHlNwIRQSr2VjN5xexZ2Gg + partials-signing-cak-macosx64-nightly/opt: I0gqfrupSdmXR0X2lJXysg + partials-signing-cak-win32-nightly/opt: f7aafgJeS9Sdf8qMaMfDow + partials-signing-cak-win64-nightly/opt: cxow05HzSviZ-IkGdYO4qA + partials-signing-cs-linux-nightly/opt: OO8zctuNRrSdqEVNUWXV9w + partials-signing-cs-linux64-nightly/opt: BNr7mSXsTmCYL0MaauQo_w + partials-signing-cs-macosx64-nightly/opt: Cf25-AqCRuCiK6_NFtWzEQ + partials-signing-cs-win32-nightly/opt: T8FZdsJxTwurlOKi9J7JWg + partials-signing-cs-win64-nightly/opt: JEIbFVeAQeKNPNEGe4mJlw + partials-signing-cy-linux-nightly/opt: LzWo0-C1Sj6xQ1I9gP5clw + partials-signing-cy-linux64-nightly/opt: fbwNi0btTIGvQDLAKsHuiA + partials-signing-cy-macosx64-nightly/opt: WCOoDBq2TQaCttDN_6znzA + partials-signing-cy-win32-nightly/opt: KQvBxnirTYKG4xNP00VXwQ + partials-signing-cy-win64-nightly/opt: AwMafUj-R92xuGdiCkUJFg + partials-signing-da-linux-nightly/opt: Bbsdc8FnT2ay9YbRdvM0_g + partials-signing-da-linux64-nightly/opt: Hu1zrfBQQ1KF91hKGW9UHg + partials-signing-da-macosx64-nightly/opt: JkfUpPYiT4qCz4ttUR65mQ + partials-signing-da-win32-nightly/opt: VgMJX9OpRPW89fopuCgcWA + partials-signing-da-win64-nightly/opt: GKGjqNjsT6yQyKsyJPZlmg + partials-signing-de-linux-nightly/opt: QylCEFarT_ypOPwGOT6LLA + partials-signing-de-linux64-nightly/opt: Ud0hPUXHSH2fqpwCUnin5w + partials-signing-de-macosx64-nightly/opt: ddGuSWhsQ0i3GFaG9Ymd4Q + partials-signing-de-win32-nightly/opt: IVIf__2NRIiuL82xxtEjEg + partials-signing-de-win64-nightly/opt: S3c7_TuaTKi8ZvKz_pdHbg + partials-signing-dsb-linux-nightly/opt: RxwnY4l6T9CEIl9XEZdnuA + partials-signing-dsb-linux64-nightly/opt: ZGgYj0B-Qd2wupmwKr9eww + partials-signing-dsb-macosx64-nightly/opt: cgRQU0D6SvSQ6fQKzENk8A + partials-signing-dsb-win32-nightly/opt: IMsGQWQkQByq3qDcP9He9g + partials-signing-dsb-win64-nightly/opt: LK68qkThTwKaq_4quF1hVA + partials-signing-el-linux-nightly/opt: bnI_6HowSuGvuFuMZpe1rQ + partials-signing-el-linux64-nightly/opt: VUcnhNvNQmeGlqh-km-WLA + partials-signing-el-macosx64-nightly/opt: W_d_xbCRTg6AUQO-DSOZWA + partials-signing-el-win32-nightly/opt: dHaKYDumQp-M6JbCxTAJhw + partials-signing-el-win64-nightly/opt: ebfX1CUkSy2UaiGUNGbN_w + partials-signing-en-CA-linux-nightly/opt: KexqKrU5Tl-7fIDpzrEnzQ + partials-signing-en-CA-linux64-nightly/opt: aRoyCOv4RXS6EfN3ZnJsig + partials-signing-en-CA-macosx64-nightly/opt: SYabqzqkSJCQW28HrbaUoA + partials-signing-en-CA-win32-nightly/opt: fhDr14HNT5SRUDUSC56kQg + partials-signing-en-CA-win64-nightly/opt: RdhT8RLbQOyp5JDnB309Cg + partials-signing-en-GB-linux-nightly/opt: WcVUrGoQTzKmS9kv6dnHGw + partials-signing-en-GB-linux64-nightly/opt: ej0ETBXMRFGIdkkfKSZWxQ + partials-signing-en-GB-macosx64-nightly/opt: F10k1RjWQ1SnNjTwSxX6nQ + partials-signing-en-GB-win32-nightly/opt: Fbuz-W8SR1irbzPcMwq8tg + partials-signing-en-GB-win64-nightly/opt: dAiMHA7PTHqMr3iH3n8t-w + partials-signing-en-ZA-linux-nightly/opt: Z92VamhpR2qqmC9VmQ9M6w + partials-signing-en-ZA-linux64-nightly/opt: JX_7qmuUTv6z_vPlt_1GTQ + partials-signing-en-ZA-macosx64-nightly/opt: JP0BotuQRhSIwdz8C6LoQQ + partials-signing-en-ZA-win32-nightly/opt: WRxZDrwsRu2SBNVLLNPJDQ + partials-signing-en-ZA-win64-nightly/opt: IzOer88STTmEO5Oq1dsBCA + partials-signing-eo-linux-nightly/opt: PF9xUFrYRWamzw8lurLWKA + partials-signing-eo-linux64-nightly/opt: FtyStjxyTr60GVnaSMO2OA + partials-signing-eo-macosx64-nightly/opt: f3un4mmyQh6oeGAsG36L2Q + partials-signing-eo-win32-nightly/opt: BmiMLx6zQ6KFvcWwAP-zcA + partials-signing-eo-win64-nightly/opt: RIQ6gSGJTDGjwbRnPXYPYA + partials-signing-es-AR-linux-nightly/opt: NGBOGCF9RwKDakTfo-dKQA + partials-signing-es-AR-linux64-nightly/opt: UpnapbyJTk2i4HMflP9PFQ + partials-signing-es-AR-macosx64-nightly/opt: B5A3dglNTMmv5EoZJH-Bng + partials-signing-es-AR-win32-nightly/opt: Io6JVkZVS_KQ6NJRxoG1RA + partials-signing-es-AR-win64-nightly/opt: BlqZDY_FS3SEKAVfNSNUfQ + partials-signing-es-CL-linux-nightly/opt: bYSIoooTT3eQAb8Civio5Q + partials-signing-es-CL-linux64-nightly/opt: Fu3jHQUwR_ugWRD-JdIFgQ + partials-signing-es-CL-macosx64-nightly/opt: Z0js_gokTs66aVV1dN8Qbg + partials-signing-es-CL-win32-nightly/opt: FSkL5IotSQufAVK5MxEwgw + partials-signing-es-CL-win64-nightly/opt: XlaNvQ-PRZGQgHtJcFavHQ + partials-signing-es-ES-linux-nightly/opt: ccy56MZHTLCqLzOkkMDGVw + partials-signing-es-ES-linux64-nightly/opt: XO8ds6_jT0GkyNSHT9L2_A + partials-signing-es-ES-macosx64-nightly/opt: SUA10Z2QRny7XeiWtj0BWQ + partials-signing-es-ES-win32-nightly/opt: Xo_N9y8dRFa-lnznwi8nmQ + partials-signing-es-ES-win64-nightly/opt: Kx4to7tDQwCGENo2oYcXRg + partials-signing-es-MX-linux-nightly/opt: OXCN98JzQrCfx6BZ7UyYiw + partials-signing-es-MX-linux64-nightly/opt: bZPQHuMwRVKZHYhxDeWx2g + partials-signing-es-MX-macosx64-nightly/opt: fR-rcq_PQ7KVKd8bkg0WwA + partials-signing-es-MX-win32-nightly/opt: Mc6i5eT6RSulcMIrTljHKQ + partials-signing-es-MX-win64-nightly/opt: Or3pCZKdTUWzwpcNiovRGw + partials-signing-et-linux-nightly/opt: A_3SLX3PSRCOAl9_6US87A + partials-signing-et-linux64-nightly/opt: TpIe_UPTSySqyzOCEsJbgQ + partials-signing-et-macosx64-nightly/opt: LU4C3SNbTC2zJYrfSLco9A + partials-signing-et-win32-nightly/opt: Lle8PjP5QWSDBNgRLfklIQ + partials-signing-et-win64-nightly/opt: FPLIVD5TQTeo51W-jvSaWA + partials-signing-eu-linux-nightly/opt: d2_4rImRRke20XECeM72GA + partials-signing-eu-linux64-nightly/opt: BOEaNAmgRAu_MeHvju31uA + partials-signing-eu-macosx64-nightly/opt: dSuhCH8GR0KqEnrNlE0B7g + partials-signing-eu-win32-nightly/opt: eCx_wgFeRzSpAdLezIlUYg + partials-signing-eu-win64-nightly/opt: a1lri6SBQ72NOSHE-EGXCA + partials-signing-fa-linux-nightly/opt: VS28G3MyQqyGS2I0s9Lgbg + partials-signing-fa-linux64-nightly/opt: Q50vnYp5RY-LutMJO9mHqg + partials-signing-fa-macosx64-nightly/opt: GDWsUneZRiuy38w7bPoTlw + partials-signing-fa-win32-nightly/opt: fn0JzJJIQQC7_Fxzkb4e7w + partials-signing-fa-win64-nightly/opt: TLU4BYF4T-etQCR3Iakd2g + partials-signing-ff-linux-nightly/opt: TM1_-JnzSyC6AGrFIcmI7g + partials-signing-ff-linux64-nightly/opt: GIUyaFk7TXGdUkCzE5XqSA + partials-signing-ff-macosx64-nightly/opt: FRqPmANTQueDELNw0x5RAQ + partials-signing-ff-win32-nightly/opt: cScEorCgQamzPzdkTPtoZQ + partials-signing-ff-win64-nightly/opt: FGfC0EHAQpq0BzquPUj5vw + partials-signing-fi-linux-nightly/opt: R3yGBKNQQFi9xxbLib4ukg + partials-signing-fi-linux64-nightly/opt: RsFqty04TZapZbt-s3e1_g + partials-signing-fi-macosx64-nightly/opt: RhiB5JCpQAye2g-mxiCTjA + partials-signing-fi-win32-nightly/opt: TMXpLGN5S9mr2CRLT9eLpg + partials-signing-fi-win64-nightly/opt: ILBBSmBDTA-8KZ_z1opy_g + partials-signing-fr-linux-nightly/opt: Ql377gyeRraRWU94shN_UA + partials-signing-fr-linux64-nightly/opt: XbS7JlEaQ7agKr4Ek6xjuw + partials-signing-fr-macosx64-nightly/opt: UV62X3QiTiKxHbxuGdTv6Q + partials-signing-fr-win32-nightly/opt: GlSmvNGUSemonY_BQdh9VA + partials-signing-fr-win64-nightly/opt: UB0yL3LETwm2OUdbgaCXwg + partials-signing-fy-NL-linux-nightly/opt: dBL1gFIORqa5Uog4-qvE2g + partials-signing-fy-NL-linux64-nightly/opt: OcKbh_yvSd-gJT32Txjadw + partials-signing-fy-NL-macosx64-nightly/opt: B-gJHqn4RqWwF8DuUgihRw + partials-signing-fy-NL-win32-nightly/opt: Sey8SaESSv-c_QWP8MI8qg + partials-signing-fy-NL-win64-nightly/opt: YvGghd8PQJKrok5ovA6AfA + partials-signing-ga-IE-linux-nightly/opt: fBh51wkvSsOhnu7HkKfYbA + partials-signing-ga-IE-linux64-nightly/opt: WmHxZmWTR1unkmpq5cG_hg + partials-signing-ga-IE-macosx64-nightly/opt: ZR4DzfcwR52257vhxUSsRA + partials-signing-ga-IE-win32-nightly/opt: YiHK6uWORAGD9m2bqkx8QA + partials-signing-ga-IE-win64-nightly/opt: eI1MjR05RMmonrB-Mp4hVQ + partials-signing-gd-linux-nightly/opt: Tgfo8KPyTQ-Xg6KKgvET5g + partials-signing-gd-linux64-nightly/opt: QeFJ8p9KSo-KMztoRmNe_g + partials-signing-gd-macosx64-nightly/opt: O3MenUtxTW6ju-Mz0p5d3Q + partials-signing-gd-win32-nightly/opt: TNsIc8oKQ9q3q7MB1egYyg + partials-signing-gd-win64-nightly/opt: Qk6oNwB9SJCDXWLrwouK6A + partials-signing-gl-linux-nightly/opt: X2aksfBRSOKQ7hfCMhLTAg + partials-signing-gl-linux64-nightly/opt: ba4B8fRPQc2WMuQNIkaMSw + partials-signing-gl-macosx64-nightly/opt: Tb2akjwzQKCYujY_WCg95g + partials-signing-gl-win32-nightly/opt: JLajOHWxTaKlVqkgteYcdA + partials-signing-gl-win64-nightly/opt: AxChlgBZSl-XtI3e4upSYQ + partials-signing-gn-linux-nightly/opt: XPpHiw64RMiXu8qVjG9z7w + partials-signing-gn-linux64-nightly/opt: TvUzRCyDSaK3CSEdvXh-ig + partials-signing-gn-macosx64-nightly/opt: GxkMB9KpSRKQ_5H_jISE0w + partials-signing-gn-win32-nightly/opt: Vbkn7xDJRnWswYeFLhY5dw + partials-signing-gn-win64-nightly/opt: D4pMOk63QbGgAsAIOfHO_A + partials-signing-gu-IN-linux-nightly/opt: MUcMTwqUTLSb4ZJSBhFpCg + partials-signing-gu-IN-linux64-nightly/opt: ML3HWnMFTB-Or1kv2sk9gg + partials-signing-gu-IN-macosx64-nightly/opt: MJ1vbV4VT_KoQekXowifQg + partials-signing-gu-IN-win32-nightly/opt: T8PfnsuHR4ekjOoD4psn3w + partials-signing-gu-IN-win64-nightly/opt: BrgHX4MoRPG2NrE6pcb_Gg + partials-signing-he-linux-nightly/opt: PFb3HQGXTweIY3XJ-cau5w + partials-signing-he-linux64-nightly/opt: GYqeZYSrQwyOXQ0YUbJdQg + partials-signing-he-macosx64-nightly/opt: R0Vnc7FFRa6eZ_4t1L4vlA + partials-signing-he-win32-nightly/opt: cZWsMXS1SuWWPpSiYMQv2g + partials-signing-he-win64-nightly/opt: CRzdIslfSiaQJtpNgtiMag + partials-signing-hi-IN-linux-nightly/opt: bYwOOf6gQpC8XJUxX8I8Eg + partials-signing-hi-IN-linux64-nightly/opt: CSaK7ds3ScGSS_sTpRNzkA + partials-signing-hi-IN-macosx64-nightly/opt: BWZ86PHLQ2mQCFyBl68EFQ + partials-signing-hi-IN-win32-nightly/opt: UaVYC3PRR_yFYDqOllr3HQ + partials-signing-hi-IN-win64-nightly/opt: LQByOrgaS_mjjWm1jGvxJg + partials-signing-hr-linux-nightly/opt: P6tSPi4xQbinPVF2-aMnYw + partials-signing-hr-linux64-nightly/opt: B4JzROXqTYiHPzoD_Z6hSA + partials-signing-hr-macosx64-nightly/opt: K06XBPpTSiWdD0qXnzP8lw + partials-signing-hr-win32-nightly/opt: N00BdfQsQPyOjh_grOwNvA + partials-signing-hr-win64-nightly/opt: TGQUf_AsTDGE0uIh5_tZbw + partials-signing-hsb-linux-nightly/opt: Jj9OBJ5yTTySd8MfjtLBPg + partials-signing-hsb-linux64-nightly/opt: XcUuO7QRTMSpEehZwbLJbA + partials-signing-hsb-macosx64-nightly/opt: VNIpeSCzRCqabHOwTSEKhw + partials-signing-hsb-win32-nightly/opt: BhpMcqIsT8mtyzMRA6jHOA + partials-signing-hsb-win64-nightly/opt: V4TNu5KvSRuoOkTpoqr37A + partials-signing-hu-linux-nightly/opt: cJz-cuSTSgm1Uz3Td34R3A + partials-signing-hu-linux64-nightly/opt: KbgqBmS-Q7qzLQv8O0tm9Q + partials-signing-hu-macosx64-nightly/opt: EV-7LMn6QLS4n_cTnHl5YA + partials-signing-hu-win32-nightly/opt: NE_C5y9lRsihW4OXTUdVdQ + partials-signing-hu-win64-nightly/opt: FZqPZgLJTMyauMv4fsWlZg + partials-signing-hy-AM-linux-nightly/opt: KnH5x5D0SdOjdaTsONNUiw + partials-signing-hy-AM-linux64-nightly/opt: VmtiApuBSVCUejnGpshcUg + partials-signing-hy-AM-macosx64-nightly/opt: B08V2jHKR5mQqn8yoj7F5A + partials-signing-hy-AM-win32-nightly/opt: YsBzuxSlQca7cq-3vzFBFQ + partials-signing-hy-AM-win64-nightly/opt: FQNxPswTT5WfyqX0Igoc9g + partials-signing-ia-linux-nightly/opt: GsuIC61ZTJqhqEDOQJcsnQ + partials-signing-ia-linux64-nightly/opt: UVMeI2NiT6yDVWeTcyvc6g + partials-signing-ia-macosx64-nightly/opt: aTBf6wjIRW2nHKdxQNFLjQ + partials-signing-ia-win32-nightly/opt: Jyh9O_9xSrWFxbf3lbVquw + partials-signing-ia-win64-nightly/opt: AGuc-JPYSN2Kv0J6co6E5Q + partials-signing-id-linux-nightly/opt: Z9GOhgqyQ1ecKXOQ7YG7zA + partials-signing-id-linux64-nightly/opt: GIXlEFz0ToS6Tq8IG_m9Ww + partials-signing-id-macosx64-nightly/opt: dJ6pTUBrRmK1wCeQgv70jQ + partials-signing-id-win32-nightly/opt: U1ERee9iSqeJtrVYlUx6mw + partials-signing-id-win64-nightly/opt: ZZxeCI5CQGih9JRSZiA_KQ + partials-signing-is-linux-nightly/opt: CNumvUjkQWSzTQvuyMG_Ig + partials-signing-is-linux64-nightly/opt: F0nFSsjOQlGY8i0lLK5rpw + partials-signing-is-macosx64-nightly/opt: NWoqmB3AQduqMS8JpPCIUg + partials-signing-is-win32-nightly/opt: CDkv9y7PTVajXASwmIZA7A + partials-signing-is-win64-nightly/opt: PoeEmMQzQMW6j56-RxhMSQ + partials-signing-it-linux-nightly/opt: TSQMtMUkTsaUoUKUueFryA + partials-signing-it-linux64-nightly/opt: W93E81CoTi-sKwOshDr5yQ + partials-signing-it-macosx64-nightly/opt: QqRKOt5lTH2xHoiaaQkR0Q + partials-signing-it-win32-nightly/opt: HVVMRKcHQwWMrua7NhR9Dw + partials-signing-it-win64-nightly/opt: EyxoDx3vQKyFoD4CZUlUAA + partials-signing-ja-JP-mac-macosx64-nightly/opt: DVqhD94iQWe2GckkHGReow + partials-signing-ja-linux-nightly/opt: SyvHN7MtSgCx5Vy3HZAGUA + partials-signing-ja-linux64-nightly/opt: EVaYGAPeT5anllaYjDb7BA + partials-signing-ja-win32-nightly/opt: GYTxKbyoQd-TnqZcFYoZAw + partials-signing-ja-win64-nightly/opt: e393S4laRGKKssU0JeLffg + partials-signing-ka-linux-nightly/opt: EJ7bX6SGQ3qOq8K6C6f5cQ + partials-signing-ka-linux64-nightly/opt: etmvNo6NSy-1gvp5YNLOKA + partials-signing-ka-macosx64-nightly/opt: DmeQke20SiygkTDvXkPVBg + partials-signing-ka-win32-nightly/opt: bdoYOeNuT7uGvnaydgjndA + partials-signing-ka-win64-nightly/opt: eYzOV94qTMC6a7FY3rSO-w + partials-signing-kab-linux-nightly/opt: BA_UXBZzTkmhnfaoPAY6Hg + partials-signing-kab-linux64-nightly/opt: BA3VFIbsSp21UOuqh9mmIg + partials-signing-kab-macosx64-nightly/opt: eGjpT-hlRdGe6pvyYsW_Rw + partials-signing-kab-win32-nightly/opt: WWQiUbynRlKMIgCVy-muYg + partials-signing-kab-win64-nightly/opt: MuFBw4SyQSKmGy8uBxhGzw + partials-signing-kk-linux-nightly/opt: UCmRLEPcQiGD4Wo4RAHczA + partials-signing-kk-linux64-nightly/opt: HpyEZS5EQVKJlncwXKSkLQ + partials-signing-kk-macosx64-nightly/opt: RT8BYKVgR1SXSWB67G7lFA + partials-signing-kk-win32-nightly/opt: BEMAYLXcTjeBwR2p2CW0dQ + partials-signing-kk-win64-nightly/opt: GdAZzAXFRRSSSQz6n9tt1w + partials-signing-km-linux-nightly/opt: EE9z3RHOT32TM2azvvEAFw + partials-signing-km-linux64-nightly/opt: fDZzeYpMTvK02gS-qPiRFw + partials-signing-km-macosx64-nightly/opt: fZ9A6gpjQfSlA6zIE9eoJw + partials-signing-km-win32-nightly/opt: Ib6mF0QoRiOKiYhAkorleQ + partials-signing-km-win64-nightly/opt: N66n0iOPRLeruEheLfRY4A + partials-signing-kn-linux-nightly/opt: b3JFNvs2Rf-0X7FvUbHyfw + partials-signing-kn-linux64-nightly/opt: BxKGd83cSpOZP24zRQOFlQ + partials-signing-kn-macosx64-nightly/opt: Ji_0OqfzRXWjAzRDCDN3tA + partials-signing-kn-win32-nightly/opt: QWnDwSeEQg-9ZGXk8G--EA + partials-signing-kn-win64-nightly/opt: SKcgSrlaTQ6vNV5dOcguUw + partials-signing-ko-linux-nightly/opt: LNCiEW61Tla6tXGayl71Pw + partials-signing-ko-linux64-nightly/opt: SpjudpTOTG6qTkugs_657g + partials-signing-ko-macosx64-nightly/opt: Sb7QGroSTY2q0Vg5mTOj8w + partials-signing-ko-win32-nightly/opt: IB6rqpxIT1ayCwizW1JMkQ + partials-signing-ko-win64-nightly/opt: KCoAr5zLTTSJ8N10_UnhBw + partials-signing-lij-linux-nightly/opt: W3wPzV44SmKhZMzpL4kM1Q + partials-signing-lij-linux64-nightly/opt: Ye2ry2ccTISAoOvntiR7Nw + partials-signing-lij-macosx64-nightly/opt: XtijKcB0RT2PJTwSA7_owQ + partials-signing-lij-win32-nightly/opt: Y1TF2Cc8TwaCMVdH8sZzwQ + partials-signing-lij-win64-nightly/opt: NNMjQvBkSJWrIDK-ryPWUQ + partials-signing-linux-nightly/opt: T04aUUVQRzm7wCpc_yQ40Q + partials-signing-linux64-nightly/opt: Ifv7an3vS-muF4hExPfaQw + partials-signing-lt-linux-nightly/opt: EQaC1DEUQYes1rxWFF1Aeg + partials-signing-lt-linux64-nightly/opt: euYZ9At4QFKYwQjrDJrxaA + partials-signing-lt-macosx64-nightly/opt: W8CexpabQWu7JVqFDqNPTw + partials-signing-lt-win32-nightly/opt: YMORO7zIRHyueFQi51zW_A + partials-signing-lt-win64-nightly/opt: ZjBuGRgJQRmhtR-TNrj0EQ + partials-signing-lv-linux-nightly/opt: T7Won6gNQ3e3-7TKjoKAYg + partials-signing-lv-linux64-nightly/opt: HCMMLbPQR8ySxqtcJiz1hg + partials-signing-lv-macosx64-nightly/opt: RZlnc6UnS9-tboxH9fijzw + partials-signing-lv-win32-nightly/opt: UBPl3vxvRJaPrKfwyP1DEA + partials-signing-lv-win64-nightly/opt: FfXSNkOERc60lraNXu4Miw + partials-signing-macosx64-nightly/opt: aQtpOQQrTOmz8iDleFQOZA + partials-signing-mai-linux-nightly/opt: aoeCzdrbSPCIXMgz5volCw + partials-signing-mai-linux64-nightly/opt: BRkYVqtjQiqeAusA13olXQ + partials-signing-mai-macosx64-nightly/opt: XF8RfiOmRuG4hbecCYOl4g + partials-signing-mai-win32-nightly/opt: IZyYrboaQLuxbuwB3_IL6g + partials-signing-mai-win64-nightly/opt: feVYRJmcSxCmboQgak1xgA + partials-signing-mk-linux-nightly/opt: Z2NKBj-nQM-r2-IYQ2dBMg + partials-signing-mk-linux64-nightly/opt: Nct5L3XdTf6IV4So-U1jhg + partials-signing-mk-macosx64-nightly/opt: RGHFZ5GiR2KV1F-jQse0sg + partials-signing-mk-win32-nightly/opt: PRqocepiSpyd1qjvsyALiw + partials-signing-mk-win64-nightly/opt: cc33Qs4GSzWZSDE0dKOlnw + partials-signing-ml-linux-nightly/opt: Jd-m9dfwT8WIdZhjZn-W4A + partials-signing-ml-linux64-nightly/opt: J0fpeVsxT5KGPGzz5hYBKw + partials-signing-ml-macosx64-nightly/opt: BMEtJbYHT2iGPlOwU6OdMg + partials-signing-ml-win32-nightly/opt: Vwl1S-lqSfeLixyuIYfqzQ + partials-signing-ml-win64-nightly/opt: UbEsxIURQu-6oqHwgINzjQ + partials-signing-mr-linux-nightly/opt: JnJ8nTFtS-CAd_sqqLo4aQ + partials-signing-mr-linux64-nightly/opt: BsBEoTj8TPKM3btIq7hj8A + partials-signing-mr-macosx64-nightly/opt: ZybYQZBjRkaok0SuXqNDdw + partials-signing-mr-win32-nightly/opt: S6jh5HntRMyiJK10TMniPw + partials-signing-mr-win64-nightly/opt: L_0V5SqbSr-uY2V3OI96lA + partials-signing-ms-linux-nightly/opt: bXF9NJpoTmG4cQMjWkhfVQ + partials-signing-ms-linux64-nightly/opt: M0xh6hV-SeG1LhkHsCFxZA + partials-signing-ms-macosx64-nightly/opt: edZY-l6iTt6_81mhh45m8A + partials-signing-ms-win32-nightly/opt: BX88Q9ZuQQGVQKPUTA1oxg + partials-signing-ms-win64-nightly/opt: UmgzN-onQaWTiByW6ihdxg + partials-signing-my-linux-nightly/opt: SfEM2TWcQVSYqJyJREIlWA + partials-signing-my-linux64-nightly/opt: VJ7I9jcTRBGzozCecS5c9w + partials-signing-my-macosx64-nightly/opt: SRhq7ZCHSweci57uUtOWnQ + partials-signing-my-win32-nightly/opt: NgTVn8YkT4GIxXNAo9GzDQ + partials-signing-my-win64-nightly/opt: fs4QjnhFQj-v9UBsVQ_tyQ + partials-signing-nb-NO-linux-nightly/opt: Pu-iengKT064vQ3oAjbcWg + partials-signing-nb-NO-linux64-nightly/opt: dLRpKx4zQDeWaWfu4noPEQ + partials-signing-nb-NO-macosx64-nightly/opt: Ec8TX01lSf6xYOJp0j3sSQ + partials-signing-nb-NO-win32-nightly/opt: QtnhgzhhQ2iwk334sSfGlg + partials-signing-nb-NO-win64-nightly/opt: SHgNslHgSTucJ2c6TxCvsQ + partials-signing-ne-NP-linux-nightly/opt: LhvIbKajTui8eulAF0Jd-A + partials-signing-ne-NP-linux64-nightly/opt: L761ROZURkeR7aH2kbw25w + partials-signing-ne-NP-macosx64-nightly/opt: SV4RPoooTtSyzOXwEAUtog + partials-signing-ne-NP-win32-nightly/opt: XNFledIUQ1-IyLu9Ulj11g + partials-signing-ne-NP-win64-nightly/opt: KEiNu2alQmO2y8T-9EAtuA + partials-signing-nl-linux-nightly/opt: L0m2ZKIMTaWvWV6bmqTwog + partials-signing-nl-linux64-nightly/opt: YnadTaRJQeSz4HPPf4yC9Q + partials-signing-nl-macosx64-nightly/opt: BttqI6fjRd20cVYuvKDhcA + partials-signing-nl-win32-nightly/opt: D_sidXLITWO2qEp5yHRTAw + partials-signing-nl-win64-nightly/opt: QdiaGV7pQ1e9svkBnAMkLg + partials-signing-nn-NO-linux-nightly/opt: JqMbIfZ3T0SmG6tuQNZPrw + partials-signing-nn-NO-linux64-nightly/opt: FCjdyIHyRa-fEL5FpIAfwA + partials-signing-nn-NO-macosx64-nightly/opt: GyOyEWVkR1yoja7x9CmnwQ + partials-signing-nn-NO-win32-nightly/opt: CLiOhK1hQ-SMEZDTbEjhfg + partials-signing-nn-NO-win64-nightly/opt: BpuBXxAMQv6dBp_h9bTesg + partials-signing-oc-linux-nightly/opt: GB6wRt7uQwyL0pn6iXFLYQ + partials-signing-oc-linux64-nightly/opt: Pg6P2e5iTeS1MLpAYdg6cg + partials-signing-oc-macosx64-nightly/opt: U1p7L8x0RguO6Uz4hLEMuA + partials-signing-oc-win32-nightly/opt: UFRyNIdCQ1mjjpiLH_fKXg + partials-signing-oc-win64-nightly/opt: dFk91jlES52Ck1c5goeAYQ + partials-signing-or-linux-nightly/opt: Y0wJXx34TPmfJQpRdT9zAQ + partials-signing-or-linux64-nightly/opt: dkMhS2SQQYGG7Ze1fJg5jA + partials-signing-or-macosx64-nightly/opt: Bp3QbdkORZufbtO0epQtoA + partials-signing-or-win32-nightly/opt: Eoiz49t0Qde1h_6iXmdTCA + partials-signing-or-win64-nightly/opt: Va1J_0TEQ_-fbHVp-7aySA + partials-signing-pa-IN-linux-nightly/opt: CpgFQuJOSAaCg62XADAc4Q + partials-signing-pa-IN-linux64-nightly/opt: QkvSRRvATzKtuemh0Ml5mw + partials-signing-pa-IN-macosx64-nightly/opt: JGWUgYaeRd66ea_TJfJ_1Q + partials-signing-pa-IN-win32-nightly/opt: Jv4W7KyeQJO0-9CT5F0swQ + partials-signing-pa-IN-win64-nightly/opt: OHk6nHj3Rqe8LGm768H4nA + partials-signing-pl-linux-nightly/opt: QYF2c3kjS_Wmf97IML8qmg + partials-signing-pl-linux64-nightly/opt: cVTeB4tPThWJJqi_zVFVKA + partials-signing-pl-macosx64-nightly/opt: KbXhd1W2RhC8-K59NgGkbg + partials-signing-pl-win32-nightly/opt: BYfqDhD8RF-3Y3r5o_klNw + partials-signing-pl-win64-nightly/opt: epgztiHOSIK11y4MRgrzWA + partials-signing-pt-BR-linux-nightly/opt: B6-RpwnKRse2mnX4SJmOcg + partials-signing-pt-BR-linux64-nightly/opt: HN8Eu3DrRKOddOmTRjMm1Q + partials-signing-pt-BR-macosx64-nightly/opt: EKrezTz3Tx6-ahmnIZelSw + partials-signing-pt-BR-win32-nightly/opt: D8NG7b9AQwWrk-R4UuGcbA + partials-signing-pt-BR-win64-nightly/opt: Z2A_3I5JRjSvYlZl9Nr-BA + partials-signing-pt-PT-linux-nightly/opt: Sp2iFQYERK6otQ6c1lYmFA + partials-signing-pt-PT-linux64-nightly/opt: Lv1HPNd7Rei5vRDZtdSqKQ + partials-signing-pt-PT-macosx64-nightly/opt: GIVyHAzSToKAgsK2yMj8Nw + partials-signing-pt-PT-win32-nightly/opt: F8uOsEcsQvGU4oIsOde8Jw + partials-signing-pt-PT-win64-nightly/opt: aTyDHTuhRvWM8RiThQWn3Q + partials-signing-rm-linux-nightly/opt: JVpKEBbkSACcarN3dcDaGQ + partials-signing-rm-linux64-nightly/opt: QNmMaZYsQNehsxsTH1KIiw + partials-signing-rm-macosx64-nightly/opt: BkInLIFwRheTGQChBxD8EA + partials-signing-rm-win32-nightly/opt: Zav_MHyqT_utukmTEBDqBw + partials-signing-rm-win64-nightly/opt: OZe2lJwDTguiSL6b1rZ6gA + partials-signing-ro-linux-nightly/opt: OHiecNX7S2WeHlQ_MjbA7A + partials-signing-ro-linux64-nightly/opt: AT2cczbSSuiOd7mQBVaK2g + partials-signing-ro-macosx64-nightly/opt: Y5j3og4JRJ6A2t28hY_W6Q + partials-signing-ro-win32-nightly/opt: apZpUe6pSh2OHJIMXX3Log + partials-signing-ro-win64-nightly/opt: CmlwXdIGQsqqUU3A6Jkbcg + partials-signing-ru-linux-nightly/opt: VmQGCDwVQrGiaom-gSF0og + partials-signing-ru-linux64-nightly/opt: d114NZkXTdmannRfrrwjUA + partials-signing-ru-macosx64-nightly/opt: LYnTyi11TJG23OC9e5Ct7A + partials-signing-ru-win32-nightly/opt: dH-Twa89SI2VrieBk5MU3w + partials-signing-ru-win64-nightly/opt: E_4t-tMAQdm3r4TnPXUFig + partials-signing-si-linux-nightly/opt: RdPFHIYPSeSYImJTCBYb7A + partials-signing-si-linux64-nightly/opt: ZsgdEjqNSduisiTukApZ8w + partials-signing-si-macosx64-nightly/opt: R-6la3sSTpeknpQBJmlGng + partials-signing-si-win32-nightly/opt: N3zsllsbT9SGRcpLRlxIJQ + partials-signing-si-win64-nightly/opt: NRg6yFjxSYeaifPrgqfM0w + partials-signing-sk-linux-nightly/opt: T4MtDvaSSu-rBzsV4TGkDQ + partials-signing-sk-linux64-nightly/opt: CWSR6mMcSdqfhfggDdARKQ + partials-signing-sk-macosx64-nightly/opt: JNvrT_0lRxGShu247lQFPQ + partials-signing-sk-win32-nightly/opt: CV4OzJP3R2Ca0_opmA5OMw + partials-signing-sk-win64-nightly/opt: OTVpBrHRTqatOKAdJpzaIg + partials-signing-sl-linux-nightly/opt: EWgPEw0sTROiv9gEaKLidQ + partials-signing-sl-linux64-nightly/opt: DB-yjqloQOaTju-day8qbA + partials-signing-sl-macosx64-nightly/opt: NUQb9EGZQuSuiWNEJBt6xA + partials-signing-sl-win32-nightly/opt: Gxt6eOOUSb-LaD-y2ccGfQ + partials-signing-sl-win64-nightly/opt: LYcB8fPGQfmy0q4h7g3vGA + partials-signing-son-linux-nightly/opt: YC0jGgEkR4ef5ENvwvAvzA + partials-signing-son-linux64-nightly/opt: Yvt3Uq9-SZyabCMJ60vbhg + partials-signing-son-macosx64-nightly/opt: NiX99GMxRaewTq63mg2t9Q + partials-signing-son-win32-nightly/opt: Nc7n71uuR1-AZnAf8-Pwiw + partials-signing-son-win64-nightly/opt: HpRjouzNRuOYg49ha-EeQQ + partials-signing-sq-linux-nightly/opt: IhzuV2VFR0GBJIfQKidA1g + partials-signing-sq-linux64-nightly/opt: AH5UETeHRpiVMXc1IeFH5Q + partials-signing-sq-macosx64-nightly/opt: IuamAc3JTwyQIZ1sxWioVA + partials-signing-sq-win32-nightly/opt: cB6VNL0eTjG9kib0VUWzPQ + partials-signing-sq-win64-nightly/opt: VJLDyf5KSGCSt_L8_TbNTQ + partials-signing-sr-linux-nightly/opt: aODBSmmUQG-Y1eSwnR86ig + partials-signing-sr-linux64-nightly/opt: Or4SHpQCR92c2rWvPNliuA + partials-signing-sr-macosx64-nightly/opt: MEV9mDjfQpOAcr3BzfOVTg + partials-signing-sr-win32-nightly/opt: D44Y1OcYQZqY1t0EmwYG3Q + partials-signing-sr-win64-nightly/opt: DD1mKBolTXeLdail6v5nBw + partials-signing-sv-SE-linux-nightly/opt: eqSPMOAgQtS-rkTnvY9LEg + partials-signing-sv-SE-linux64-nightly/opt: dC8d6eNrSNWUJRTaBNnvTw + partials-signing-sv-SE-macosx64-nightly/opt: AuqeE3nTRTCbrQlGw4ey8Q + partials-signing-sv-SE-win32-nightly/opt: Kxxo8GVBTjuQZgjxN-rawA + partials-signing-sv-SE-win64-nightly/opt: dgoJ77slRvqSbzZOKUujxg + partials-signing-ta-linux-nightly/opt: LPE9v8THR-6jz771SwxiiQ + partials-signing-ta-linux64-nightly/opt: FwdSJNupQ3qeG8ZVioC3Wg + partials-signing-ta-macosx64-nightly/opt: bET7fpbTSa6kk-2cLgkPWA + partials-signing-ta-win32-nightly/opt: bpjB8KnGRqmBKohbFRSE-g + partials-signing-ta-win64-nightly/opt: Z1Zw-iC4SgiM3rcx5-8YfQ + partials-signing-te-linux-nightly/opt: StFezEXAQQWrdbrN-1Bgdg + partials-signing-te-linux64-nightly/opt: SSKHLd40SJ2B-_XVsOgIcA + partials-signing-te-macosx64-nightly/opt: IbKRgEhnQzSWwltw81pUdA + partials-signing-te-win32-nightly/opt: CHIHPBJ0TDm53fMy9jnHyA + partials-signing-te-win64-nightly/opt: P8HomZeSSSGW63mTm6qIkw + partials-signing-th-linux-nightly/opt: c6232nKdTqG6WldZsUiR3A + partials-signing-th-linux64-nightly/opt: Et2Wkk8AQfG0XP_0yXrDPA + partials-signing-th-macosx64-nightly/opt: EAtTH3L_Ti2dPLmw931kNA + partials-signing-th-win32-nightly/opt: KNARLNm-RKeHLCoewwjNnQ + partials-signing-th-win64-nightly/opt: FBjizMtMS1i1GR7vcj72iw + partials-signing-tr-linux-nightly/opt: E3U62hJXSGGe-PDyzFEgrw + partials-signing-tr-linux64-nightly/opt: Aq5-AhdzQhqAqvSDnPQynw + partials-signing-tr-macosx64-nightly/opt: Mpu6pi1oQiCtRZD0pf9rKw + partials-signing-tr-win32-nightly/opt: AMHH4hfZSPinGb37kakkxw + partials-signing-tr-win64-nightly/opt: RRee5K_jQ2aBImWzicKkog + partials-signing-uk-linux-nightly/opt: C6pvWIK0RHqsU6FJfBElzA + partials-signing-uk-linux64-nightly/opt: FqjeC0y5QDqwcYXBK2rOrw + partials-signing-uk-macosx64-nightly/opt: Y1qMqpkGQOWXdl9VN0l7mQ + partials-signing-uk-win32-nightly/opt: fWlBOH-RTm2M8yg4Pc1pCA + partials-signing-uk-win64-nightly/opt: MlNjzMO8TrCZw6oQhYARkQ + partials-signing-ur-linux-nightly/opt: WVXEdW5HRzawbt-jUUlOGQ + partials-signing-ur-linux64-nightly/opt: OUjhskk3TYCRg8u6Jj2eSA + partials-signing-ur-macosx64-nightly/opt: NOgN3hZ1TuaGlwQ3mk72sQ + partials-signing-ur-win32-nightly/opt: SCd1vdZjRLO8lMhAP-fWZQ + partials-signing-ur-win64-nightly/opt: cRmqw9TpSUKQnOYYCFZtcQ + partials-signing-uz-linux-nightly/opt: JP4om1FvTKyzRJX0XR6ghg + partials-signing-uz-linux64-nightly/opt: G1KLE1EKSYqA4g6gDppzzg + partials-signing-uz-macosx64-nightly/opt: FqnI8iINTOKURfvUE-z9Lg + partials-signing-uz-win32-nightly/opt: Tl3v6XQdQEa-wtZvdaQhFw + partials-signing-uz-win64-nightly/opt: WkCMuPZtS1S0i4gFCymm7Q + partials-signing-vi-linux-nightly/opt: awoXvHjdTmWET22pq3Ksrg + partials-signing-vi-linux64-nightly/opt: FvqlrJTKTbWeSyFkAviPhg + partials-signing-vi-macosx64-nightly/opt: TChQ7dFPSc-luX07hHM4qg + partials-signing-vi-win32-nightly/opt: d9G2IpdfRqSp5hAyCiupiQ + partials-signing-vi-win64-nightly/opt: TXY6mx1xSWm3DkF1EJzHdw + partials-signing-win32-nightly/opt: R0v_rS_KRh295iS4cyWWMw + partials-signing-win64-nightly/opt: YZOEGRV1SoW0I1HxEEqRpw + partials-signing-xh-linux-nightly/opt: epd-p0krQyuQ-C0A0Bmulw + partials-signing-xh-linux64-nightly/opt: GX5vA-XnTsu9Cq5edvm4Fw + partials-signing-xh-macosx64-nightly/opt: cSIDU3n2Sx-Ml8XscJDgmQ + partials-signing-xh-win32-nightly/opt: MApwHMmQRc-HlQnEcGqDrQ + partials-signing-xh-win64-nightly/opt: YQ_YNpGMQMOyoqu-vwrIMg + partials-signing-zh-CN-linux-nightly/opt: Qb3NimSDQFSTgcJD2cyZhg + partials-signing-zh-CN-linux64-nightly/opt: NjJwrOGRQuCjPTVzxnR_Ng + partials-signing-zh-CN-macosx64-nightly/opt: OVy9cU62T1-hdUiSR7CEOA + partials-signing-zh-CN-win32-nightly/opt: UiO5ZLpXSfi_dlZcsfJVFw + partials-signing-zh-CN-win64-nightly/opt: DPXgDB4_T9a3R61lS_3gnA + partials-signing-zh-TW-linux-nightly/opt: VY-4RKyoQAKUZsl7wUxhVA + partials-signing-zh-TW-linux64-nightly/opt: IkuTLVIZRSqZ-fNXd2sLfA + partials-signing-zh-TW-macosx64-nightly/opt: WRPBJpwgS9-41ID_tIc_NQ + partials-signing-zh-TW-win32-nightly/opt: UbKjBPvVQKSqjBNeh-2scw + partials-signing-zh-TW-win64-nightly/opt: eLUgAmLXTP2FFzRDCwAgeQ + partials-sk-linux-nightly/opt: JWBjz51mSnmOuNvhUBhH9w + partials-sk-linux64-nightly/opt: HfwLHZTXRbq-By5_jpHwbQ + partials-sk-macosx64-nightly/opt: e0YbExcMQlqfxbmXd37_Ng + partials-sk-win32-nightly/opt: Y_rbbkGdRQ2BR5DPifzpkw + partials-sk-win64-nightly/opt: CiNh_GC5Q9a1-tqtFeATig + partials-sl-linux-nightly/opt: WcxKNHUoSTyXy_INgIe6ZQ + partials-sl-linux64-nightly/opt: c6cLMrpURQSnaD60lpfCQw + partials-sl-macosx64-nightly/opt: Ptp4n5wdQxSHyUgtk0o_dQ + partials-sl-win32-nightly/opt: FKklbhmJSNqolzbavZ85Pw + partials-sl-win64-nightly/opt: cbSOtWXzSf-vF2yoxHsy7w + partials-son-linux-nightly/opt: DoBEUu91T4m4LBTKzLvIHA + partials-son-linux64-nightly/opt: YmH0dF9iSbaxTefJZ5i1FA + partials-son-macosx64-nightly/opt: SMFzkXRvQS2mij-P4LOn8w + partials-son-win32-nightly/opt: fb82d1Z7Tf-dFAnVDAIVlA + partials-son-win64-nightly/opt: aZxmIGLtRPGd_z54-6bznw + partials-sq-linux-nightly/opt: ZyjGaJZrS3qDYu51pMCxiQ + partials-sq-linux64-nightly/opt: CS1f0M7OS5eo8I8BPzAaaA + partials-sq-macosx64-nightly/opt: MF6b3kq7TReESyISL4pyhg + partials-sq-win32-nightly/opt: YlasrAVPSUmHKh010CARxQ + partials-sq-win64-nightly/opt: YoeX1ntqQGO5ab7jDbydww + partials-sr-linux-nightly/opt: OlfVvC6qS1GbpqoB5rWU7A + partials-sr-linux64-nightly/opt: Ln7501zLRuuXS8oBV9-h1w + partials-sr-macosx64-nightly/opt: ZLQqQGHwQIqw-ywujYTa8g + partials-sr-win32-nightly/opt: YMd5e9LFRWWZP6SG2HjJFw + partials-sr-win64-nightly/opt: D35NI5_7RY6MtwSX5qQokg + partials-sv-SE-linux-nightly/opt: Wq-p2LMzTWeOPUm6O2VadQ + partials-sv-SE-linux64-nightly/opt: ZBEvi0IdRo2501eZXHYmKA + partials-sv-SE-macosx64-nightly/opt: HhUngiTrTUi2c5OONpjBfw + partials-sv-SE-win32-nightly/opt: PZqmARJqT1WuSRiUtk1epg + partials-sv-SE-win64-nightly/opt: AlgXg-cEQtCe_T6jxmEBtg + partials-ta-linux-nightly/opt: DGWMArITQvuYANCiw4RNOw + partials-ta-linux64-nightly/opt: d2fT_R95RpuydwFkKc2Eug + partials-ta-macosx64-nightly/opt: NI0D74LaSx2mw9zUAwOxQg + partials-ta-win32-nightly/opt: BB97eDpwRgGld7fKXZRwrQ + partials-ta-win64-nightly/opt: X2CUJBKhShO5qZ8R4ElScA + partials-te-linux-nightly/opt: cxZjV4GcTemo9H3Vj3MvnQ + partials-te-linux64-nightly/opt: YR74lHRRRSWuAE9CldZfdg + partials-te-macosx64-nightly/opt: ZbuPgm4ARuCbfgYh0Njurw + partials-te-win32-nightly/opt: fueEbwe5T_mW3kM_3VbU5A + partials-te-win64-nightly/opt: NYpVIi0pRwmVRB1eqN-5Mg + partials-th-linux-nightly/opt: QB7vDPmtR46sN9ViTzlMDw + partials-th-linux64-nightly/opt: CJMuej4eSg63TDYE_u8y1g + partials-th-macosx64-nightly/opt: KzCyOkxDQpm521et3WIF_g + partials-th-win32-nightly/opt: Cp7jL98VQ1GFiXTjMlgMOg + partials-th-win64-nightly/opt: evG5J6NlQeOja13TmwnouA + partials-tr-linux-nightly/opt: R5FgxMjyT5ayP9fh1wUfdA + partials-tr-linux64-nightly/opt: AnF3U5HxRw6pRy9hzZBUuw + partials-tr-macosx64-nightly/opt: RDnfbO2_Toq3d-m6LHrS8g + partials-tr-win32-nightly/opt: SmA8BSCHQai0X3AKz68URQ + partials-tr-win64-nightly/opt: YNQzbnCqTkWs_HCAN8VxRA + partials-uk-linux-nightly/opt: FS-9hLxdRuiH_9-rVX1tbA + partials-uk-linux64-nightly/opt: G7wdY_i8Qca6bMKKpNIcCQ + partials-uk-macosx64-nightly/opt: NmDJJ9KCQ3mIYmwwkUmauQ + partials-uk-win32-nightly/opt: EP-LW18QQueBfjkGaYM4SQ + partials-uk-win64-nightly/opt: GxtSL9YiQhi9fS0Tm-aonw + partials-ur-linux-nightly/opt: XLNzvLOYT2CwMrAx81p66g + partials-ur-linux64-nightly/opt: MwTNutzZTGmBzbbDhjy1hQ + partials-ur-macosx64-nightly/opt: GGd41stbR9OenOwoE5KC5Q + partials-ur-win32-nightly/opt: SRM6Bvf5QVWVf8EMc2-erA + partials-ur-win64-nightly/opt: XZoxgjRPRQmEpwGama8QTA + partials-uz-linux-nightly/opt: ICSwtIM-Tnqx1GZt15GtpQ + partials-uz-linux64-nightly/opt: Ce06NWnnTdm7GiRkyt2JeQ + partials-uz-macosx64-nightly/opt: e9K1azbuT06J6HmRzmS54Q + partials-uz-win32-nightly/opt: fMVBX9kyR3uo7lkCccj73Q + partials-uz-win64-nightly/opt: A3JRM_-MSEyngYWzlNQMyQ + partials-vi-linux-nightly/opt: L5zkQaepQA6gbWfDuzORYw + partials-vi-linux64-nightly/opt: BS2JOn0ARg6p6XdjFG_qtQ + partials-vi-macosx64-nightly/opt: eUCnrjRiTFC2URiKfoTsFw + partials-vi-win32-nightly/opt: EgcnLZKnR9aruqO8nNTcLw + partials-vi-win64-nightly/opt: dERNAo43TfafzoRB6YW8JQ + partials-win32-nightly/opt: U2Jlf-c9Qy2d4ffUaWMKtw + partials-win64-nightly/opt: Oc13MSXMR8-1MI2UaQQOZg + partials-xh-linux-nightly/opt: K-t7E1R5SAatRj4696WS6g + partials-xh-linux64-nightly/opt: ckHbWBYxR6azJsbHz3AwWg + partials-xh-macosx64-nightly/opt: M0YVQJm7SRe5HxRklz4zBg + partials-xh-win32-nightly/opt: F54k6sIHQkujUDh7iPTnAA + partials-xh-win64-nightly/opt: QK5GcEC_RZ2BPlQqd-aoow + partials-zh-CN-linux-nightly/opt: MByojppzQNqJNO2cxDF-TA + partials-zh-CN-linux64-nightly/opt: ZSxGcjlvQ7OSGRJv9AkU7A + partials-zh-CN-macosx64-nightly/opt: bliPH5_qQ2qkQo9-K9efjg + partials-zh-CN-win32-nightly/opt: PYQkh72_Sz2T45ul5FK-cw + partials-zh-CN-win64-nightly/opt: RbtvPiOHTH6sPydxy5EATw + partials-zh-TW-linux-nightly/opt: e2meTx-vQQG6yrOFN2Y_tA + partials-zh-TW-linux64-nightly/opt: IuVm9JqSSTaWGEDiRfbHTw + partials-zh-TW-macosx64-nightly/opt: NizyZm_ZSVySFykPtOxkdw + partials-zh-TW-win32-nightly/opt: dV3MpU42StGK2ys01yGGfQ + partials-zh-TW-win64-nightly/opt: aCg_H9I-Rs2Iud9Ggm37oQ + post-balrog-dummy-firefox-linux-nightly-1: MGqSFisGQsONNpfAthJZtw + post-balrog-dummy-firefox-linux64-nightly-1: EkPHkJJsQQiFSuqiZlx4iw + post-balrog-dummy-firefox-macosx64-nightly-1: YMnot-NTR-SukLmgZwqJmA + post-balrog-dummy-firefox-win32-nightly-1: MSE6DNoiS7Wc-v5CZKJPtw + post-balrog-dummy-firefox-win64-nightly-1: KfqM66AWRdWXlp0jvGjnjQ + post-beetmover-checksums-dummy-firefox-promote-1: EbHB0OMJQsmhrSjf6VBa1A + post-beetmover-checksums-dummy-firefox-promote-2: fXJoKrTJThO-latWN7bt-A + post-beetmover-checksums-dummy-firefox-promote-3: AuJIj5WxRY65-XUmn8W8lA + post-beetmover-checksums-dummy-firefox-promote-4: CFAwRGVxTHuzxEgx-IJJSQ + post-beetmover-checksums-dummy-firefox-promote-5: eQpQAvVmTaCzvC9zVYSoQA + post-beetmover-checksums-dummy-firefox-promote-6: BheuQTuWQAix0lf3R81Q0A + post-beetmover-checksums-dummy-firefox-promote-7: LGU8P2TJTpCG4YICOmBNLQ + post-beetmover-checksums-dummy-firefox-promote-8: Gk3jqWUZS9iDFyyrl2u81g + post-beetmover-checksums-dummy-firefox-promote-9: Ciy0YKjyStyJuYCSSA6PPg + post-beetmover-dummy-firefox-linux-nightly-1: VKKyqbdlRBKiAbOjKsUHjg + post-beetmover-dummy-firefox-linux-nightly-2: TKWnieYcQySGwviNOVyg2g + post-beetmover-dummy-firefox-linux64-nightly-1: C8hLe18-QH6mHIgIPT6XTQ + post-beetmover-dummy-firefox-linux64-nightly-2: f9GFT5TtRLmFE43WYo8S0Q + post-beetmover-dummy-firefox-macosx64-nightly-1: fnmT-MKbRTijEZhh7B7paA + post-beetmover-dummy-firefox-macosx64-nightly-2: JQVK6RFWS_yEUQsVZ1EaNA + post-beetmover-dummy-firefox-win32-nightly-1: HjMmJZvtSRa8LQVfYaj9Xg + post-beetmover-dummy-firefox-win32-nightly-2: IZon-Em4S8O72XvPLLvzIA + post-beetmover-dummy-firefox-win64-nightly-1: C0iZ7GACRnSaz4bVpWPVKA + post-beetmover-dummy-firefox-win64-nightly-2: BMRyJOQETseq-FVZyDmNrg + post-langpack-dummy-firefox-promote-1: Z-ltNiBVR6OtcEvYoGonXA + post-langpack-dummy-firefox-promote-2: fUMLTRltTcKzwEHTUgO38w + release-balrog-submit-toplevel-firefox: AsmTM6aNTZGz136nc1sicg + release-balrog-submit-toplevel-firefox-bz2: Nl3bOXrFRsKXNTAEWGQ_AA + release-beetmover-signed-langpacks-checksums-linux-1/opt: R70INVx1SQOuL3c_HQupxg + release-beetmover-signed-langpacks-checksums-linux-10/opt: L_9bKU7eTaK74ees9OPsQQ + release-beetmover-signed-langpacks-checksums-linux-11/opt: RQmaWu8yQVGatGJKcOukwQ + release-beetmover-signed-langpacks-checksums-linux-12/opt: G1HJ8HsETQObBsqEdW4RQw + release-beetmover-signed-langpacks-checksums-linux-13/opt: A5CChUOLTc-6sRYKEXOJAw + release-beetmover-signed-langpacks-checksums-linux-14/opt: PX0BZE9hSM6xO3FOLqfl2w + release-beetmover-signed-langpacks-checksums-linux-15/opt: eX_tcf9VRVG6A3h8iZaTYQ + release-beetmover-signed-langpacks-checksums-linux-16/opt: WSQagOrzRGKsCyBwzuwP8g + release-beetmover-signed-langpacks-checksums-linux-17/opt: BsRIMsXDQmKA4PbMlY3RdQ + release-beetmover-signed-langpacks-checksums-linux-18/opt: e4QgSToQRFmfi3pr3nNP6g + release-beetmover-signed-langpacks-checksums-linux-19/opt: Sy19Rt3tTyeD-f9d1p7EfQ + release-beetmover-signed-langpacks-checksums-linux-2/opt: XOc4YsTnTjqp8b9OaBIS6Q + release-beetmover-signed-langpacks-checksums-linux-20/opt: XO6fl2SmQf6utHPUKxbHeQ + release-beetmover-signed-langpacks-checksums-linux-3/opt: D6cVUe91Rl-ujNKd8V9AIQ + release-beetmover-signed-langpacks-checksums-linux-4/opt: CiOdCxp3TIqHTItYx0J02g + release-beetmover-signed-langpacks-checksums-linux-5/opt: TOlgrlkfR8eGBxvJ3fCnyg + release-beetmover-signed-langpacks-checksums-linux-6/opt: YAfx-_KQTny49HBSw5qq3Q + release-beetmover-signed-langpacks-checksums-linux-7/opt: aZKj5_ykRhmYHkPR9puFjw + release-beetmover-signed-langpacks-checksums-linux-8/opt: Ydypa16JRKKzdA0rRYAvPw + release-beetmover-signed-langpacks-checksums-linux-9/opt: X5H_LvuBSsKCekbEZ2bRjw + release-beetmover-signed-langpacks-checksums-linux/opt: cZDYaiiDTFO6L57KigFm2w + release-beetmover-signed-langpacks-checksums-linux64-1/opt: OuH5lBMHQl620_XL5KVxbA + release-beetmover-signed-langpacks-checksums-linux64-10/opt: A2LH1wE6S7Woeiq173VQlQ + release-beetmover-signed-langpacks-checksums-linux64-11/opt: b_qxYv5uSKCKwSpOdQk8EA + release-beetmover-signed-langpacks-checksums-linux64-12/opt: FTXV0epESqWEgLG8I42QNw + release-beetmover-signed-langpacks-checksums-linux64-13/opt: HuTeMIz5ROmSGx0q8yJTtQ + release-beetmover-signed-langpacks-checksums-linux64-14/opt: TdwknkVeQpW7An96PtcCuQ + release-beetmover-signed-langpacks-checksums-linux64-15/opt: UfP7dbqmR4ugUU41ibPNqg + release-beetmover-signed-langpacks-checksums-linux64-16/opt: WHDuKjg9Rzyu0nLiR_JF-g + release-beetmover-signed-langpacks-checksums-linux64-17/opt: DaUSzHp6R6WvFvkEBz9soQ + release-beetmover-signed-langpacks-checksums-linux64-18/opt: NR98OF2FR2GpRppbPlrjOQ + release-beetmover-signed-langpacks-checksums-linux64-19/opt: fFNyMc2LTAiD59n7uI9e4g + release-beetmover-signed-langpacks-checksums-linux64-2/opt: NYL17RUPR2W5mwHxFqncuw + release-beetmover-signed-langpacks-checksums-linux64-20/opt: J8gWyDBJRoOhylV6EwEqLg + release-beetmover-signed-langpacks-checksums-linux64-3/opt: Od66mcUVSdW5qzjET-N7aA + release-beetmover-signed-langpacks-checksums-linux64-4/opt: IUrV-KGrRI2jiYdmuH76oQ + release-beetmover-signed-langpacks-checksums-linux64-5/opt: S4lP9btRSg6Fzv09M_ADbQ + release-beetmover-signed-langpacks-checksums-linux64-6/opt: TTnzkE3fTlK94aON6fOTAQ + release-beetmover-signed-langpacks-checksums-linux64-7/opt: IJzTX-9VQxi-z6-o_fMUHA + release-beetmover-signed-langpacks-checksums-linux64-8/opt: GrHy0qB4SLCizByHCWzk9w + release-beetmover-signed-langpacks-checksums-linux64-9/opt: BkGRkYQYRmKcJ-asc2B19Q + release-beetmover-signed-langpacks-checksums-linux64/opt: K6TDWIu9QxSt75TLxA_9Mw + release-beetmover-signed-langpacks-checksums-macosx64-1/opt: Xd2W-BS1QoSCWj9MYL-DuA + release-beetmover-signed-langpacks-checksums-macosx64-10/opt: Z_DIGGjVTQipBaM-JabD9Q + release-beetmover-signed-langpacks-checksums-macosx64-11/opt: V4RijlP4Q6aAtWK5K54tzw + release-beetmover-signed-langpacks-checksums-macosx64-12/opt: Sdvn1F_-REeiZzJpC5cH9Q + release-beetmover-signed-langpacks-checksums-macosx64-13/opt: K08Zn9atQ0mrgThhNIs77g + release-beetmover-signed-langpacks-checksums-macosx64-14/opt: bm5FwMr0RzyUzdsUIK93eQ + release-beetmover-signed-langpacks-checksums-macosx64-15/opt: A0aI5N8wQ3ys2KZ8-GZaMw + release-beetmover-signed-langpacks-checksums-macosx64-16/opt: RnViq2D1TZepEeNSvnz3JA + release-beetmover-signed-langpacks-checksums-macosx64-17/opt: Yy2lGBeYRwCyUnI0XET9zw + release-beetmover-signed-langpacks-checksums-macosx64-18/opt: YtDHfhLYSxOUxKvnxBoIOw + release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ASOGRPEsTqCz4N4T5sl6lg + release-beetmover-signed-langpacks-checksums-macosx64-2/opt: UnlPmgjUQEqc53FBFe5shQ + release-beetmover-signed-langpacks-checksums-macosx64-20/opt: YIkiEnXGTsCNd_Lhoj4aiQ + release-beetmover-signed-langpacks-checksums-macosx64-3/opt: AgTWGe0lRUOsu8gmQXsTjA + release-beetmover-signed-langpacks-checksums-macosx64-4/opt: QOa32xX5R4uIB20yy6S4yw + release-beetmover-signed-langpacks-checksums-macosx64-5/opt: E8vg_Yb0Tf2lqT4WZOPrVw + release-beetmover-signed-langpacks-checksums-macosx64-6/opt: DcZiLugGTfiBUv12pZp_4w + release-beetmover-signed-langpacks-checksums-macosx64-7/opt: TIH_iY2vRri9h52aXik9_w + release-beetmover-signed-langpacks-checksums-macosx64-8/opt: ZQorGYbWQEekHE-nl0YBHw + release-beetmover-signed-langpacks-checksums-macosx64-9/opt: dYeIXt3UShyNEkGTywKMGA + release-beetmover-signed-langpacks-checksums-macosx64-nightly-11/opt: dhYHslNCSZualrXJFabzCg + release-beetmover-signed-langpacks-checksums-macosx64/opt: BmAcxd1GST2FTjusrIWaeg + release-beetmover-signed-langpacks-checksums-win32-1/opt: US3RHBUPTG-9hQyowgN2Ew + release-beetmover-signed-langpacks-checksums-win32-10/opt: YlPaRQmmTrKL8O-QBrQHxQ + release-beetmover-signed-langpacks-checksums-win32-11/opt: U7FfqgouQIuCDI6XL-uK9A + release-beetmover-signed-langpacks-checksums-win32-12/opt: TG8T7cftRZyc-pAVG8vlHg + release-beetmover-signed-langpacks-checksums-win32-13/opt: Una3xeGwTwKLr06bWLK_vg + release-beetmover-signed-langpacks-checksums-win32-14/opt: So7N4x-rSuKqFvau7NLqwA + release-beetmover-signed-langpacks-checksums-win32-15/opt: GXB626K2QFyB7B2G6_5Dhw + release-beetmover-signed-langpacks-checksums-win32-16/opt: c59Vt2npT5qIwA4j7MbD9A + release-beetmover-signed-langpacks-checksums-win32-17/opt: DdID_qxASyy7Z2YFcUevAQ + release-beetmover-signed-langpacks-checksums-win32-18/opt: FjtKq6afTx--4JfvG0IuQw + release-beetmover-signed-langpacks-checksums-win32-19/opt: FhWQdBRUSQKBFZJlLM4n3w + release-beetmover-signed-langpacks-checksums-win32-2/opt: ftkaiX1dTFiWYkJ1OqchUA + release-beetmover-signed-langpacks-checksums-win32-20/opt: D_sV6M-uSAOVhsoTe_mQxQ + release-beetmover-signed-langpacks-checksums-win32-3/opt: GrxSlh_RRuayNnidwK1QAw + release-beetmover-signed-langpacks-checksums-win32-4/opt: E-SjMvoJRQ6YaKW41O8Ufw + release-beetmover-signed-langpacks-checksums-win32-5/opt: GOCMkzJKREiIZQTqLMaD1Q + release-beetmover-signed-langpacks-checksums-win32-6/opt: DNQQqPRrSNCJlBAnuWDsZQ + release-beetmover-signed-langpacks-checksums-win32-7/opt: XU47qN0yRmKKZmnSJyqyQw + release-beetmover-signed-langpacks-checksums-win32-8/opt: YuMQ_KQRRg267Z1kEqPJQg + release-beetmover-signed-langpacks-checksums-win32-9/opt: eIXEboE3TWSK1MDuD-KyoA + release-beetmover-signed-langpacks-checksums-win32/opt: FBbsk_sKRo2N_aKBAyr2Jg + release-beetmover-signed-langpacks-checksums-win64-1/opt: OghyLqj5TtOokFUxN8MccA + release-beetmover-signed-langpacks-checksums-win64-10/opt: cO_DyW-_RMuSQaDJDtsifA + release-beetmover-signed-langpacks-checksums-win64-11/opt: Ni1zl90iRlyR-NgDega3yw + release-beetmover-signed-langpacks-checksums-win64-12/opt: XX2NXc4jQv2_tgP3_iZXIA + release-beetmover-signed-langpacks-checksums-win64-13/opt: EOj7Tt2JR2qb79R-X3M3IA + release-beetmover-signed-langpacks-checksums-win64-14/opt: DL7j6E8lRliTACQ__GmDGg + release-beetmover-signed-langpacks-checksums-win64-15/opt: dOtqXD8DQ6WdUkyh8RnRcg + release-beetmover-signed-langpacks-checksums-win64-16/opt: aY6PUEwCTUys_XmD9CukpA + release-beetmover-signed-langpacks-checksums-win64-17/opt: DsCshlOLQ9W9SZB5325oFw + release-beetmover-signed-langpacks-checksums-win64-18/opt: InaLfuvwRUGYlBBpuyX2HA + release-beetmover-signed-langpacks-checksums-win64-19/opt: SsSimkG3SfiTblM0zyZ0bA + release-beetmover-signed-langpacks-checksums-win64-2/opt: cU2Mv82hTSOA019AT2uu9g + release-beetmover-signed-langpacks-checksums-win64-20/opt: CNhF2DeESRaCy_Fzm09P7Q + release-beetmover-signed-langpacks-checksums-win64-3/opt: aF29QPhJRoumDl0CwSQogg + release-beetmover-signed-langpacks-checksums-win64-4/opt: MYER8fj6RoaJxSn78FwjCw + release-beetmover-signed-langpacks-checksums-win64-5/opt: H8gz1DX4T9SDU7F0H1RC3g + release-beetmover-signed-langpacks-checksums-win64-6/opt: VfhefXMfS26QCT6_slRysQ + release-beetmover-signed-langpacks-checksums-win64-7/opt: RvSV3dj0Q4OA1AcqPHMdLw + release-beetmover-signed-langpacks-checksums-win64-8/opt: UPb-oZ0vRoqi4pL8xho1_A + release-beetmover-signed-langpacks-checksums-win64-9/opt: AmM37dQ6SWSOMdHd-csMsg + release-beetmover-signed-langpacks-checksums-win64/opt: CUPP42X3RxWGSz4e0qykVw + release-beetmover-source-checksums-firefox-source/opt: auTB-TbaTdiuoPqu9J0JYw + release-bouncer-check-firefox: EZSfG69kRR2N_5onbHv4ug + release-bouncer-sub-firefox: QZmmT4y6RBevS3_xlodUoQ + release-early-tagging-firefox: cTpT5UupQAWb2_r0XDKWww + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: dY0esueWSFGeVEVu8kpPNA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: DhboGhloQ7-EhpRDARcUvg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Pj-K8H1MQeKUZkHAMsAYXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: SkEzez12R3ebC8RKop941w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: auo9ALdiT1OxQuotwcn2gw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: LPCYqTauRPimYMdjV9t1Xg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: EKwI-DgORtm43k9L7bpxpg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: Lnw1oL5QSQemyO_aLalg-g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: MoQnwjzYQ_GM4j-pKk2b8w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: SjWwoMRhQUqqaQhG8elF0A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: NLgOUMR4RwiMztAYiJa29w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: Vwk-X7V3Q7-pPDtZdlsn8A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: c5269dUKRtilqTlfz-R7jg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: FP72EgUOSE-jNQIHo5cCRQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: PPltRXFRRnSFNihcxcbtrA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: RgnUiCx9QRmq1S0VLwP6gA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: YC88xwp7RqqxhcbDep3mwQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: FuIqLClzTkCVYxMiPKrbcQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: IMBHi3-sQWGXE3ABwT7CRg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: DawGB73sRou73ZB8wGNpZw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: aAEVQ7_NQXKPbI5gi0eqvg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: EQpQ1GlaT1GXW2ToRw4yTw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: G67fZa2wRdKk2kOSgK_WNg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: IxJ7Qi1NT-O5GFBEIPBLuw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: GcAGgm8KSj-crPfqF8Dcfw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: Xb-A_ryMSOa0JJ7KmKfolg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: MuPLX4beSaC_u87bFakorA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: TdDt-A09RcCe09tdXNEpNQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: J5DByMKZQBOF-FriXPWJFA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: YoGfOuYBRu6eF6IDH1i_OQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: DGkEAb-1SYiat7cNJMLKXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: YftXe7gATeyqDO1Gc73TmQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: flskCG0WQzCLKcLfu4khtQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: GCOoGioPRFulQzBBXQE2GA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: PIp-BNAURRqTqdBSUz9qdg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: RweTPrH7SXa_ClWWgA_1Ug + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: NqB7gnbjQkyRRfQpx45P6A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: Zv3XfcbMTxiO14ZhNTZjNQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: Wx0jWVAHSa-w_ocBk37uvw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: IDl8L35oS9C3oXuQnMbklA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: G191Czy_Q5qoiQEBIeclbQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: PL1a_ob9QSOh4JYbQ1ck_A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: WtAR57KgQgGkANlNoojI0Q + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: bxlVnm49QzaJWX4KOp3thg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: foKTt1grRkmOTbU-YhJBnw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: esO8hiLrR9ObQ-5sj8wRHg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: bD3-D7DRTHyvTQvjffCjXw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: fG6eOLUmRuSUEPUXcnKHNg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: exqf1W0pSNCQcUk9DAoOeA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: AzLrEqu5Q463lfsAjaFU_Q + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: UhMTDRS9TRSWkFp1SrnICA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: S8sH3tOTTHGm0eGiOw-xQg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: QdGIBr7eRZu8R9sZc0wh2g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: PY6VA2txSLCEDmZFxQv8ag + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: RJ463zVASA6MOtQquP2a4g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: C8bYvKeWStGmNt7h8eOsPA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: CB62snvhQ1e-w6IWiGNDlg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Db_jHYswQaOLLZDT3eRfmw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: EHPLlpyuRieS7T1xyEezHw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eG-KO-MbQ1iix5FwFmTuRA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: X5M_NKJmSYyXZ0-xPQ9XOg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: UuJdetagT7-F4E5Tuvhv7A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XHW4SAvjQMGE-iBSCQ9d0A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: WruD2_myTx-yEXLA2rL1Xw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b_4SZhToQbOCIKI7NEOwMA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: dsYDhTkLSQewHyZcQEF9wg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Rm0o1H1QTgSb-fbfK6D22A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: IRF0yhezTvauEaZojp47qg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EJOs9_IsRIqdVrXrGT-JOw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: W2o7Z_-6S_2vrgZgxEHPqQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: UwnbCPBPQKCMugdxpcyvZQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: I2EdB_L4TlqK2ivPU7qazg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: HFeI808XTgifDrTZ7Vo_yA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: CMf3JuH7Qe6ro29U-eKzhA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YO30yLPURWGBow_NIpXubA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LFBxiHHzSZq5JtHgqdD7sg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: Jh6ys5zRQNK2RHY6YVqZzg + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: O_pXIuxrR3Kv-lHr2RO6dQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: a0S3yB7iShiKFHxO69LLpA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gz5N-lI8R8O0zIfiP1a7pA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: GeBHBTboTqKc4ENIfuosZQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RiIjkmxvQO6iAPN3t6i9dw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: agxfPethSLyFPiIw0dG59w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: URMFVlJgSPmv0O3SJWGvWw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: CXWjfWFxSgyefWYIYOrIeA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: RXB4H57YQTKFl4rMLDKC_A + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: RXU4eWbvRRaTsRynIJ8Z7w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: QjUJDX3nQWuxyc3doJOTCw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: YsrVhfmVQ1uluEwJsJ6zIw + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: a1z6LfwYS7G9earU6vhbKA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: f3MgUap0Tzi0fdbWsJwu7g + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: M3opDjN0Qj-h5WYmSE1AdA + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: OgafI7DzQhmsLu0LFNya2w + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LitlxYlwR6qy20625S7OoQ + release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: dxPaUcT-QtKPKwUvwwLukQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bmTSmpNjSiuLl8Ced2g_qw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: dOhqHGIMQneL64BdkSaUrw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Scmka-6UQ627pxNtmsxUEQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: NAIme4FlQm2AIb4oP9o9Ig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: Q2MQtX0sSMaoi1nDVpKuGQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: cDTro4SWSp6MpiUksOC3Xg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: N0W78Mn0QKaF2G6o73d0dQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: cd_6M5J1TmetVLD--6oBig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: XcB9PL-tQHOo2LsIzwSaRA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: b1P94sFYTGi0EjmqRjNSvQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: IZOSG4W2SW6us1DujdJaKg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: dgGeXhtwTC-Vt5e2bYbG-g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Y852hZ6jS2GluyuWxVe_NA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: drzlYevrT3CNjhZCBmXzQg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: KYZfrVkKRjeftPFkKJbmGw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: O4rm1zmXRgStcJcTlfrxPg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: LPiaqMRDSgmUZoC8xL-ycQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: NULUAOX_S7qrljTYzDGeZw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: NRlbzYIHSkeMzYhDgf9vCw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: A0wKQlHMRvKC4myAuP1ubg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: G-C76QqSRBO1H6g0R-ZubQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: KRFKgU0lTtma83EWbHXakQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: KaG4YgkeQEaknmWPLr0Kqw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: GkPDzeXBSLSk_XQGVBh3nA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RTppSncRQPyRvg_uG-JGPA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: BhTsgyQkQPWTSp0L2_IW4g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: KXWYCQgZShitj6mgS1ebRQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: EMSZcxpyTAGVUetW__3kTQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: Pc-EuItCTLmXik0e3gnX6A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: TJtZAuqqSfiKmfZxQ78vTg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: HXIQBy7gS0G47LbaqemUkw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: bnT_ySYcS8awRiVd0nXxVg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: KRiak2eXSPq-XRvb0bBhvg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: Fs26qwEiSluTmokmh-JPRQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: UuXG6TedTmi2uA2bfPplSQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: QF6JoEwTRlau_U12TBHI7Q + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: F0VJZNsaQEWQkTYcDuGm0g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: HZCSLzHiQcqSpK5zhcgMAw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: E7261oTHSTSMHDQhAL62bw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: AnZNznBOQmmvlLrq6cx92g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: csCRlmYpS6OWAE2n_Dwa8A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: JacqlK9kStmWGQP7rjimAg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: PHb0vsiSQZy2fxYksPLzAQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: c1NwQJFHS-mHnNNZPODJfA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: TYJ1tdGgSBOBiKy5VRtk6g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: XoVgnHQ-TN6IIdKqbkbxJg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: Sa_pdt5CR3SVS7OG1DBxig + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: JMrge8QzQzWGL0x6l8LqUg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: WPT0YB_lTlS9_xHUuZ_bVg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KEMID7U4SbyRo9zpaNLReA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: U6XySv1kTvCvOzuluPpabQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QQCVSF3ISMSV2Sgv3uB5lQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: XPVo0ohVRO-YTtmoDz-85w + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: IVMkX91oRC607qoGyj3DCQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: HgRfwGZhSLGXsgaRQIAZpA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QF2GoKMaReOo-kWExwD3aw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: e0ICT-pnTWCfE8qrtE9e1A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: c6BHsAJTS6KJh0wySRO1AA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: ecbZndZwS3SErbGGdMMRIw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: ULzjnEQOTEaw4s9l0-YzOA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: F4ZHa9K0Qr6kz57wBKKtNQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: f3pkoltxQrG1alFrq4burA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: JJ5GVeiWR0KyuJ3efZEVCg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: HuV3V8AZTHa-kOz89XIqew + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: CuqRzwsWTlWyJRa_3C3R4w + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: P-xssrA3TgCkKWZYFZuVdQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: HFyFNWzvRSGNNzEY58Fz4Q + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: HLLkIkPOQwOkAp-Akl_xqg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: Y7HH98x2QEab4ZuJNT25Gg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: K26GhwWjSKOknzh3T6gMBQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: VOjVuOYtQwexK65UTQ8Cbg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: dXnZPA4ETTm81Wq4uWJGcA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: Mzf_FoBxSBG-yqkTFXxlag + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: MA4ljm2CQVCnZZsZpShwYg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: SbUW2_B0Qiyu7lPWGiQ-mg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: ctQVAW6eTka9Gpv8jCO0pQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: d90FttZkRiS9clJYHrl7pg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: f5j26KJLSa--Vp_4ajaeQw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: co6ejij6TbKoISQgTc9yKQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: WfsSEP89QJWIuqrgX0HFoQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: Z594QhVxSh2IiRhkvvwn6g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: P9-C9Md3T7WJhFrYqyknyA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: OTIIuRCLQ2CScpnd2JHTfw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: U8bXmjDYR9uj6u4wYWCAQw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: EB0ROwyGRT6b0oE1aYugdg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: UdwoDh-NSMq-miIM1Qn5zg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: O1GaafS4SFOem0SLz1Rb3g + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: d7-Fb8fQRrqpkKfP9qOrJQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: fchMe6k-SCuOxxpQPCvL5A + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: evpm9AClRgGieIN5l1f2SA + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: BvCrgY8hQMaID5ipDuyOpQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: JmlGQs3KQdygLpDAiGFWyQ + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: fUCE2Tg7RvqKzFTteSuqhw + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Nscv2UbjQVG4Xzk2jF4Gdg + release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: PSOVci9EQeifiV4XFvOaGw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: VxU8hRioTP2ZnI5AczySJg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: PmxKPMV2QRa2T7t4Etwv4g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: EobNsgSUTiWj-N9r7erFiw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: A3VZFZEFQfWx811skzdIeA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: OYa92TwqSVWuFGnjWeB0mQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: BlagTDvdRkSe4BGreY61eA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Ctnbo96cRZCb8e0Ul3frxw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: NYLLZFWPSsOUCIVSTQDkeQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Yw1noVG6QAKjepWevPsMng + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: MRw9YU4KTJ6f9FjkP9Xc4w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: I5LbYHEgSTKbD-_hWQQBbA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: O5HAM19YTLyCbsxqJFeXOA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Yv4ydW7jT_ORi301t8gqTg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: LNZnZgfdSW2cOVxBUfqqtg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: S6iKWRgSS6O74500V8pa-g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: FHlDareZRgOEIpDkmyPKTw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: bLVWaOBnQtCpfFRasOySZw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: VeYbreMsTYeBKeo_CwKFmA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: Ll5gpz6rROy0N3dZuH48TQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: PdOpftjNTRWvdnzmJgbMcw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Zz5pxUEcRTKEpA11RfBIMQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: WdxzrTimQpGPwOesFYNrww + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: e2J84_VKTEWcVEbM27ds_A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: FYY3sFMoS0CuBLhvprG8iA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: UcznsXgqTsWxwWkZkX2Log + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: PMdfmIghS2uki3i38kySLw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: Kood2IGjTfeJEu2rqoFOoA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: MAqIKIOuRJ6EToCtJH5qXw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: AFppzlYIS4O3nj-wjtUT8Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: XnBO5yuDR9eUhrAFRZB4Gw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: H4uE03n_TfibMwnEGqBB3g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: XrXRDCpzSfS00WVRIVOeYw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: e36w8E8TTEyBsmUpYeQfow + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: AXDQMSJUTvCWwD-_xm7CsA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: Y94gleXXSi-uuezcUPHvbA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: KhrCVs1QS-qzaXAc12Xssw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Q_glFllpR6Kaz1nhjevL_w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: JbxarqDjTSWcRHXbizqevQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: KJ069PaPSdqWnqKMSxoIQw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: XGUA9M_IRUGkP2Z60VZMhA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: D6s3U2RSTtGiugqMVcWh5A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: MfzsDI2pQd-1C5ENcaCd1w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: cGNfr2rLSJW9HXIOgjYVAw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: WY3lR8BpRAyNTh0M8Tirxg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: Kn_YNY9vRy6Sd15JDAMqPw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: IpQfMy4-RgK_KvE0WaEnHg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: ZBkwq8h7SxaPXKl6Mnq-tg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: NZnzdJ6QQLSUNzF0UdOPLg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: dIwIFQIVR_6OI7tR09ZzUQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KlMY7isETVGrPrW5W3WLUw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: XmKmt3CfTOe4X8zKCUqjMg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Ngiw1yDhQIuYuvOn-xTKDg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Bpixh8TkQmGX2r_5OcOVpg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: TwaueRbpToClZHnd7RGq4w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: XWeBSF-eTWiYLaV7wo81Jg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: PtRQO1ukQWWWKu_0Jq-pMA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: bI1jYwW4QD6pO0xId5I31Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ca_2l4d9QNyHLlHwYTl8CQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YZ-znrj6RYa1euUNKJv3OQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: Ok5NbcBcTYm1DISqJyeJ0Q + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: OUUg4S64SsC8o4vxgywyXw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: Et163xNSRb2Mb6niHgJGtg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: SEubLfBiT42cVczIchvxrQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: bbo5pXNmTm2XEHqUb4cdPQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: NQJPc3faS6msEm6ifMHo_g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: Nm6Ho5RlS8WD6W-wp5lSqw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: cXz49DGaQh6_WJnBDQsOEA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: KJs7olrKQSq_zuu_MXXViA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: b0lEut7uToyly3X7PM5bRg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: U1I6I4jISW6EKaSMyJIdbw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: BijwbZNRSAufxiA-G-2i9w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: KRDl6NBqQC-EVGlM0iDyOw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: QQM59K4STKa4wxMXzG-YNA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: JI-mNfF0Rw2Q6eQzNBhb8g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: ND57W-HmQkWEeLO8K25wqg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LzlAP5RhRMacVcztTkHyzQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: VyHXAf4vQ3-IEsNjzmBM-A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: NkTAE8zaRGq3e3h7ir-G7w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: WuF_bpBgSma951JY4_8SgA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: bHhi2C1ARPiXr9rJ9Lvdow + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: fRHa__NxRxSCoNfLSsx45w + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: KAv45tUQQCyyXxECv88BBA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a2wO2tnOS9a0nFwwozaJxg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: KPq-i_w4QkCG2hJowTHpVg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Ne-m9_qoT1S3n1eJpsW3wg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ZvtjZYyUQEG_nhmUsiEQ6g + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: En5Y-vDESDqU1zeUkhrbrQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: ahiHQxTTTKGmSbtJrRNsvg + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: bCVX_xEJS2ClEcLa_ad39A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NMIly4otTP6knymDu4EM6A + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: Pb2uPs-3SzaWpKLyRcm5TA + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: fDUY8TqOTV6oiRxH-0gMaQ + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: PB6u0L2DRtWtk81ahDB8iw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LOlQxOLQRiyTFrDDBLMkfw + release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: e_EPQ7biRyyKKuA-e0oQDQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bdgdeHFWQmiX5su1vopNCQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: UpsCg8dZS6q76tw4QylJ0A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: FLQBgCP2SEOZuUMVXJSIew + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: MCR6fIE-Ql2xnjAUiXxB7w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: BCkdJqXoS0yxEkAylpXZcA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: fvuQHDyIRImpXwc35-W66Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: TpBFMYbARG6ARk4SME6h_w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: MkRiZM1ZQsOF9cQ_6BllYQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Ea1UU51gQ82tm34WwFf5XQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: aXrlEKpoSUu9kAspvhcaKQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: Q7tOwo5LT3GDCNjvH60fuQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: YkJ4lp0eTXWPcFr773IKkA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: P_Fr6ayxROO8D_tca0vZNA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: Xt1Gok7JSLmgvoDQwO95-Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: cLV13AbhTeieRhXus0O7CA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: UkbTBIJdQEGO0udxq8xHyQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: DDrmGYA3TTChg8t64jZAfQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: CEM0Ez2qSmSNgY5RI9AGHQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: B6JowQcTRIK1QO6mgsI4OA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: MF9cfw_ORkm1B5OBtMUGOA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: PvLAacXeRzyeQNldDGlARg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: aGMOZrvKR8yc7LeP-Orw5A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: JbCJGW46RFeNaiHQg5zd6A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: JhNMXyfjR1K7XP6w6L9PEg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RShvdkn3RJyC3v526e2CrA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: LWgA8ZxzQC256kxHArE8Tw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: BKdw4GFrQGCmNKfNUkJKFg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: FkqiMgX_QhS640Yn5Mbaog + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: UySXSsLjR3yvfYdlNH-0Eg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: aBUOi5HLRW2-reM-UzafpQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: futYbQJqTj-ukv1d7_23hw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: ao7__LErR8K_2JQM4tjZPQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VFJo_zizT-eHKkwVY4rZ6g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: dr_mqZCKRsm7jjAU0u59KA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: D_hP8Hr-T9aoJqu3yY5yDQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: UmAL6ebpTWa_6GC9g06EZQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Oy6260nPS5GmQbC9K7zYJg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: ckDuOPK3TGK7p7qjN4VPIQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: AWP74qo8R36DJp6A9ev5GQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: QQ5x0nLGTY6Jss7Fh6IxiQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: etn3D4T3S2ejTOnC4Rj_xQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: UaUXM0pfTuG1GmIoL-PGZA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Twe0iyNwRC--Zmd0TfrCbQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: MbEl4DKhTSO-mmx3OHl3ng + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: YzowmadKRPeTAvy2P0dpQg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: Y-CQfMsnSUChutKUypxVBQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: P6QFlhYvQ2mtEgVEKJX9hQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: KTUWHj6bRkWzwRkOIP2HmQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: V3aukMRCQj6jW6IVieyTLA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: VKVPk1kXQE-lwkCxA5IsfA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: ShAfiUeTQ56XcNmP0dBNSA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Y9hbKGKPQpmXHZ9Hdkgt1A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: ATris7DfT3qSJ2P7vGmhmg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: Pn1y5-_rTTiRC_SoMxjcqg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: IZSr7LvUTcCbGYGErEqhbw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QTulGmYpT4e8P0HHxz-dCQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: USvqhkYHQyOtwmWj_5n_Hw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ba178gfgTsW4EzNpzJKuDw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YlCdenwZRDCeIr250W2TAw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eaHlStjyTWeQaiVVBKNOwg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: DbSLjuk5QV-TB_u7A7QU3Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: KA7LEBFeS4egX174_Emp5Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XF7CWi0xRh6ZX61dm2fBrw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: d38HH_hbRjeVOVNMgkQcSw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: fFRFtBOIS7iPAVLd34go3g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: TNDQ9imTQuqAVN90hOBY2Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: A8i1pe1_SXCsGlTQo-Ne0Q + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: H7Xh_mcdSzy0HOdbtbli3A + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: XCWfV9EMSwmtHs_tO2Rkog + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: AjwcCv7JSOGP3Cy5G3LkdQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: d8G-NmDqTL25um-YsFtg4w + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: fI-TOLbQTdK3kkBYqELUGQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: N0Pei4IBQN-2HRRyyxq1lw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: KHmGasCHT_6rTt9QorX3Ag + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: WGBWtxrBTbmgXZggWToCUw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: CGEnKtoCSO-M8CMk2mtBXg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: DTfNCcAYT1GwwlhhjSRRVg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: dgoKTGnnSHuzNx_R75OnGQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: ZayJ1FS_T0K4U-ZLOrV5ig + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gv5r_3-ETSCuuZ_C1aEceQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: bcoRe6HOQjiDKj7wgq7_Lw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RGfxIcStS1i4nwmRPMGIlA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: PBs68FNoRou5mJ8P3yhnxQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: P5Oh3P8AT3uuz9cMkX9OtA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: SQVfhOxcR4m5RQ8kDtBkJQ + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ASQa9BnfRWS4PqdM5RJ3lg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: X3y_Zf3JTSydm1aFwp3ytA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: Kd0jnFSdQkOtWp3shp_Fjw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: I3rLBcrYRmOwmMagBFO8dw + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: O5S01xrwTr-a9CEpltKqsg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: U7RnkYD2TPChiI1iQVJ4zA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: KZJJm9JgRfKJthlTU7pF5g + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: SI6i9WcHQK2bjjY_-LUCkg + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: VEDdsvgJTnieopWDtj57xA + release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: XtjJUkZcRqmJo8YI28hlEA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: KhGTagglRGCN9GH7qpa9Zw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: S_LFVOxKS-u8ry15a6tDJw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Ssa3mxvlQ3KiNBYXUSpH2g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: HoZgoY0eStOSoy48gsf3cQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: XPoTpSNjTI24mhOuYxyS5A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: U4_ThJ5cSPq1_zbX1fH-rw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: UCWq6pmXTRaRj333kB0xxQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: B0lG7BjHRTSdEw0WkGtRDg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: ZnZCy3mXQoSxyYh4ObocXg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: fDC9-zPrTeS9MfI6n631pw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EpgPpaTNRQKVgH29VhJ9DQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: D5hxhHlQS06ghjevauHtYg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: X0o8P-J9RSmf5F2v-2eNdg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: W9ppgscaSbCOr2riUK_zkQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: EwpXGWSdQkO8QV3M7agmMw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: H2r0q6_zRsCNlh51WS0i5A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: NJpBwxaQThOArQC-d5d7JA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: L-nHHFt1QlOYE8DjHmTbvQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: AqUAh0e2SGGYcJzw-8XW3g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: JsgyJseZRWaiNhGgBMUcOA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Izkqddl-TTeG69l5LHZUIQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Fl6vOCBVReKU4TQJAzXrjg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: AO-7wI9OQYm7NxedCuz8Fg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: ceznJ_jNSbekNzpUwnv8wg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: e8W6uV7GQ4S7zbphALCnxg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: djLbFjkPTPKk-g_dAyfYvQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: CVAGbVH7RfaBYZyQCpryxw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: YSzpDHeOT9uvz26pb1HLAA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: R_MPGB59QeGtk_Okb30f6w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: fvu1i1Y4SguP2PMQ7gUK4Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: aXIW9BVNQnyZZof1AIKHzg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: c7t8K0dfSZaIeZVROB_4zA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VPl--q9sTaOYBMijwbz2xw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: bJuP7weuTTiPWLmYTmYTXw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: M0pgDnUIReu3vcT1TnzZxg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: P8BHUK6cTz6t-xlsmhYhlQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: ADQX4ppXQOWHySGKkj8hxQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: cpIPi0ywQmmH6zc-bznA0Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: JB6DExQ-T2mc_ibOvdMyLQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: YzJPx47uRyejrvJYyxGZ-g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: MaYwViQ5QkmCI65dwxXgLA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: T9Mhkyi3QwWkdDK4flf1PQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Cetf_3qURDyHqyv3mN021A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: CEd1vCjGS7CKdq_MHHxinw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: LHadRR9MTlO8GCHgc6XizQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: DeveDMA3Q8yyU14lermDuA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: I9rUIPFyQkiVduujLpzAsg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: AftILQYIQ5qtpIabfRL_Sw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: cMG4h3L9Tti3k5ayH7CtBw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: UjhpgctdRSOwvYHQJddM4Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: Vsyu_LNYQu2XhgckYUZhCg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QZyIT8_fSOu5mLVW89Ey6Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: dWfaNtxdRUC5VNr-tFwgpA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: ZCtTpQMUQoydDCVMQUIV9Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: WqQznDoYSRaow48_X7kCOA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: EXlf8le3QdmNmbkphhsklw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: Aciu5GpxTxWhs9hdhB0F_A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: OqDGxtlDRV6IL9RABjBcHw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: HAwOMwrqRYSZnPCcYdOMqw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: EDb2sq_nR56Pk8DtRYR79g + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: fVNXTIlTQqGKig-n_FBWMA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: LaURw3zaRoSvhT8VflLHDg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: EeYz4BSGSOyhDxwOzduieg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZIZctQsLTv-aS-YFR5Snkg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b8uPXECYRoOe-GYZLWaC_w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: OhfUYedWRCKVd3VmGb1T7w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: RnCKTKEBQjalQ7-zKetSfA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Wpa-YKydQQyF_DQTnEtv9A + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EXbaFH7RT4OLlTI1UZddDA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: Up2aok6bT0WsTpcbuVxJRg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: YBOeT9QwTHGDkwuhQa0_yg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: IEsxtDWRTy6NvlZkw_F7Dw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: RxOPpiorReqFnIygx4eZ4w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: eRQkypwuTOWgRksRln7iCA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: I-QYmDoZQ9mK80q2iI6ojw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: NlMGF_FHRaC7XuERQseXPw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: LFq3MC8fRLGedlwherXWUA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: XVByGOUaTR2fj0vi2XGP6w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: Bh8EoXmNQJWFX2QVhZwNsA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Vk_FQmi7TRy8u2EeVJhTww + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: UGesbOH_QcSAOGySXeWkvg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: Qm1M0iWfQTmvnZuLLiqTeg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: Jjxk0ZZPSSeT2mCg_3RfbA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: SQvBiY9aTVG0EZISsF1kdQ + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: cL5Q-umXRMecYKAlXZlmQw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: F8HMLeElQR6pX98lZJWH1w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: NOzXhuUYSZ-pHL3nbnf-Dg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: JlnIJQ8kTFWPP2l09qn_WA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: f-UWSWNYSl6bWzz4zGYg5Q + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NVbNed5eQeupBZq1vGqk_w + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: UYUtG_5vRR65GSoddaBheA + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: V-5N9xqcTOm7Kss6J3Mysw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: KvEGw4nlRquYoJTc6xZ8iw + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Pz-AqHOqR0Ske7C-oJNDcg + release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: MXclepKJTBuuidoSviJrCA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: UlE-_79qTDy6kZOCN1rwzg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: SLkwG5gaQUavB3eL4f-n_Q + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: TXhk8uwLTQabK0c1tV0Auw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: YBLnpW5FRVWY6XjGcfxXvg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: eYOaxIJyQNe9jKsdgaQMYQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: PosYXfhLQFeHPj-WuWW5QQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Cs4eo5UiSGWnzK9EWD4KXw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: WKgBJa07RxyMkJRkZULG5A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: HFiNr1ogSZy0onDbWw6crg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: ALSiVOHmRy-F6ko5EzLcyA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EtqsqUL8Tr-jfql0Bd7LQw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: a1qa8L8yQbWkVU6Tj4vTyQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: aSmIqYsJSRqCrIzVfHwsJQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: HXP2vzJ-Q--4e_Fi83qfMw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: Jh97-ZsMSYe_trHVvWfnaQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: f29UzSFLSyS-VTolXMShvw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: ThD-9mMASN-0PMseysPJOQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: Yk4EcxhFQrm2hxRcplHUvw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: E9srDEVETDWy8RFNUw6b4g + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: X_aAa87wQ9Sz5FZEAJgLyA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: EWz_fo9wTg-72cbs3ZblEQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Hb8hGezeQ_220DQaNuHQIw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: TIgbAeUbTFOKt7SvjZJmQA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: fmyB2IzzR2eguxVG6kPaxQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: VZqjsRvARw-CUf9D068keA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: ezMZZ-B_RvGFqYC_p-B4uA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: dO3aZW4cToiu4OQONTW91g + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: HKR-lsYqSZC76HeE6pOrsA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: ILfrQ7gbQCq3DQ8m98EjTA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: WXQSz7XDRHCnMqx3DHd_lQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: b9Jl7O-WQISo7qTybmnHkQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: B3mi58vPR0eQAPq895os_A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: Cg3xIqz4QJ-V8tqWF221zA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: T3_8dFn6SO-iT1HegOt4Ug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: B0dEBV0kStGBdB8jijBgbA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: Xh5XGmbRRmiL5RfCicdxJA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: WoQuItnjQMKlYAJHglpn3A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: TKYzUgpzRbGou5Nlm7saLQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: EEteQDmjREKA00tJtgNQPA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: eKhY0D_sTuSLN1cgVXghKQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: YlnGCNBpTSKMzOZHijNaYA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: Py8ZnU89TFq_XS8-8w8ubA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: OOtjGXW5Tba01kF53ehhPw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: R5_IImVjQACikGa1hJ6dJQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: JowVLwQgR0qA8jlZlxYwug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: D_eL_fPLQ2y3eQ6IF0xTZg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: SvbOrlpxRGyb0MkRnUjGbA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: RX86xznjTF2PEJxPk9vh0A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: P-d7QWOmQlibT3cuSM2LZw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: DjV53xw6SmeWtSP_iNTvFg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: aod9P02ZRgO02Em6VIuJ0Q + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: TpJtD6XFRbqjaup7ViThuA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Ne_-MtnNR4mDpgffYkjxHQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: G7JLRq2hTOOkaFNzTYl0RQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: D9elh1y8R2O89qGF22YLTA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: LEONW0wESZydxb1fxfU04w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: b5aDZCpvSuarqJ1iVhNOaw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: beD-0SAsTnyERfU00149qA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: WiFhvKnYRGKX64X_sEdhjg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: NFo39_AiRXWldD5C9zdnOQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: deonDFvzTKKj_1eidBsh1w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: X-qV7ONPRVK2zmq-V5BaYw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: K6ZZni5sQde_9nnBthjDOA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZwPDThssSASMGu-1pqUlpw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: Th8H_IZYS4O8Pm3OjV8Tsg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: DnmltDpeRbmkP_lRO41zIQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Wt0lM88JTvqJFW25TfzUAQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Fvudxw_CQRCKiMeWjaqtQQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: MqZo_FmwTt6SF3RR2Zd9zA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: VOfp7WssSySnyj7ORQ0wWw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: WLix1r5tQ9qzldKiteNutw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: LSLyBvNlSKyqIv1YQwzDAg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: WqY_1nV0SouUdOxEi-N83w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: A8s5mY7QQDu9CaZi9A3hAA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YEbQwqWgQ0uNw3FtnWIBEw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: bV0JJGldTmygFKyYPV0FFA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: XI5b2VaFSc6Ig0gvCZWYGw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: ba5mqufwS_qk0mIapRkUVA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: USNlNty6SL6kHE4eB7XHcQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: DUte6fTnTNO9tvSlOjrrug + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: WfB9X1qmRgyUy3dFUJOwpw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: IX5tBOxrSAONm4ER3dmE9w + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a7gob-n1Q3i7XyP31CQCgA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: CimkaNOmTMqcpTwCEOrfqA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Hnd393wMTI6it2hB9r5u1A + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: Ik7f88URRByvY8iNa3WXgw + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: TdOekF1xRZ-fdvmuL0beUA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: LXIdeXkORr2nGhhNyBjlVA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: N8s9vdUjTDWwD65wblbrrg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: XgqrlSmPReq89A5LD1iSMg + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: VOHCk6AgS6CEFqDdgj6rbQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: UumEL4FQSPGCTiRK9xXDPA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: GbRcqXcTSN-2Cpc_6Op8pQ + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: DGzlx_D3Q1a-pQvcz1yAxA + release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: ZDWMIUJ8ROmwpSBc2rsqEg + release-eme-free-repack-macosx64-nightly: TtsvYDE2QHWzv7TjPL_lpQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RChsgqxYQguNDafkfL9q0w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: Qvawj1_fSJ2r2CzMTuouiQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: Jvt_PJG5RZ-x8IazROOF6Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bAXLR3gZS2a1soJt_QmG3g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: VA26fDTpTgamHZ4LP-CG5Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: KDToiq-aRqmFFOh8z1769w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: HCPLt8C7TWKkZ1FwZYBiJg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: JmtwI9qFRoCBw443LBilSA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YK5FCPBQSoe07AeukjrCwQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: AYRNzyKMScCKxKoTHBlISw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: A_VmwgyHTuex2mZXlqrWqw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: MNAHQYU1TmCojfgr9Ji_Tw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: bS8LHdLaSsaA163CubSfXA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: ehu2oJqrRTiwMU6o-3oSMQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: Dp2jEf4cQCWC_T29i71f5g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: JqhBG08BSJCkmIgGE6U-eQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: O8U_AHp-RHmBrxf7DrwIkw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: bNwYoPWkQRmh6-l7VKcFkw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: O0HgcHSYS7inP_oy3wTydg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: CyyVeItETESoIRcPH9Ap6A + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: fZHLDm9gRg24-xTMUaPtOw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: PjhzGusOSvSRNX_uvaDqjQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: FZbrF9RYSymxxdrTeVvDvg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: bTHwdgKbQBuC3ljVzjfs_g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ZavhHnX_RN2GhC1Mf31Psg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: feDB1ILZSw-slB1GDrUpeg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: D9zBMxMsRlarsmS9Xf6J2g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: W0MvB0lAQ2y1LXN38AoKJQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: b2IQDvnJT1ayxSMgx3yDxw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: f1kIbvBRTeqqrRC-LmrjaQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: aTlnfHLrTw2ysuZaOw2kVQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: bcuq-yfFS_mLB9OhWSePOA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HnzvmHCiQY64r-WUGKrlLQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Ww_gGjqYQoCqa2B_uT4wwg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TRvHm_x7TDSfKtMARB_62w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: KbpXGoTeSB2wfnLTfTTzYw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: da8ocTojTp61vfjNXCzpNw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: Nm8-cmONRyKs-CHoxFGr1w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: HrHDE8FmSwi4w3jI2EbrEg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: PZJx9PsKQOS3sc6CzuaABA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: NW2mOt7hSC2dfZ6c1wkWAw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: R-9WgGw8RaezU6AXo_d8Xw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: M5q04sJySVaYs6ye_uKKfw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: GoEUPW0ZREm3GJHrvcdhzg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Qkej-tmPTRSCSiP7mU_rjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: B6FCLViFQueOrTHpxGFNFg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: Dxcganm9SjmegCUA5Fmj_Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: FnAPIs5ZT1K0vLvVpisRmA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: byk1GutIS0y8ww6bzvvfKw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: U8QHrjZAQAiOzdMTiWodEg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: G-xtOQfpSsGhYFxDJpApeA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: Q3wLQME9TOKaLqIRonHQ5g + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: avtSZT8dQlemHd7xUpD0-w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: VO-00tuPSPmahF7ryGkCng + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: V7S-kxToTomtgKvoeIXGHg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: IuxWJ9ibQjCrhFw6Qti4EQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: NjVp1B4gTCuXA9T0_EnPQQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: Ve5elrx_QkWCQMG24f0uJg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ps3PHcwBSGiOlfx6EuY2xw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TnkiyMMRR-mB-Po2VSuh8Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HKKQ4DxNTh-Wu57I2G-oWQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: f0pewahcRBajx856N1z3OA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: JPWIOEl3QCiQPP6XPE-6Lw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: frdrD75JTamA5pclBGbqqg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HrAH0pnpTE20Vrr4rtIhyA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: V4mj4e0jRdOYhROT_d3o2A + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: LpXnwECmTwaouD-EXraQ5w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: dZt0tlYpT0uYkrd1ZA0Czw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: M4PBNRmmR8SexgyC79n55w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: WnEjrfR7Ro2slnC6L84V8w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: GtXKQeocR8yZjkbxjtY2zQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: fTNPZgRzTHyKP_HG97tDEQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: YldKUA-xTESm2HtIUYnIFQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: KuukaWNKQJ2lmeGjjEH-0Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: feRrl426ScOU5N6lWQ_ozA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: dywq5ZrWQV6dT2NyWA9SFw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: F6DGaEUaRAW-Ek9nm1uoBQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: NdsnWVPaQrC6COB3RQRPCQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: X5_vtQBNT5KvOZyF2B3zRQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: EjSvrMj5RXG77ft9NW7ZgA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: Nj-qwVqsQnKrBo5MRZIxUg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: bzhkIcKXTN605Bi4fH6B5w + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: X-EOVAiTSbam5w3zqNxrMQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WjP-A3mtSBezdFbYrmOvGg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: WJTu_WOBQCihd_aMz-OnIw + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: KOiua81hRZmpKlDRVJjHtQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: GeCQJB3TQZGZFty4ANCVjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: YD1eXFMTQkGgwYy6wRUE_Q + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: E19cA3V0RPKjxbvKcU0TxQ + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: SamqegJ7RbyuCeb-JilvVg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: R_ldD7_6TF68wtXLnX7isg + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: G_96vM_3RmieUvTEJVvMjA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: GI0k_4YQSqaGPEh8Gyfnew + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: Nq0yTbkAQMOqs1OEuDVdMA + release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: ZZEFA6obSfWWG9GQFQlvrw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: KpCKtGflQka0P03DFHHMOA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: d3j8yTneTcqpsbzQoQ6DRg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: WioISVpZSeqZ1QWQSm3IlA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: Ga-LYxMoTQmdj4sQsHlD6Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: fS5JF1WJT4-soqmQOnQ9TA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: D0yKjNkdRvmjRZ6wvfoX8g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: TjJCdYqcQoa3IuT8_UrzLA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: J6j0ozfqTLeadDTQHz6NPQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: FVTpRfvhRRyuNPuhTbJSKA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: cHQkIU0lSMOZR_pYRLmEOQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: aQft06SpRja0G4iNjH65Jw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: QAzV69l_TcebHwce6mgLgw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: PL6bgWFISra_nl-HhQeBeQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: QYV5bbvoTleIiZ31xtm6ng + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: alR-cZpNSKS4TlrujQOwXw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: L0dqR9NHRHSEVJU_KGmbcg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: YA775icDSFGYfvqJzjmAsQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: SMxu6NU5QZyyLPrfVn2Trg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: Cz8M2L_dTbOwWl7h9xS09A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ObCpAHa2T4aOEfhqPWJN0A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: Iu-R1vQhR4yg4-u-XekT_A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: NMxOLJ2BThiyeREXUCMfjw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: dYE12GtsRAiyFcDfjGFL2w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: FzfPo-shRU25gK4PvAs9zw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: MN-J0WvJQX-eQqpMyptTHw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FxIHLQ38SRSvAwAHM91GIg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: OxP5kOHpQrejUxaux1PvsA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: DX-JYoCtSwWj05Hr4585Zg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: J8F3UZEVR2aYflJaanEXfA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: NBO8AkZWRcOXeopc1MjzgQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: SJa3RYxDQbiG3VwLoTujEA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: F9Ew3iMpS9yRnM_Z0jFjbQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HaHl_sgySIKVBSCUlwdEtg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: JN_GxUWqRXW06VhVtWxiOg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: aNROH74YQdSuuYuMiW7x9Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: Mz9crJtSQvGbCcn4GLO8_A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ChHJvJMxT0ypgNCp-P2oBQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: caZRuIHwScGDcsJA2lYP3g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: KkgQQKi8RByYpkd4h7VIqA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: Yjch3XRGROK4uIcSuCsN6A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: UJSn3Ud3QOWyxC7e2zUZfQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: f5FXBqJfS56VCNCQMMfQzw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SgNbFeoJSnWQaJtILpHr-w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Hb5pjVFwTVu67Vz9AC-sPQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: WHYD_17DRcmWfL406YgB-A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TSxw9cggTzCEFs47hki1eg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: ApyW-43aSa6qG50hD7dqEg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: eK8inN_pS4eA-Q0EN2jIew + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: J1ZmHm4nQ9G5xCR5gO2I0Q + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: N_hkGXsATmyD6vs4Gwb_6g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: OsU7dc0QTBCnyj4JYQtmuw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: UcHy1xF_RGi_uwp-HUEHlw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: e4_jwPAOQNi-6ItLlSw6Jg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: c_fED7l6SvS-tvDPa_k_zQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: H99ovAjMROy7La4zJFOMrQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: MSQhyrwORQiFM0J4RU2kaQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: VRneFe6OTvWbtshLaYjrQg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: dgG8nkQPRLCsK4eZiX8tZg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YWX5QqZsRl-AB--7lYgMDQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: cVZ7NsuPSK28VGwgG0mEjQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: FooUdzKBQ_a2iHnI9TpuNw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: JagEddkgR3CC79HiSylW2g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: FMix8PvIRfa6NKLdq8JONA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DQQRskWCS1GjGRfslSyNcw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: AhgN5ymRSbKQ8KTfLvxFHg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: cxJNmRcZRiq5rDjR8rh41g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: bon4bte4TlqCevDeBJkuaw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: MJDrLKn-QH-M1RIt1QJJQA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Ezzbb0X5QFWVtvOe_ifdFg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: LaLA4PS_Q_yI9AnI3CkGpg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: Ru9A-g_dTQiuXI56nnOCVw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: a2VgM4vwSBq6BYgjS9revQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: fb9yzjYCRg67I9emXZOAHg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: Tp-0HuAuRMCEJOaD-fmiIA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: Q1-cnKgBQHeGkcvzp6ntKw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: I2R-eU3nRoii1w8mzESJVQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: bKLawfrVQhWeZ1JzOmQ0yw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: SJrQcpVZSC-MlIzOWA1njA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: BR82ivS5RR-GaBlMvFdtbg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: ElQFOdf3TsO5yM7ejODNhw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SsMwvVKySzGd9R_MXQOp-g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: NJXHJdCXTW6fF8wjFfzwmQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: d1ZAhrOSS2OK6gp92Fo5CQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: SlFRQCKARHmEc4EDiYqzMA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UojSC7jOQR-wmcmnlcz6OA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: Vr7BD6E7RRSVS1iSJsh9Mg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: Nu6Uu-58SkONsA5LwHmx2w + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: HpT-JvScRcyz-D8w1aTH0A + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: ScJdy7SOQjmOcubBeIELyw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QnrR3reHRcSWBTMp7znAiw + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: Bpkc9sNQROCaQ0S8P8JhwQ + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: CZkvvLxAQg6O4bpglR7FMg + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: cNlFKuKHSMy5a6uoUJGn4g + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: D2fxKZzGTPShydka_YMhSA + release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: acOIN0IDSXy5-lsjnpiGDw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: aWYWzzZzRYiw2d7rIvzMoQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: Z7dwy0wBTjCVUcIJDdT0jg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: bv_kauxmQemY1ULDI4LBaA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: CGeTb45uRfmhW4JZJw2r6Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: REb2PKPYSOankODh0pwedA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: LsfO-nSgTBauylBQRosaww + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: ADANO3GTRESuwTOYGRusHQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: KAhT9LvxTnqPxxtiPGoOpQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: GbdxC1OOSoSr5SVAfhmjwA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: FLwdv5NqTEKirAFMxG8THA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: EJpGYAKBRk6W8VHGpeNH8w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: Ny8_tidtTlmnoR4X0bRAuA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: YQF99IF8S4Gf26KntWt6nw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: YRlZmmDKSoqwZRrd6E8wbw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: fd5Qyz9HTnCYiB4b42whXQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: AS3czye9Rkm56wF7U3KcdQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: Nw1o7k_ySPiZJ2Fa8vaB3g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: cJ3S4BghRbOHTekqgXpDxg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: Y1Vg9rCbRIa2Q1IYFTuGmw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: Zo3T47unR1iLbD_FJhJzEA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: emKp3EM-SnGCaQC4O2Q6GA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: UU4BmGLRRSC5MX7Nh5iTzg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: Sganw_Z3R7GuKQeQrPJATw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: eix6ohC7Q-CN6zvS3U0mzg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: FnRuBWp2TJqvLMeKIa35RA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: djXTghowSsaZNG3NhyHU6w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: EvJSx9mJTV6BTwYbKR0W6g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: eKWY-U3hQKa1Z3xGN5d7Qg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: AcDMukzHSAOvKV_5SfoGSw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: J0rvodQ6TVW9k99W7Q99QA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: KEYqUSzMQiy_YPOdFFlvjg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: E2dCIsJjTFK6SfJVqXtk7Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Tk7GbzDCRfC57ByieZ1G5Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: UQ6Z46KvT8K5NlcTu3LNJA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: fMCTSY5oR3GKNV6bGa3lLg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: XqIHBtWsQRSvIW3MQXkL-g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZMdIIq6VR0KCAQf6Se0jhw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: foz4txNQRVm9cpvaXlIsrQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: SO8RtkL9TDm1ir_cTZbECg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: LAqNny9TTpaZLOvcZXItBg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: ayVKJnFfQlGbXxD7Jnuxww + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: OS5zOSAOTsGDOFWn0nA9jQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: RxOl11NbSiWNmZqr2mhc_g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: dB3CBvicQ5umN5_MKz4Djg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: D_yjAemjQne3PLq7rpm3uQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: FCAbzakKTI62nuU5MTsAug + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I1qskSYvR0qsd5BSLRBhyg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: PDVBdgyESPGscItQvHt7Cw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: cT9dLpbhSGuUK1qFbt9TcQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: cTmXeLFrQwSwuxOfDLNT8g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: AUYQzUOAQ6mliu8USUBVdQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: PQdK-klnSlicsn5WEs6Z-A + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: e6140sPzRnik_6JhoaI5Tw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: aPZ1tNkWTsCav7WU1iebHA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: EZ5HVJ7cSlOu4OtpxCFmaw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: Nb-ggQ9CTKquPsCKLTuXTw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: OO_SsN9MStmN8iC9SToj5Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: JBs0YRaEQIyn6_UZZ_eCLQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: VupOWu21RQWDLQ4AxUy8Lg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: ZasYoP5ESR6-jsnT0Rvx8g + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: FbAstUw1Qrew-nUb29eS4w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: UUmGOUmaRLyKEiUZ1DNNMQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: HmZ_l9LJSkqdO-kWTIBAqQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: MN_NAyQdQ5Gn7-jLlD2YPA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: IGb0gyWvSvm0HSQ3Fz9CRQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: E5VMcTtqRHmOqJfo2aY4Zg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: W6QEgbocRC-4iFfoXS2Jig + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: fvRAiDShTFeivkvbrLTC1w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Bywt12RIS52xavNYIL0qSg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: CAdoIf1GQhWlN_LjXo4NXg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: JGlcXfsyRRuTfmIXXWWjDg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: X0t2LNPmSZKJRUf_RpGbWg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Wr8qjMnlTkatNAqlAO1DCw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: TRrZK8OlRDeh1VLiOXy9uw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: R5Xh6CQTQZKoOUZTteS7Mw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: KqB5Wl_xTban1CWLjwsOTQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: DEDKMj1sQaCTpooVJFEA2Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: YTtsyMF2Qc207irqX5CjEQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: QesJG20KSIy39WW2E49B1Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: DkJvccLDTSyVbevpo4LSKA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: LcrdSOiAQ_etrJbye4vkqw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: NVQFqenwRCGhLtLYSCt_5w + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: PzT0YRBMTB6DZzYLNgWbOA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: ODSNWHCuQQ6-9W8zXxPhkQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: RzzK1Qf1RjWs-pTLDCoPUQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: A8K1Rg3xRjW5ylZ9tlKMqw + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: GR2LQDPpQdi9feIUT1FnOg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: acFE7dctR6SBeKFoR5C0YQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: WT8Ida4kRmGAXyWi10Zpag + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: TtwkGYFBRnSHHhk1erFWGg + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: EJPRt7XySeSUV5deViIg0Q + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: U7wOiUzcQcazkR2WjZSNEA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: E2regI7RQomDcdyYer2CBQ + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: URGuTTOoQIOmPjt8qMLsQA + release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: JtwQHHcfTxejIycIylK68Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RZ94_aJRQ2Cq5Ap5dNZ1PA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: ecyMaVXaSXeZEkK_zQEl_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: P7ZhuJEiSqi7PUD7jWJUcw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bc6thNwgRXu96JtI1q8Ufw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: MszMBYjtTUWVBivfp_Vg_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: dP5bmyziQteyWRRnsOJmmg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: VZ-Z_pHMR-qDdzrIUDM4uA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: fRBtVKdDRh2PJ7c5NOjYQQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YJyUIeyhRISnydMwzHJ9Bg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: GqcHbHuoSqK0_2vkO1tEGw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: I9zYELwuSjiyMqWxWY2BSw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: LWDjaHYVTDqmeWODPVuW7A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: EUpQuatnQOCMFCCzSFcvoA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: c4rr6mVQTROh4wvcTpnTLQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: YfHkBFOQQuqHzFecssOLhQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: ZD2MfX_sQ_2FFtZMGkBEFQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: N2fzCaPZTHKEFx2DufzrcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: EMLBdjbuQkKz0LaBvGBkpg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: a9AHPMZKRmOOJxCjrmKoRA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: I5zHEmIfTDS8AJkHSVGs5A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: KnRw2FYgS9SDZnq9XU8H3A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: bpVd7VLrQo-ub1B7SLupJA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: PKvCnQH7Ro6vW-ZMYrOsew + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: cROUusuYT_2v3tKf5oYJpA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: f-rJP6R-TFKQJLJub4O_Xw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FNyBmdXpQDWqN7TuC92SdA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: Jsz6oPx_SO-ZU2cyrYjijg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: bzEeEmJATLGeKr8ActGn2A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: G4GphrVeSGmOKJmwNn1EXA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: SkACvJc7QzWHvgHdfOX5VA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: N9O2UX4yQKCNaHyxTxZNFw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: E7cMKkhfSvOk4PznBJksGg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: fAHTpnTVRK29XggVYbADFA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: fvy0P6aHTxWb8IVaXDWrrg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: c_vbW6U2ROqK1dRLUOfz1Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: a6vrsYHMT6-apwOe8cv2uA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZgaD0Cn3Tn6usYh7Xswzaw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: ZjDSOIyST2OHAZ9oIBH8Sg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: NuW2YmUGTfSNKCTHOJtAyw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: YQ5yH4lfTPyw49Lscsl6ng + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: Wrb0m3qGTNqyhhsIW6MSkA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: BAUve6UeSmqoOBgY71DWcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: IUzoLspHROuNE_VeKRHOVQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: RyGkRvkeSDS8DXjJ7lbSxg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: At25N1NqQI6W_9wlg3KXdA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TcTFuGnoSIKiydbZXhCGcQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: eMq1zDxDT9qEw_B-1QU-5Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: EGfXzAdjRfGAKwaUixEiFA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: AGUOrV0cQruSOx2DVVv-Rw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: Bz3YxGXcQY26FRPBu4mx_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: Y5jGH6VpSQeJAOGkbvMEHQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: ST0ZCPNcTiih5r0yeflpow + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: J8S8m2ujSoCUzWlB24vwNQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: EbeWe-2_QdOPf8LczPLLIg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: ac45y03qTY-8MuYvlEViWg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: E-ZeCl7yRyaCXNkHr8BGDw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: YXBCtcfISr2y0rgT88VgeA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: DfLkPGl2SNWM845JLvAWrw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YDet6EHYR-yS3g8q26LK_A + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: Q3kr8P1aT6O621wT252Dbw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HQ1JDYJqS0SymSpTrnyf_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: K58o_g2qREKbPa_0WpaSSA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: LiVe4SghTMCDz460cWHoDg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: e8W0dfklTDG9quPcE56sqQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: Lm1LEE0pQqOMbnMl3-9upg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: KG9vhmK0Q7Sd0t3VILP5qw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: a937UbVMSgSp3v7pwP_XvA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: LYbVfOR2QmCcp2thzJxMig + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: OqNDo9TkQhitvggCXkdUsQ + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: OxBKg9MZQ76dC9_xlcT7aw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: XSRLOINhQdWemiA4VdCJBA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: bSndblg8R9Kz6nYXzbkWkA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: LjHP6QXSQHyOYqS9lJM8DA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: MHFNzBCgT8WLZKjvfAW0aw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: UVb5BiYgToi-LqWZJRcUUg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: WTS8e36yRx2Y6zp3i304Bw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: O8HZ-UwbRwO3nc_SId9Ndg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: AzgIcmyyTGydXwgibF2LBw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: bSvfzBeASBO8FBr68P5EeA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: JVbYWKnxR3GG9bxuJ1naRg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: PW_AK2jzR_WFawvIv7ugcw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: Bt6ZZOiARxacSOHnnbSoTw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: MACQF1FhQI6TvzwjvYluWw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: HnZ5aCGJQ42hEsI7YuBN_w + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: PrefJUjhSze7s6Z_0y3_Eg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: KUcrcwz-Q4q8HSACpl92Lg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: Q1P3UliPSoqFwxw61Lmq2Q + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: XxKMypmvRPi83NCVo9C1ww + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: fyn4Ll7_SY6PvgEcCRMOUw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QPFMOzedTP2B6lkAiERoBw + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: PgERMFn8QsCKen47SI-AcA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: AJ3EuzQTTLes9uiauatflA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: I4X08ccaSii0t9Jlum75fg + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: IR2xY8p-SfKVKfAaa36wqA + release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: I_Jvj8I5SMSwecMKmett3A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: TGgqj4_DSD6tXCO8MZUWFw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: ITRwATXRQSmdyUN7R5UY2g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: KDbdYMPcS5OYPcaO0bM24A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: OmFJ9NUOR7y8QcHdqd-WMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: EHwYHNNXRieZRAemf3w9ag + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: Eon7KWZfRaWRxf5VYsTsvw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: Z4tBmCB0TbCM-6v8o1Ju7Q + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: CY5FpCv6RoqX15Axsr-ewQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: W5tbV_b-RRaZCkkySWYNjQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: LC56VVMhQdm6kb2ptGHssw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: NixuxkDnSFe0PouGYTUmMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: I5I4843RTfWZnnoiCvWMCw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: A_vmMeq4QbagvGwKCDwVVg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: ZyqJwrhuSU-l3do22cCuDg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: a2XAxi7DS32x68TwsXO6uA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: eDABLx9SSQKPzoCoyuT12w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnGHSTsmSMO1nzFlZvbdMA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: WfuT77FUTC2RWT4moA0GtA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: fXsAoKxnSFGmHA7uXi1OEQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: eZrdOfM1SEioV4XmjeuAPA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: JEVFcilFSpixDfcUYT2tWg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: McvpYfPLRYOPKHxHJLn18A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: NSmta1TkRICpaEjJk34MXA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: clnxfY_hS2epAPzYXVPKQw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: JxBM1kxoS3m_hMAhAHBlkg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: cK8ofYt0QQ-XEqoVWaEQgA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: YKz-V_jkQvei69HlNPUfIg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: ONKhqoHUTmmwW8s_pTeeJQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: GPZ1u5fuRcyUVZBdfgRyIQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: Kv6H1ttYTpeuIq0k8Nfrhg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: FpE4qwj7TSenhEWJrB4sMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: NNyx2YllQ2uQdrQUY-sHlA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Mqff6JPtRz2PQvT2Pesk8w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: EAErs8fLTnCHD8iP4WGjIg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: ZznjUyXRQq-gOzrcfsAOpQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: V908ajZgT8-QKR1rV_pmIA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Glktw21sQQifVhyJtB6EVw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: UrZgEV94SBeQsPhZeI5gxw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: bEQlASpyRf2-qRLh7_h58w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: YdGfS6ZsQGmCPRi5mnBcMg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: fCypB4vOTF-8wVB3CMaejw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: O0QE75QOQ66u-zJSqsFhxw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: aZOS3aUrSK2cfxNJH4-kpg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: PSAaBO71QOGsXm6J3R4MFA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Rt7fer6CQOa5_qitk_ojmA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: Z1pKbNqgS1K6Jp4nSg9Vng + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: IIhVh7lKQUqSpQ2a_sTk8g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: IfCB51gaT-6iMnYQlIRiIw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: DqS5ZzqHRa-Qowup6XM3Iw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: JlwruV7fSZqt45KFc2Wdmg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: CHN_ohUFRPequMGpQFkdVA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: eOus9CzPS36GzdXbGp8H1w + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: duGRlDz9TBehIJmz9fagGA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: K1pqu_MWQBS_LgBlnImgBA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: U-TY7R_iS0my3_DwYPjM5g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: UN_2M9fsSr6sswfJHdm9dA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: WfGl-8T-QVCU1bV2WD0wgw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: TxTvw3G1TUinpAeMQeaQnA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: AOAQu1O9QnGIPbsGqqeIow + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: IWAJM_s8SA2G0Z1PLenz4A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: MggoqMeVSCKvFMb1dC0eBw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: OhLGgMZiSc-t691bNKu-ZA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: H5cW2IGkRee9lrofdNUM-A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: GwhNG4-UQlet2TLhzV7AYg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: D2GFOrqJStuIrWcuTkvt9g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: S0-HSNK9RMaWKxKv7czUCg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: fW3j3JhXTjiWIDf1LClIrQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: Ph_BYX8vRvG8zEnzVmjOaw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: P6U9k9yDT7mnPp8zhSUEtw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: VeJk56bmSam6dEm18gyjgw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: ZKzsZtFXSumvIMXVA6EGlw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: BDbu9NX0Q0SQTiCE41ErdA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: OXvfQTRoTUGwX9685acfHQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OgOsow60Qgqzt4ssd4cwqw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: YJnYTaozSwe7US4QzF6l-g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: YT3I0fXUS62Q1LuvEyDiJA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: cvh1LGIqTO6dLM6I2luXNw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: IK_uwLeuSHiVOYi98DdtLA + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: DhmccWtJTyqABe6no97PYw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: ZeangmmfQwaXMmvhQ2m0yw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: HYm5TJHCRW2CUJ3jGwGQGQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: Kyrw6LSRT1CbXxMMNQGImQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: fED3zlGaRXKtUQRaGio4Bw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: fOqxjmYiSU2H4zTFxcIpng + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: dURDlYzRR9GY7-Kn-rWv3A + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: K6YdvCGFQ2uRtm2rumMSsw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: RXSP92luRSizxhs77gMabw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: KfPzM5oCQ0yv8uIrcnJZhg + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: Id-N8diNTrOTl2G4hmzc3g + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: VLWLclNWSZKXFgp3kBLDRw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: UmjLuROTS_2ia4ZdJfntHw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: Ilv8BHAnQ-6PjCZ0SewzBw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: SaYubREJQW2JGOQBwSf4Dw + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: L1nb9PDOT9umCJj-CjPqHQ + release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: VwDe9SpDTfWaDA3iYm2jeA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: FGgr4detRLqTixs6C2qWzg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: IbX36xtMQVSiquRqNNU7mQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: QLxSQADDQKm4-vNRS7HLjg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: IKZ5RKtiRL-_HB8nlf05Tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: Hhw5ylb4RpWFaEvRPqpdYA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: FovfX5d3SDiEHk81pZFKsQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: Re4HHNMxSgSD7z5I6DkVuQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: OQSTx3wgRAO3-oB9dGNQPQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: DQS8nbZZR-iAKzh2A7cg7A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: A036tfIXRsu4nNryJMc2Sw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: Lfv1giZGQtK5LvUnTC5sZg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: d2TyR5c4SUK8G1GzJ3G7tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: QD0h7HdRRIimNRyvf1FC3Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: RTb7ilaZTrqfaFVEeAOg2w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: OPzxKgtiQzKhpd43D-S8EQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: Cq_0S8iySteUlHPC86wHtg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: I09EA4uhQrW0kZzZn_uePA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: XmoqiR9gRoCjCSwy4iOrUw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: BW5z2EB8TguX2Ad6hpoJPw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: OMCu-GiRSDip-YxzNPAySA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: XxQzjzhVRAq1qoDzsocfFw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: e9Ku0hkLTW2PeDh7V7RZzQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: G9mTnzR9TBq3vMP-YkKrnA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: JneoEpECS_mhhIIDZ0HMFw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: Bl5PAPY6RpKEdj7QqmixEQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FSrcUA-4Rc6qvHfUDVmBvg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: FX_BPSnjT_Ccf5b7U-l6oQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: TW4_uwHCRU2KSZ7Jy_ynQA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: F2_VtQWnSty-8TWCXXRSKQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: bUrxCCcGS7uGjj4K3pqj8w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: FvDLE83-SfuvhUSPE8-ljg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: ZPkT01AaQW6WKUk03g8E0w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: CAcAPm_ZSf2zIivK-J80fQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: RvEKLmX_QdW_Kl-qmv9TXw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TbD2nv1yRHGw411Yu27XbQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: bGQlaQsMQZu__vDVX9JWeQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: CQog18c8SLW788xqm9aUvA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: c30bNtb2RnSf0f-kYxw7IA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: YBWDrsOeSn-kgdkGC25dBA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: HXeJD8gdSE6eRyCzU5-NKQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: eU6_5alwReet8GAwZDzoCg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: evDpOaXjRNuSZBi_apLagA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SoFcjXt4Q86sUz5m5MBI4Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Bg2P5g2-Q_Sjo16SJ4q0Iw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: ctex2B8aQ1q1jjRtDTzmEQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: crnSokMoQi6z6mv_h64XIA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I8B0a2g-TNKqG_NJMUjDHA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: Y8-P4iySTH-HGrVeZLxTEg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: eAe6UUBqR_KPauOsXQBkRQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: asqL9KakTFSDtoI5T1E_Tw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: e8ER9nFUSWeAhFxCgdelOg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: YqxXSBu0RpK6SVoru4PNbw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: CfZ9bDEiRrewBssXNHcqEg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: Vc0NcROxTbms6T43onJN_Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: UnmoDqPKT_u-0FXQhZDcbQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: aesIyZUoT8GJeBSGC1Fg5Q + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: X8WW0BecSzuKmqjXrrlHhw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: LE08t72rRKuRLgueGf8ZdA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: SyikPmzwRDWOTPmRjMVz8w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TrCyVp-NSV2ZDnhEJh-New + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: PpjPGRajSDmyxoqh_5E4Xw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: PEAlVPyUQPeB8B2nTLCRcw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: Gv1eMdWpTg2gGlO5PEvk-A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DcJcIHpMRnKGFMdRF4P5EA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: cHraxJyOTWmIyk5czyavxw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: aGEP9OFmQEazt--hOAQL5A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: Pwswl7bKSPKuWGeTJ29jAw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: ZepYHjMkTuy5C1wqOJ_Qlw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: bvcrLsAtRTm5hT9UIiPpzA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: dUmakoXgTImZDRxuHh5e6g + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WXT8my1vToa8pEikCrkHhQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: QZjha-zLTva0gl98RBXefA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: BWvtiNaRRYSCYtkSydL2JQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OkpYPccGR6einVSDsjtVHA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: OwZJgDyQRqi2HkVWHGKmug + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: Du_dLDr-Sqij_F2ooys-pg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: ArJb7GfORX-nNbPRm9NICQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: aPVASSZoTAaSWwZoimqQug + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: A1yhrnbxS-OD1vGMKwh1jw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: B-8zzh5KSaatFv1VxrHn5A + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: c0BuUNb-SuKmqU-kJs2dVg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: VwIkVGszSOCyjH7Rqf-tUQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: f-Sh2C_gRIWy3osdvxXOnA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: bxx46gIfRRWGVB9eTzpyCw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: IKbuaaLuQSqRFKw6c2x1IA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: SRUfdkGdT4SoIJJ6qcl-mA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: ccJPviUhQqigOsTI4VQPZg + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: MZX7YjhqROmL4RFgBZ3EAA + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: JgyZ8Id8RqePDiaiwcxQwQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: e6nO1wGlQLmzxsFcAlLW-w + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: ava8f3qxT9qniDd2naFzUw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: avRGD37ITm6FeZD_E912QQ + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: JvwFJzglTm6glIwpsPHi1g + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: dcLfLlhXSFiur1sfpxZMnw + release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: bSayWXAmQu2YjDSLz_kA5g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: YDXTTcCYT5apz-VbiBYwKw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: cwTvDN3tS62Q-4NuxysPgg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: a0UdmCCtSSW30Vkvswl7ow + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: dudDj-99RreHLMl4GPzRfw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: RT8z7mQtRIC7vQi3_5kqQg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: UdeLBXYmRn-2YJC-86xA9w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: dlu5vzgkT5ygvmo_3VlA2A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: QPoskV4wS-u0gNhnqnnHbA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: dlVUWW-VR1yDrIgats-0VQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: eHPu6xvFQgWhychzcc3xXQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: RekQ6nNOR6Sm6l5VLr7SOA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: Um0DXKB4TdigJniLK2_iKQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: Z55URMNjStCp5TxBXzNJqA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: Wl1XQc0kQPOd7naV6pZlRw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: GXwj1LHcTu-8hnw2_ZvGFg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: agLK-hGtT2KMr_l4kk5F5w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnU6AXPFTxCSXeYm2gw7wg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: W47uW_mmSpefQgfcBVo5Nw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: dAPwnJNVTrmoAHdYHvn87A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ViAd71ccRu2K7CS5ALrr-g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: N79Ja2atQQyT0U8ebqN3KQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: Xl1AyetMQiWfz8UMl6SavA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: eIFqIE4MQn6wV_q3EBqPig + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: b6GuM4LSSwyZj2J3gKal6A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ChK_2J_fQqyGqNgrwytdAA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: JPF2vLNtRlCqCe1Rc9hJ7w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: fByNQl24R8aR7x6ZormXPg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: Kx8GhRUiTyy6a9kc9hBq9w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: L-RXtrixR-6fWCmt7C8ARw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: RlO-fTrjR06C9P8jXATGOQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: CMBA14FPSPKUoHOCAsxhtg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: QhoySkEtTueb4P537n16Jg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: MBv8Lmm6QU6NW-P36coDZA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Gi6Ief8eTKOQl7Fmw71-Ng + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: Ywa0BPETTJ6gJbbGJDo_9g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: ABpbZoMdRvibLS9qqxe4Ug + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Y9IYz3kOS3GgtL6c4H9R1A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: au-3E27OT-i064WPgtmUdg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: VGDwlYIsQSawCdVJIY6aug + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: e9V63cMYTGGvjyRYeP4FqQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: WRwHlRmCRXiy1vLyQKXXRA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: bfoYjUsaQBGI5CGeLV8Fxg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: Nk03mtgeSLqU-Lc9MeIBUA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: aajsVAWXTImIkII4eRFBaQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: X_7u2iEpSTaOIILozAKiFA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: dN1wFoNJR-mugxqdbMGb0w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: UYQ89_akSFmgr_KdEouAuA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: Cb7HpfeeSSuqtol8crVIHQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: AUMt0RVDRGCagaQNIwp9QA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: aRwkiDMLSkuhnoKpdshmDg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: Yu_1ChPTRbuJwKTuyZ0oMg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: MMjPFav8SLGHNDt-HR8TQQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: BGAGS9-gRq-PZMCuF5Bf3g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: NMdJifgiRtGicHO84hkpHg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: ZXniYbnTTgm0ODv4eruAyQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: Lb9hUaKYQVakmh-VIxs2XQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: BTOSnRSGTYe31U6hllnRGg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: PGc57loPTey-aCBk_5TtPQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ew-nv0izQfWBHeBcPOaJJA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: YNV9QUCyS-qNzH67-L3SjQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: P14Iyf3mTYqyYYztirOgxw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: aOBXSuhjREmDQRk0Dzh8Dw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: SNcG44-CQpqeerBijd4wXQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: F6SpRRHxQ9-oRZGQxV34Zw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HbjP1IQ7TjO3xkYy6mjlcg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: fZyhs6kDRjGlWP6S_uxBTA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: aWzlTb9tQR2K4y7-6f5lyQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: Bt3iwBieSn6om9_G-ZBV6A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: YGTkKZMFSjyqHYYfkCURFg + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: Y_jy4puERmqtuqOTXgYT4g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WgM9hp9ZSxKZp5sRjGiJFw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: cX7Vcz3BQv-MSiwkw9dZ_g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Xn585rx4T4e6Gq-V5iE7og + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: ADugTJ8gRg-bOPOD1Z4I2g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: CQGJsP0vTRCZ0-n3iaR1YQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: L4zkwW7qRlm_7r9BzLsO9A + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: b42k6NS-Tnq0oqzoge2_oA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: VQC0nsaiRaC1zr3yDWDqxw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: F9-d3fkNTBWTCyqOlOrpAA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: YlQcqpuDTMq_xFaJwuLTTQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SuZgcnHtRRmN9Sx33zVExA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: AM8HH80mTQ2y4B9Pfk1c2w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: YDop8ndNSZCx3hJWGztZbQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WIjz2CInS0uB0zUv8K4P7Q + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UIfuRO3GQwyHgkiSf4QcSQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: R0xEmAQtTiukitwKctGH-w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: UpTr9UAqTyaeJfEyBQYsZA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: ORvR5yPCRTqc2NisSuVVaA + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: GlnNQGFgRvatgmdqH1OuRw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: GIQyE8c1Rta7292g3mG5vw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: d-4JH_bvQDifBG-yYMvR8g + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: c_MEYLlVRZiezVSGhIF9uw + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: LQ0JkNXvQ52gyp9r3w1rsQ + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: YmsrimgGTgikWLOjev8T-w + release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: SNMqTJ6-TXG4Ntg1-5C4XQ + release-eme-free-repack-win32-nightly: cf3mq3trQjSKrixc4SIkPQ + release-eme-free-repack-win64-nightly: SOL75cl4T8OhzCTUcb3TBQ + release-final-verify-firefox: b-EdN5ljRKSfvfOz6CciSQ + release-generate-checksums-firefox: McPLDh8YQXutVQy-Pmfrrg + release-generate-checksums-firefox-beetmover: HMwoTKsvTwm7JHxUb0d6cw + release-generate-checksums-firefox-signing: e1Hmbt8BRFykxt2JvhUzXA + release-mark-as-started-firefox: JvtrEgGESxijh4YloPEyxQ + release-notify-promote-firefox: L3KhRz6pQP6R30Q57YIHmQ + release-notify-push-firefox: Z2knRVp0RFOQznX1T6jJEA + release-partner-repack-beetmover-linux-nightly-aol-aol-en-US: cQHHX0NHSY2l-Yv8Njh39Q + release-partner-repack-beetmover-linux-nightly-aol-aol_desktop-en-US: HOTFYq4kTPWFTptoCoa7SA + release-partner-repack-beetmover-linux-nightly-aol-aol_huffington-en-US: WNpy1LrTROqczrbILBAUfQ + release-partner-repack-beetmover-linux-nightly-aol-aol_uk-en-GB: X82AsffSS2uxRU_ZWo9Gng + release-partner-repack-beetmover-linux-nightly-funnelcake-funnelcake134-en-US-public: FChVob7uTd6sS3GAj8J7PA + release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-en-US-public: OMioDsKPTKaedVU5v3NQtQ + release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-zh-CN-public: O5fOOqa0RsylV3QI17-g5g + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-ca: OEpdGUNaSAy9vjkEiKF2nA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-cy: TjacQelIQMq5CyP3VOEaPA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-de: Ak7j0WJcQam4Raj64acjtg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-GB: B4a-oV1-Q9KVv2pf5-lKLg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-US: RpMfsE1yRFy_WtkTiAZwWQ + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-es-ES: DnkFsRsET3-Ig3lj477e2Q + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-fr: KyZx2chjQMOv7P1-G-tPsA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-gd: cRt1ahpNRHeR79kZ731dfg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-it: ViIpxCQaQB-BvySpsI21Nw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-ca: QeLe5gx3TOORReX6VNA-Uw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-cy: XD_wRDmfQ7WnyD72WV9vfA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-de: IgKeFHVZRb2W8UAfTX0X6g + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-GB: J0eBrV4SR5yDMSUymUeLog + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-US: FLVASylYTT6jLD8lrk42uA + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-es-ES: R7ssoRFNTDSj9v4RL9IRuw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-fr: VKZYChTzSqinL_KqjlOfBw + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-gd: atJPuleoR0GkFfLIJcXjdg + release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-it: cPi2wcv2Q9GcaNeWsPL3ww + release-partner-repack-beetmover-linux-nightly-seznam-seznam-cs: CgjORzvkR_6gcg9TvTbNYA + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-de: MMWbieaESW-_g3HZ5aZ-kg + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-en-US: XZKXZnTzQaiQOI3eVXDCAw + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-de: LJfeXaDBSDOmSoTuH2rNIw + release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-en-US: Qa2OSIYeRiuV9BAFfYFZPw + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-de: XeH2wihYQHOBgr-e8LuvjA + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-en-US: YjYzRNspStmPEZYvlckO6g + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-de: KR3tof6_Sh--1geQIwF1Ig + release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-en-US: KX6dn6gmSZeS7Dt7ZHXz-Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-de: Wau2EfQsQyqKoxrlDN0ekA + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-en-US: ds20s8qdQm-2h6vGcn4LAQ + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-de: AHBXZ8cxS6aELkthmmLIyA + release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-en-US: Hn6A1b1XTzGpPLdOx2g1tA + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-de: GBBAmAgORR6yAYCTUew2Gg + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-en-US: MFX0FA0xQh6JZnSNSS7f-Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-de: T1W1tDcLSk6llsGSbSKY4Q + release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-en-US: dHc1IeKmTU2xNxGjceQEkg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-portals-ru: Sx4IlvLDRI6_jHdszDJ0Vw + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-mz-ru: OwnhmgjoRyuD7ZYQmlZqwQ + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-ru: XiIUDLjtQKWHLxM2CuVAIg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-gezginler-tr: RABS8Eg3TsaPSfaE95EOAg + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tamindir-tr: af4Fn2t4Rcmxld6Q3JmpTQ + release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tr: Xe89ca0USK-powdWoVXZWw + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-ru: Y3g_ogJQSiCjpdGKGb6fGA + release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-uk: BzSxqvtkRjGXZXYarKB04g + release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-en-US-public: P6Ja2uuUQdmtGkxSN9QmAg + release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-zh-CN-public: cssKIiPERP2oLRqK176Waw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-ca: ETVfyAnKQN64oJUXqAbwQg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-cy: bwh0IcHLSUmZxqnkhmoKbA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-de: H4QQw-MvQoGbpg25SUg85g + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-GB: PqSQ-so2Rxe9sU9X2By0uw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-US: TcAszN23TyKP2TZH8_1vRQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-es-ES: FoBwe6ExR9SYHP_OJ3BR9w + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-fr: WbclX02iREymmOB0-MfsDw + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-gd: EKqrfzUCQsSaGSaeTK1fyg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-it: R2E3ZGaOTfm1f6LSAEaAmQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-ca: O93xVMGpS4addmApyV61xg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-cy: O3jHGav9Sri0f1YV8pJz0w + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-de: TK3-YXJbTpSSCNQMHC6pQg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-GB: F1dWSTxETK69B22OJj_bnA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-US: NM76bjS3TbegyztcSIl4LA + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-es-ES: SlmHEv-jSiOvDKeLsTWa0g + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-fr: TvqofSs-SeC4Ee0IOwiplg + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-gd: ADAqSb_jT8WpI0Jqwd76fQ + release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-it: Xzn070FoRlCorrMSe2bFjg + release-partner-repack-beetmover-macosx64-nightly-aol-aol-en-US: LGxo37hWR7O7w5vcCm6gUA + release-partner-repack-beetmover-macosx64-nightly-aol-aol_de-de: MHgACfA_Rsy_aR1uJRcnOg + release-partner-repack-beetmover-macosx64-nightly-aol-aol_desktop-en-US: RYQvanc9RzeJKNQek1Vi4A + release-partner-repack-beetmover-macosx64-nightly-aol-aol_huffington-en-US: SPqCCK0rTTmcm6fiba0j3g + release-partner-repack-beetmover-macosx64-nightly-aol-aol_uk-en-GB: MNKMGqQ_SwyRlVTe7kYzkA + release-partner-repack-beetmover-macosx64-nightly-chipde-chipde-de: JWl50iqySk6K4mS6pPKmxQ + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-003-de: OUoPLe2RTp-gcBC-bsxCxg + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-004-de: bk7RvZCXSjSkJtp5sfYhkw + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-005-de: dfRqoe2ESpiAPQKeeQVROQ + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-006-de: EjK7OxXUS8m_sZMik4Gkew + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-007-de: cD-kLCS8QGKebE5f1AszvA + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-008-de: TKbT0ZiOT2-p3Nqgh5itSw + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-control-de: dugSbKE8QQyI8Kawon4TYA + release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-de: C9wmapcRTsmuUbuwEO91YA + release-partner-repack-beetmover-macosx64-nightly-firefox-firefox-election-edition-en-US-public: fLSjQ9-kSM-J8gJOwRUWSw + release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake134-en-US-public: YVV8prISTkCdyz0mAmkUFA + release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake137-en-US-public: IV6hDCDbTXiVGu0WSmjKtA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-de-public: GEzdaCmPSruxLLAMPMxPXg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-GB-public: EkJwaTJNSeGPTKfZQ6J_PQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-US-public: FcG4pDI_RQaliTswbIZ7MQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-es-ES-public: Tj4M7qNiR1eomyFLmywmGg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-fr-public: GRf_S4-hSQqlSOWbblLCsQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-id-public: PUrNgQwwTdyLklAh8RvV0w + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-it-public: adp5FBsfQs2s6uqIMmHZ9Q + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ko-public: Wfme37H4S7aeMNmhRrDTug + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN-public: Nlob54CMRy2y_eP8NiwqxA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pl-public: fU_cmrBZSjian9dlB9HCLw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR-public: E9g6CqbxSmeAJCzv2OKhSQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ru-public: N_e3sDz2RiiJhXwP0SnJtw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-tr-public: AgU1rgGhSBGQFOzM_SwEQw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-de-public: GpwqtZk-T42AsJ6AJF37BA + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-GB-public: I_Bb5kSHTyqBh2it7TR-pQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-US-public: PvS1Fk_qS_mC2oToi184WQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-es-ES-public: QFH9FzHHTWyUM9X-eO0xAw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-fr-public: EPzEi_IOTXSqpk5wC0uwxg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-id-public: DYhgUU_qSzK1kEVjh3EwVg + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-it-public: EJWdIeR3QbmlFJtHQVTJ6A + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ko-public: Cb9ToHwtQia3bNs95wraRw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pa-IN-public: fT2kj5bxSoORejKvY-CB-w + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pl-public: WoKMQgcLQhiZdMbtaWG8Iw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pt-BR-public: PAJmYqVCQIOCKvgdMO6VxQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ru-public: IR2T9pMjSke3x-TSJOaWxw + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-tr-public: F3cbGExmTa28vnO_XE7fGQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: FRtNkGs9RMqBH7tZHS-KEQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-en-US-public: UpBWrvLlSXWGxag_CmQ6LQ + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-en-US-public: WfHipiriRpia2c7Y2Ca2og + release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-tr-public: MEkfBnjFREyD_NrjmtdlXg + release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-en-US-public: ZEKwv2hNSxmVUa3VXn3EpQ + release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-zh-CN-public: KHkZwXmhQ7WvDeqTYvbFZw + release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-en-US: bsYQIafbQuaPlmEvmoqSrw + release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-ja-JP-mac: c0JWK1_rTnOVP8QnAh_SHg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-ca: KFmryuKNSdeeAqIaPyweTg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-cy: EXXooUbFTUe5r4w5BUrfJg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-de: Py3qzuaoSS2OtwMSrbWV5A + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-GB: WhwdOdpuQP6BRV_9GCqq1Q + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-US: EWo5Kk7VRWWsGc9VLS401Q + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-es-ES: LOdUn8v4T2CRfQp-IrSWkg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-fr: Fgoag_dGRj6ApUfKLgv4rA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-gd: OLnmiJLFQBKxEvo28xgDXQ + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-it: KPOLNz1JTIySiusQX2CiZw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-ca: FvgFeWbcToC5fuRd0wTcHw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-cy: H9DQ5rwFQf-tlHEHnZVTDg + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-de: cDFnYI8qT-KdrRrj8xYwdA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-GB: P96X10efTXSUKQ4LQLgJCQ + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-US: DXIboAgmT8CxeRytW8_apw + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-es-ES: ES8iijsCTQ-BczcFC0hUeA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-fr: FeKQo7e1S26PMAjtCkeF-w + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-gd: DsX0QLixRDCNr4AomSp0AA + release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-it: Qtix8qmJRfidtlMCsSUr0w + release-partner-repack-beetmover-macosx64-nightly-seznam-seznam-cs: DzPiXPrlRKOFAuYbm47log + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-de: Q1tSs19_RJK_P5Ul_uKMJg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-en-US: aK8zIvuHQ_2y-6WmG2bl6w + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-de: DfIo9MSGR8KBiB38TvlyHw + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-en-US: J1fhYTKDRF-5uMH92oGsUg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-de: Q7b2g-Y6S5O8ZWlX4HKF8w + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-en-US: LHaeTLNrR8GUYHtY_C6ByA + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-de: LgpKWrofQuCeL7BomsIs8Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-en-US: NjG6Fon9Qg-fBYQURViT2Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-de: YmuecbOPTLCw-YcwuTXtEg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-en-US: QG72LA8WSBGxs8FX21io3Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-de: duTn-30rQRSt7-zvOXA3og + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-en-US: bAdgStvzTwei1RP3IpAXRQ + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-de: SRgodtcLS0yZzmqC2ka-9Q + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-en-US: G9OVyAaYQSO4HWqcZ0Q2Pg + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-de: ALKwZFJBRnqdJEWfTpcGIQ + release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-en-US: d_co2iEDThCsBvInor46zQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-portals-ru: KFE9TP95SomMc5EcnTXNiA + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-mz-ru: BqJIG2dcThuDNToV0BZllQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-ru: LUy6LDAsQ5OXXDRD2WJLOA + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-gezginler-tr: VWvWb_kdTWGpJFsc9bOPlQ + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tamindir-tr: NMEUlwOBQEah57RZLFbKqw + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tr: SdHfIiSZRQyuDGvSUEEJmg + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-ru: dMXg8-EVSBq-cZ4VXtRM0A + release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-uk: T9Ae0ZnpR_WOvvpwVSZHIg + release-partner-repack-beetmover-win32-nightly-acer-acer-002-en-US: HnFnERSvTHuAZJrAaa8AZQ + release-partner-repack-beetmover-win32-nightly-aol-aol-en-US: TbCl2baUTzS2gIyF1f865A + release-partner-repack-beetmover-win32-nightly-aol-aol_de-de: ERd2B3c7Sl2zNsacm8EgRw + release-partner-repack-beetmover-win32-nightly-aol-aol_desktop-en-US: S8mumgLESMa_t59Rr4BLnw + release-partner-repack-beetmover-win32-nightly-aol-aol_huffington-en-US: TqeIEoalQPaH0E2V53F6kw + release-partner-repack-beetmover-win32-nightly-aol-aol_uk-en-GB: CHBFaQyfRAS85P-Cxf9UKQ + release-partner-repack-beetmover-win32-nightly-chipde-chipde-de: aGvc_IBqRE-9k55clX2Rxg + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-003-de: CoKDg1HAQXeo2KdX4ULVow + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-004-de: KvIXWqEcRyeZorY0YmcoCw + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-005-de: ROBDcnBfSm-Q9Vyp2Qu5gQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-006-de: ckybGZWGRrOKXJnbF_wJJQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-007-de: T92z_tthSxO_A2k0be2wsQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-008-de: TrTEtzY_SLOVwAh0-AFU1A + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-control-de: bck6M4V4QomOPgngmA-uvQ + release-partner-repack-beetmover-win32-nightly-chipde-cliqz-de: TlgaFZ3sSG24vzkyYkY51Q + release-partner-repack-beetmover-win32-nightly-firefox-firefox-election-edition-en-US-public: VL7JV_U_Sx6IBPia-rmiJQ + release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake134-en-US-public: HBRvEoRXQkC2ZScN2yEtYw + release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake137-en-US-public: RQpFkjGTTzCP3tXtAyrUkg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-de-public: LKTXjL1zQOKN1kzwv9jObA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-GB-public: EM0PsRw8QOKJLUNIUGRrbQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-US-public: cTfeFHL2QF-GM6ijYaZRKA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-es-ES-public: U31JSRguSeuzg6KhOxQDGA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-fr-public: f006fG2LRbqSL-E2awIABg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-id-public: Y6HRJxXnTpu-nQakvOKviA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-it-public: FsVyynooT6WIQtS961ELqA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ja-public: Zu3p9qZfTxK0t0VN4IoCng + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ko-public: bGi_ELhlQNWjZZN87BX64A + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pa-IN-public: IwvLA9-ASI61f1TlYwntiA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pl-public: WwHRoIfuSEWBrl2HQWooTA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pt-BR-public: F9uuPBuYQKiYZkfK0Rlm8w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ru-public: Lbt204khTz2Qm78-aZVkbA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-tr-public: XLPiCZXbTdCUkYDu-cjD1Q + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-de-public: Jdes4JjaQb-29v1ZumNO_g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-GB-public: YamlK9gnQW-AwQiCY0ZR7w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-US-public: Pu_4fme1T_6o0dBy2hmY9g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-es-ES-public: A8mycs11RYWefMI2KfP2LQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-fr-public: fUEeolZEQr6DclkJxyEgfw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-id-public: ASNdzfqMT8yAgR7_6myEjw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-it-public: KoCxWjzBRcu_wXQ4nUvbRQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ja-public: cNtJKNY6SQ6l-kABg1ps5w + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ko-public: Aw-qQddhRNysFQ0LK1uJEQ + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pa-IN-public: DTpZjxuPTH-B5O0k7I9szg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pl-public: MARL3XiPTO2rBlu0NumP3Q + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pt-BR-public: MgPPrPSbQS6Ig-61zOv5-g + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ru-public: PRkswFE1S_2JJfoKdbhGkw + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-tr-public: OYFW36BWSxaxX_elAOljFA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-aura-en-US-public: DopENAjrTQa0aH0TvvsTKg + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-en-US-public: XQGT9t-vTCKrILUjY_B6YA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-en-US-public: RgCfCiifQ7eBhGsKo1ZlzA + release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-tr-public: S7Ase0-LQ-axtd9Kr-80dg + release-partner-repack-beetmover-win32-nightly-mailru-mailru-ru-public: L9In81mRTKWQc0QIurbsJg + release-partner-repack-beetmover-win32-nightly-mailru-okru-az-public: batepSucQ3-t_QgdaBDU9Q + release-partner-repack-beetmover-win32-nightly-mailru-okru-en-US-public: TWERo8A9RvCpQPMNE8EYNA + release-partner-repack-beetmover-win32-nightly-mailru-okru-hy-AM-public: MPSJhc9tQUKMluQvTFDfxw + release-partner-repack-beetmover-win32-nightly-mailru-okru-kk-public: NHq-6xTgSr-YJKZbBRtfWA + release-partner-repack-beetmover-win32-nightly-mailru-okru-ro-public: PG5A1ISoTVKE-sxhRxfECA + release-partner-repack-beetmover-win32-nightly-mailru-okru-ru-public: Reh7uNPGTNKOM1zF5WWekA + release-partner-repack-beetmover-win32-nightly-mailru-okru-tr-public: DhGQvy2NRq-2fZvNZKZkeA + release-partner-repack-beetmover-win32-nightly-mailru-okru-uk-public: BfJWu17NRm2TWumZ_Zn6vw + release-partner-repack-beetmover-win32-nightly-mailru-okru-uz-public: UQWm4_-uTmuE_1UdnfMpyg + release-partner-repack-beetmover-win32-nightly-mozillaonline-baidu-zh-CN-public: LcAIKN9uQ4O8p2gjnh3a9A + release-partner-repack-beetmover-win32-nightly-mozillaonline-kingsoft-zh-CN-public: WVHtWryiTf2vmU8mjutqUg + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-en-US-public: SHFroZr9Rkqw0EWEd6WeZQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-zh-CN-public: fNB4p9wiSW6PPRTPiQe2Sw + release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: QdD27iZnQKaRsH0kkuCNLQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-others-zh-CN-public: aCbNZmydS86hzeT4FgO2hg + release-partner-repack-beetmover-win32-nightly-mozillaonline-qihoo-zh-CN-public: LwmLcZuNRtOFY77ZVws_SQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-tencent-zh-CN-public: UC6ilBpLTBq3oMY54OFFhQ + release-partner-repack-beetmover-win32-nightly-mozillaonline-xbsafe-zh-CN-public: An-gvxe6T5WqKSiFTODQ-w + release-partner-repack-beetmover-win32-nightly-mozillaonline-zol-zh-CN-public: XkEDv3o3S9a_l9eJD_uRcA + release-partner-repack-beetmover-win32-nightly-ntt-ntt-en-US: R_-VzghBSrC3hmY1mUV70A + release-partner-repack-beetmover-win32-nightly-ntt-ntt-ja: RNcZkZTjRDqblMSVxsOXlg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-de-public: e0O3M1ijT1qCOkvt9pcNeQ + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-GB-public: Ar9iKCMkRf2xL3jVi1Spbw + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-US-public: Y-x3uqLGQ-WlnqEv3yPHWg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-es-ES-public: anXH2XO8QH2Pagqi-AlJwA + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-fr-public: b36bYlzMTnCn3mTGqAktbg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-it-public: RHHXtV8fTZq_L8QxnzTBzg + release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-us-en-US-public: SzJZWPbSTRCW81D8tUEz0Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-ca: NOCVY7wITcSW9lofhedxKw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-cy: XpxntXjgSDKv2Hyg1U_ftg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-de: YdtdKm-iS_aiLmU5W6KiYg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-GB: KkE0ZRXpSFecbrRijxSkRg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-US: dgw8KQbVQhqTiZ2PGoUP4Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-es-ES: NY61HGKKTeWNpk1izw7Igg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-fr: dUipTfysQHawNop3HX7L4Q + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-gd: LvvRgYmLT1aSExIQkIdPVw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-it: Kbi5pm2yTfK7WjhsuuXE8A + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-ca: c51un2uASoamuzGu-tY0Sw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-cy: TDIfG1gSS0uiyW4T8gl_MA + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-de: NH4osUe7RBCKsRzGAwjaRw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-GB: ZjQzpfttQoqBAdo5avl0Gg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-US: fhZGjF1bRliKsLan17uDdw + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-es-ES: aXe9VwdcTMqiIj9at7FcLQ + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-fr: S9Jy8ilWQZ-VtbFH9NeQwg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-gd: B8Njp8VqSvKE4O0xEIGQrg + release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-it: SsQp9MzfSx2lf2ciVJc-mg + release-partner-repack-beetmover-win32-nightly-seznam-seznam-cs: dKCi1hueRWKYYz9NtUtN4A + release-partner-repack-beetmover-win32-nightly-softonic-softonic-de: a4H-gSVURQGKmdBmYMmMDA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-en-US: AZ8lXf1lRd6ngCdiagc9Pw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-es-ES: Rae6s-K0QeC7HfiikiFb0g + release-partner-repack-beetmover-win32-nightly-softonic-softonic-fr: VKoRlQLVTgy-ZKyBdV5WOw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-it: Icm9IpkqR1imR1nliI2vMA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-pl: BjGd7LPYRBKXEqbRwG00gw + release-partner-repack-beetmover-win32-nightly-softonic-softonic-pt-BR: H-plcK4sQha8zkMJ7ektPA + release-partner-repack-beetmover-win32-nightly-softonic-softonic-ru: MaJGBVgvQXSjIN5v-jZITw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-de-public: FMO8xxV9SpGr27U7cA3AvA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: SkIPWe3XROu9kgzIb-J10w + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: GyiHuISIRTGeFH5mKLhPkA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: EUMAWk29RNSMZWTbLTKlAA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-de-public: axhrW0gySBGHL0uDmfzwRw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: DrpkNo8SQJqXnj1qVQNUpg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: O_YnhNtGS1ajmt75MOkXOg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: Exg3_o3wRHC4Red_yuYi0g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-de-public: YP8R8JdcRqanuePKOfzw7g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: HRy8urgqQE6UeRG3f4MGyw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: Zi6HMv6CRpKaf_Itz2XkAQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: AITGgz9dSw-K4vf-zGDDzQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: RGzIaKdJTJCxWM-8KasH4g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: FlVXGtRbTC6mNWP4zUhObw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: IqUdFkDlRX6B4BsGgPebKg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: fg3z7gs8TBuzmmdq2zPDLg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: Gj841P_tQQWEp8OTdyXdCg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Oooe7GlbSxC0qWCTT2kTLg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: G2ZIsE0ZSqeeFVOoWMQJZw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: S-oEVsoTQlKDEmtaXPFysQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: W3pqeYhPR16CZeRUFdSIXg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: RzJOL2fLRzK2GbKOZvD-yw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: SbIBS_kwS_qU_hLtxOyp1g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: dHylJgeUTG2TXALQ3frzAA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-de-public: Mlfa_zKHQ0CAd3UW_oLviw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: DUGXU6elQ1KBfS_doA1lxw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-US-public: HbYuVDSGTF28ETZIsSElnA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-fr-public: BwRthjc4SBevf2OchAuNWw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-de-public: GaQuMdWKSWerOnSIbQCYvw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: QbeWsWvJSvKBjonWnBVFug + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-US-public: arw05s0XTGCs4-UHWhvdyg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-fr-public: IydGIES8QK-oEu0ScXX-cg + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-de-public: RMMNhUOySRO1H4lj7uuM0g + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: eWN6-QqtQtie_lguiXoLgw + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: bZb-PyJeQ0OJ0y8FxTrN8A + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: Tm3Xw5vfQ7OJk01H2-GG3w + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-de-public: DEm0sYL3QmCEWPpQBcNSSQ + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: CwthOZ_XTba-y2p8FrpMPA + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: LV58jHQCQPiSo2djTJmw6A + release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: e17U1TBATN2SpZipLqY_qQ + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-MX-es-MX: ELlNoGY5TNKwDz3i7NH5PA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-US-en-US: GQNUW7oGTtSwBIsuLMcIbA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-b2b-JP-en-US: CkET61BAQ-ys7QFQqIAnRg + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-B-US-en-US: TCOVwiQHTz-roR97EgiWog + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-MX-es-MX: DX9wDTmCQqCs1OtHh6d6sA + release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-US-en-US: Z1WGjIFBSOWTJnHjkO39SA + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-de: ddEZQA_1SaaLx7w43AYBTg + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-en-US: BvPjfXNCSdanfa5eBuhhiw + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-de: GrnXhdYnSBWijvJrxny1Bw + release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-en-US: A6M938oLR8KVTgPeLkYCsg + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-de: d5r8e-u1TEWv7Il8nU64ig + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-en-US: EmrjTwtAQu-ep3va8l-BYA + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-de: bC4nvoPdSWyYFUJyjiehkg + release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-en-US: e3rFFS2NSQ-eEBLf5hzpkg + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-de: VMKA694DT8-LjTOJi5ZEHQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-en-US: Y8Axfz10QxWTYtEbyhnY1A + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-de: WYSAxtWhRI2Aly0NV1Pa4g + release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-en-US: exdF4-X2Ty2tluEqfFfXfA + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-de: ZGIC_uVvSu-zM5T5sX8JtQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-en-US: ENbofKrjQvqNomETN6VwQQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-de: VtPZzyUrSfe7oJCk-oonYQ + release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-en-US: BmPs6i8tRoqtFv7DA8UO8g + release-partner-repack-beetmover-win32-nightly-wildtangent-wildtangent-en-US-public: SxgBS0HMQwewn73Wf9uhKA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-drp-ru: f83cTx08SOCAEZ9MtI6BRg + release-partner-repack-beetmover-win32-nightly-yandex-yandex-planB-ru: ckMdxeGaTOG0AfSj9sMttA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-portals-ru: LE6NZCyiQ8SYWPS_eYl3zQ + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-mz-ru: FHf-MVGQStunXu5GQ1bDQA + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-ru: dSHraoq8THa19WQTSCFg3w + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-gezginler-tr: f9b_elHISlGCAFaovMVCiw + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tamindir-tr: Qqh-VmMST7yMbBvwj7aLbQ + release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tr: Lej8LZ7MQ3OTfxeQHEWkzw + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-ru: K9o3koH8RTyakuynD5Hibg + release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-uk: Ebv0z7EQQTKqhM8tG4ZIXA + release-partner-repack-beetmover-win64-nightly-acer-acer-002-en-US: dMSPPs16SceNIEuKfUtbZg + release-partner-repack-beetmover-win64-nightly-aol-aol-en-US: RZI80m2iT06v4JitiFTXXw + release-partner-repack-beetmover-win64-nightly-aol-aol_de-de: Pk32T1UHTduslx6WWSa4VQ + release-partner-repack-beetmover-win64-nightly-aol-aol_desktop-en-US: cFkKluN0SxOWsP1taxjkYQ + release-partner-repack-beetmover-win64-nightly-aol-aol_huffington-en-US: OfHYKwj0TlKJXUijxOrYSg + release-partner-repack-beetmover-win64-nightly-aol-aol_uk-en-GB: EctuiYUFRD-rCrOIM8ntEg + release-partner-repack-beetmover-win64-nightly-chipde-chipde-de: c40jasziQRy71Qebjf45DA + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-003-de: eYroXbJ2TLWOQhO3KmdRmQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-004-de: Sax-W_iETw-FnXSmqVWNPQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-005-de: GTNx6IxNSdeJJg_gDAld2g + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-006-de: EKEEw0s_TsO6xOWxWTfx3A + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-007-de: dvS6cVqoSmmZ-sWK-cNEjw + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-008-de: IGz03s2RSzOa81zzSNaVQQ + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-control-de: Y2_Cd5UTSlyTz8n_Esi9zw + release-partner-repack-beetmover-win64-nightly-chipde-cliqz-de: UpY4Z7boTpiUTBAO9HkI3g + release-partner-repack-beetmover-win64-nightly-firefox-firefox-election-edition-en-US-public: IWTgiVM7SjC2CWGMzfy6RQ + release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake134-en-US-public: M6b01YkUTfWhlq6ylzZmBQ + release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake137-en-US-public: TLaQF0bNTbaozjBY4E5y2w + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-de-public: Nj29R1vxR-qa0q7SO2M-IA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-GB-public: Qzkwl8cYR8qQbyprHQugTQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-US-public: bhe8QICQQpapN6YYf7bpoA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-es-ES-public: UYapZs9uQL-RpFdJg67WYg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-fr-public: eS9aHqZhSFK1FcD6P3ovPA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-id-public: Jy7Y8vdGTQ-aItAdL-PZoA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-it-public: BkQrYZrQT_SqqHa2kPFbnw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ja-public: HbCtfPHqTxezNC4a3jtaUQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ko-public: dJA-bzumTdmc30aUCKgWvA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pa-IN-public: IZaU-iuiRjKdrMfstzqsNw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pl-public: Sp05Y_ceQHe8WKcd-Lstcg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pt-BR-public: RQKBl0d5TESz5A7tBlUSrA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ru-public: O0GrdZa8SrSnD156S_eTwA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-tr-public: RNQWffZVRSqji8kf_3j7TQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-de-public: Z20m3p4ETRmJsk2YhwzA8g + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-GB-public: dMEAUZ4xRzWLhzn8LXvFug + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-US-public: QCV4fi60RSW_d_Ugtd0tzw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-es-ES-public: Im23RIwESsWkGkYcoUSF1w + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-fr-public: ahvvWMhqSJ2n0uz4AD-w6Q + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-id-public: JbouLxJFTlmwKyw7-rG3Dw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-it-public: I9gjpH5IT8uN9XfZxR9AZA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ja-public: BvYEyiwDTZOacIvaPr7RWA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ko-public: C9XMFM9HRyiuG6CSlEiqDg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pa-IN-public: S9IpN2ITTlSTgGGj_mSZ6Q + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pl-public: JoooizHVRx-Zbp1HNECDGw + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pt-BR-public: WRYOS5n4QWitxNjIK16kiQ + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ru-public: IyyZTQWDQhOz3oVx9JQ-IA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-tr-public: QdVinVsLRmOl_fSuszOhwg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: L31DKiwqSB-vM2oN6jtLrg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-en-US-public: CkK_p0wwQoqF3sGLyowJmA + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-en-US-public: fwKMZhhKRSue18s1uIDfLg + release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-tr-public: NdwJZJ_XSI-0kQUyeUdzGQ + release-partner-repack-beetmover-win64-nightly-mailru-mailru-ru-public: SEC1Os8NTuO5vvawZYPnuA + release-partner-repack-beetmover-win64-nightly-mailru-okru-az-public: V5RxPB4UT_-k864B7XA3cg + release-partner-repack-beetmover-win64-nightly-mailru-okru-en-US-public: JrSfNj7VR4aJnZpW0Ql_dg + release-partner-repack-beetmover-win64-nightly-mailru-okru-hy-AM-public: d4l66IL4SS-FRHcNwdk-RA + release-partner-repack-beetmover-win64-nightly-mailru-okru-kk-public: Pu_qm-6cRNmppXTkmBv__g + release-partner-repack-beetmover-win64-nightly-mailru-okru-ro-public: OWmt0XuMQkW5gaxjKAx0Nw + release-partner-repack-beetmover-win64-nightly-mailru-okru-ru-public: W6eknarQT6GJSUHoQsT3Tw + release-partner-repack-beetmover-win64-nightly-mailru-okru-tr-public: TaKiH74RTOyL4kGcTLTesQ + release-partner-repack-beetmover-win64-nightly-mailru-okru-uk-public: ebp_T1LNRLSlENInkvjUEQ + release-partner-repack-beetmover-win64-nightly-mailru-okru-uz-public: e6yokAjmRnSMChwWklJR5w + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-en-US-public: DsH5tr1cQBW2Gx45hxqZhg + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-zh-CN-public: Z07uGFiCSzG2ZjFS7IwzBA + release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: MtF2dFF5TVSXLItr6ajvUw + release-partner-repack-beetmover-win64-nightly-mozillaonline-others-zh-CN-public: Q7SWXvJkSLG4-W5MNclHiA + release-partner-repack-beetmover-win64-nightly-mozillaonline-qihoo-zh-CN-public: Y7uhFyzhRYGCe1BuEU6XaQ + release-partner-repack-beetmover-win64-nightly-mozillaonline-tencent-zh-CN-public: UGg3ZshcSRqM8RI0zgZ9vw + release-partner-repack-beetmover-win64-nightly-mozillaonline-xbsafe-zh-CN-public: LFm7bz9hQtqkUs-9aIIJQQ + release-partner-repack-beetmover-win64-nightly-ntt-ntt-en-US: XiCIz_87R9GuDIyZNXHxbg + release-partner-repack-beetmover-win64-nightly-ntt-ntt-ja: EzFeNEwWQLyJpSic37X9Gw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-de-public: bl2lb51QQjO-fn-auWRyZQ + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-GB-public: PiSKQgS-QEy4NUGipyzB8A + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-US-public: HqJt4Vz4R7yyhP1TmrQjJw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-es-ES-public: DDjaooDEQAqCTWkFAKkYvg + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-fr-public: JOAGwMoGS8y5ldakExfeJw + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-it-public: fqm8GWsAQMuiewOGFNFvNQ + release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-us-en-US-public: CQe5eFbFREq6K5WyMEJWjQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-ca: FBBT92_PSySY_NuE6UbzWA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-cy: ZyGvwyC1RzifKJSVu8dy4g + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-de: Wfy5XUvyTP-CUIJ_BM1riw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-GB: GEKAFz4MSkmuwjZ0ufkqtQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-US: Nu20aPbdTSOVV-zwzMTrVQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-es-ES: BeL-58rLTQmEtzc0E1Ut_Q + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-fr: J3tVEj5MRSSSXZapxqTSCg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-gd: J3r4Sf9YT46HXL42GsYKqw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-it: N_LIZPKrQpKa_nceOwe1HQ + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-ca: QPAx1VA1ROurbO_7ZEb1nw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-cy: b-R32c3cTm-TSlMrmScQOg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-de: MgV-IVoSQwqX_rUWgcWLDA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-GB: WHOm-TttS42okKv8CooiZg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-US: HljGQ4KfTp-52QdcWtqy3w + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-es-ES: LysQsoXITlCVnG2DHzD8Bw + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-fr: Jjr__pAhR5a_xdxelV0duA + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-gd: N8DsMRHWSzOnhGBs7SOSUg + release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-it: D_FJcnVeTfCrp_EOVbVGBA + release-partner-repack-beetmover-win64-nightly-seznam-seznam-cs: cPMMn4A3RQuWrXBaWKQb0A + release-partner-repack-beetmover-win64-nightly-softonic-softonic-de: PzJWCZeNS3ayXdW3gJ8aTw + release-partner-repack-beetmover-win64-nightly-softonic-softonic-en-US: aFqMMpzVTeGiQ86Kbz7qsA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-es-ES: dfF_kts2R7CRUuNUCAnbzA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-fr: BlFDu5yTRL2ACGQqPK_IlA + release-partner-repack-beetmover-win64-nightly-softonic-softonic-it: FSKkdTHBTzekJ91ylIs3Pg + release-partner-repack-beetmover-win64-nightly-softonic-softonic-pl: ZK_R38msRe-OYjBbSkksEQ + release-partner-repack-beetmover-win64-nightly-softonic-softonic-pt-BR: LoBoZEORSx2HoEddWapBXQ + release-partner-repack-beetmover-win64-nightly-softonic-softonic-ru: a1Dj7M-QT5Sgwwbiz9q6EQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-de-public: T3yU8L2kReKrLm_oBTNxuQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: f81zlstYS9Sk7eI83drClA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: BuWewCVVSoSqO2oocHqLrQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: dvCYashmTLySbtZbAfM8tw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-de-public: FabBNM9JQWKl38WowdGZpg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: e0D-A1sHQhKCQD_cVXue4A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: bvRDY0LTRleqg7hsMZD2lw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: eNxQA2rSRZyWEDgV9yew7A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-de-public: MgdHif8ZTJm8NDc2j87aCg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: b1EzO0NpRLq-f-nh6NKMIA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: HM7t_AzKSHSG_fWmBXViwA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: ClkE0u9dQ5Oi1V4aAg18Dw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: NqvYvaYHSaCLqRJlIA-nxg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: DX77XEqcTGKaRuF9_iLPTA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: XkuH5373SK2vmxuPmh7LPA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: ZvGBlB4bRKiCkYEw6dtBXA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: FGl9bvODQu2mqtZy49QNvw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Ke4jIgOARsmWGSVWHc6pJg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: aDkAl2YSTjOL-7WzrZO2hw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: IYiKHxfYTFuWHRUdcDmvJw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: DML2EoeXTDOmJIItZ3C76A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: Kp-e422FQeGC8ITZikQfXg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: E0Q02kRFTdas5ziB8_T_2Q + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: Zw5uXlJvS3W4J-eKOpRtjw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-de-public: HnuxBaQ3Q4mk1fzic9FiiQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: eHxi659ESVyqsnL2TEeEIw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-US-public: BmAgJt3QRTWANZ8Pwy0mJA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-fr-public: NJIQ4rBERU6NFh2m67fWBA + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-de-public: KqQrefSuQ2mwNWfC5O2zGg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: FLtLcd1yQqy1vSJIk2osHw + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-US-public: OKCS5BZESI6xd-vZ_BB0Rg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-fr-public: BeqU0L4QSxqE45y5xSbBPg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-de-public: bguKTodhTnu6p7hj_xaIrg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: BdPsIwSaTHGXWZwgK3P7fg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: Q4Og0UoPThK4Dn3Cufe74g + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: PJ4a3_HxTHGvVp2D96QN5A + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-de-public: czBvsvmHRayMJzh2xJ0IpQ + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: WD8pu55RSgycpKROmSymBg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: UjbKbAJ_R9KRUCnPyIJtNg + release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: QporqiJjTPibDjPgd4LxJA + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-de: bSz-LqvmR9eeVLarDBYk2A + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-en-US: fMVKsPCPQWOoHkRqoEFSxA + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-de: LcCJSMvmS3u7WNSnF82Omw + release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-en-US: JmP8Rz_JRNqcS0-n5UrZRA + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-de: JzvYvXs0QtG8lDq1pwSYZA + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-en-US: SdVEmNFITwecgpT4nUuzuw + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-de: eORLffr8TjWBcn5M9hlBew + release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-en-US: SPkDYDmaRQ6b6anE8PGXow + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-de: UH_s8qJERumqqD0FIXedhg + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-en-US: c5ZQpNFER_ujPETmQ1659A + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-de: IsNI9uZKTWa9921dPkk5eg + release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-en-US: Xbp9vpmRR0KFAgOoHotUpw + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-de: J9CWv-x0Rd-N1cOBIKIoDw + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-en-US: DiiMu2t7TbefBT5cQ0uZBQ + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-de: MgMn4fWmRxq5yWSwEUwkEQ + release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-en-US: CVR3LEZJQXCGHJSSeqKp4g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-drp-ru: fw9jGkwtS2mhtdgg8fK-mA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-planB-ru: SYhB2A4kQFig4RdXvMxX7g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-portals-ru: cmyyg1NtSW2hy8v1x8hCiw + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-mz-ru: UzIDPvbOQd6izYhTANQ7OA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-ru: VWMR2NB1RRSZWbH1zWZQcw + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-gezginler-tr: WkWfzAT-RSa2eHxMK71AwA + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tamindir-tr: HBYQ4YEmRb6yeiWMz2xUKg + release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tr: LCSe72AoRpy6aPmyR-9ptQ + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-ru: KBb9BmdnThKJqDPh_XL21g + release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-uk: R6ShpAeMQmeN5f3ta5zRWw + release-partner-repack-chunking-dummy-linux-nightly-aol-aol-en-US: Fl4h6BC3SwaKYLiTwhUT1w + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_desktop-en-US: WxWdFF_hRjCfX7ellm8AxA + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_huffington-en-US: IbZ_9NTnTW-aE0YxnJjmxA + release-partner-repack-chunking-dummy-linux-nightly-aol-aol_uk-en-GB: IEn7b9tQQuyMTAt54Iy6yg + release-partner-repack-chunking-dummy-linux-nightly-funnelcake-funnelcake134-en-US: YJn6BqduSWCpW2WXhmlM9g + release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-en-US: cidFWd6oTQK86psDSczbHA + release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-zh-CN: ASbrmNvdRT-4N5ByXSehWQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-ca: G0814a4TQgSU6NjRCjDaVQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-cy: Kdy612q1QP-0GdFjDin7rA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-de: fdZ3PGDwQWO2D0olKp_v9Q + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-GB: FEU35DS_StWNEABCAvjCcA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-US: apEUC9YgSVi1rCLhVQbaZA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-es-ES: PoHzU7j-QRyCJ6riX1-Vow + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-fr: DWsOMlNNRm6g_ZzEs75MeA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-gd: dFDKzmy3TF2B9dLJqbEBYA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-it: KtN5S2eqSUyOTdpgITg_LA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-ca: PW-mLeUMRcyVOHE_qkHLSg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-cy: PNkK9FZuQ223vGyKy-9rJw + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-de: SjyQjBS9QkyJUDSpu2DYrg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-GB: BEQTaMFQQLaGMydwNYUdYQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-US: WjzfALMdS02PWHaKqRZjIA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-es-ES: V4Yf6DLQTrSBhj_ZzQ6nrg + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-fr: STa4Vhp8QGqXLb5LpvcogA + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-gd: JZRSsT6ZS7GFHFSP59JkgQ + release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-it: PRf-iVugSuKzrVhL6cmaWg + release-partner-repack-chunking-dummy-linux-nightly-seznam-seznam-cs: Bvj_EU07TI-rN7MsY0QVUA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-de: Vu67oEMTSQS530mVijYvFw + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-en-US: XWVcZ6zeRWO1xQkcphOy4Q + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-de: QWaMxE-AQgegwkl59BpBEg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-en-US: WB5nB27PQy2gKTTZJWYyQg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-de: Yc1jYejGTa-FnZVFu63uMQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-en-US: VEjcR3XIQPGwz_8kTAiVBQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-de: Zbl3lcEjTCaLUPKj7SWqPg + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-en-US: Iz_Z74DjRP-BTO44sXTQyQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-de: By3IrHyFQeKLlvAF9Nv9qQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-en-US: T1vC9oxSQkizoUCMMcDf5A + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-de: RScYNwRVSPmwOTgJ2XtGaA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-en-US: QA8uGrNWTY2FkL2ymIXeQQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-de: Jszyh_lvSlSzQy7jU7hQqw + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-en-US: EzB9tSGWS6mU3HL8nD1CgQ + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-de: agf3o9pfTpWydU699tgQMA + release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-en-US: KDR0sFYtQmaVIzd9-op2Rg + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-portals-ru: DxwlUCEvR2a3At2e7J6ZXg + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-mz-ru: d0kY5vnoQ1Sqe0z51WT2mA + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-ru: HYY2jNi_T12Yz1zmOKZ2bw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-gezginler-tr: C4lH3A0gTKi_VS4KQ82ZTw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tamindir-tr: KIo9d1qXT8eOjxylNBZBFw + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tr: Dpe1934eS06dtgjhESmAgQ + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-ru: FaGqpRoRSGOhkOK0UR4RkA + release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-uk: dfSr1x1LTuGHCCDFqt1wGw + release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-en-US: FadnvUO4Ti-9OAL7qwRrFw + release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-zh-CN: QCh-fvHITk6yqL7NiS00gw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-ca: TjQvz95wQJWgYnJkFXWS8Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-cy: Kl8n-mFCScG5f-fMw5Qq-Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-de: DevD7YtSSF-CGWbrYI4Ntw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-GB: PNmRY94JT76Ejl5yYX3HFQ + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-US: VhHtTtCPTdGJlyGT-jPsrA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-es-ES: FMQ-VEm1TuaPtDgyqF7dXw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-fr: VDIxeefNSnCdBy6N3D8I_Q + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-gd: MYjDhbJ5TgK-38Z--oDKHw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-it: f8tprk0hSf62fEPhqbavLA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-ca: cDgrdvfRSZCO-2wSGwSqRg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-cy: UD8pSzkHTH6yH-gRGWL7eQ + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-de: JrprVawUSUKsOL1as3QbWg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-GB: UrPatzeQS4OJf7b2ri7yLA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-US: BWc417QwR5yDSRQ25xUONg + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-es-ES: d-zMXurYTpSjTJhw6laTjA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-fr: B3OYCWKNQCuIufOuS9QuyA + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-gd: Av0UiDEvQKCmqTLKLXA0zw + release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-it: LUlPCcopScS0asxdkiLRfw + release-partner-repack-linux-nightly: UO4uplgdSbap_5QpagWAtg + release-partner-repack-linux64-nightly: f8mgMXjSSxad0HG35CnxDQ + release-partner-repack-macosx64-nightly: SzpeIMSDTYeSpGWc999qxA + release-partner-repack-repackage-macosx64-nightly-aol-aol-en-US: cZW-czE_TMeE6ER-THQHcA + release-partner-repack-repackage-macosx64-nightly-aol-aol_de-de: Klx5x9wJQ3Gp4VhzWxllig + release-partner-repack-repackage-macosx64-nightly-aol-aol_desktop-en-US: fFIRDguaR9a4yHbPQBxuiA + release-partner-repack-repackage-macosx64-nightly-aol-aol_huffington-en-US: HjF5gacFQpaEfbt-xCEytQ + release-partner-repack-repackage-macosx64-nightly-aol-aol_uk-en-GB: EluUnY4FTzSNqNlzHXyT2A + release-partner-repack-repackage-macosx64-nightly-chipde-chipde-de: FBWI_sOmTuOpM19WMtkTIA + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-003-de: Mnc6tMkyTkCIJUWmqC8Blg + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-004-de: d-ZeGR3xR6mt7Z3E3j6fRQ + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-005-de: cHX5HFTfRCub4eHZt22UXQ + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-006-de: PziUMlaDTNG61yaGRuhe6Q + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-007-de: PwcF0OMjS7KoH9_tCgyIgg + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-008-de: bER4g0jJQKCv1MpeGH_MZw + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-control-de: DCmH5TDbSNiqsvQ0lQ-Exw + release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-de: FRXzg4O9Rsa2IktaG7C3Nw + release-partner-repack-repackage-macosx64-nightly-firefox-firefox-election-edition-en-US: AeCg8JyYRQawGNKpSzeu8Q + release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake134-en-US: PKAlXMUKRtWnIwKPXkhRHA + release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake137-en-US: MNn45cg1T9iGWNOCsi8VsA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-de: MDgKzekrTn-M0ADySHU2fg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: PqWEHhBAQZG0-jgA50ZeqQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZOB6-qVwQD2RLmXc6Tzplg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: BsxSTWS7T9GPDcpbfXTkMA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-fr: C1WxDhuuQo-a8xRNfkyqrw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-id: XR-ZTJPqTyKiPZXg2sPkBA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-it: PpnTB5RfTPSQdUO_S_45Rw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ko: GMafq2enTam1vy_4MdLDUg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: KqGinlJcQEaxW4-6IffNww + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pl: DGkoViLXQ-aFNdv38nrR9g + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TXNkI77kTaSO0q63sdTK0w + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ru: TDhUOknFR_-PBKUEBs18-Q + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-tr: VlFJRofOSVWkWbvmoDXReg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-de: M3F3eGtzRImPwA-nKbkILQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-GB: fbDcAZcVT9mcwjKzFeGQPA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-US: CO2XRa5XRIicOn7l_G8JTg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-es-ES: Lp5SzER7R-2tHixqB5fOUg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-fr: K6MuyJW4Smqv14H1FtT29A + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-id: asdCp65nR7KyMcDHqN88Bg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-it: Qip7bL0QQ9OQ01Uk3zZzqg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ko: RBIxsdNCTiKpMXq97MGHAQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pa-IN: IkCXosFPT0m6B124I7PDcg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pl: N3m-SYN3Qn-02Kyrc_PTAA + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pt-BR: K-ra1l9LTjuOJkwUOU4exg + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ru: fvi5Q5wIQ1uWYZvict7Jig + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-tr: VvLHNkUUS1SyMrLmnHveDw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Gw5a8KNcTluBuJdCvDIibQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-en-US: X69bdqf_RaiDyjEMYCTyJw + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-en-US: Ep2J2L9WTAy3Q2e_iCVjQQ + release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-tr: DbILlvm0T5-fqIccfO_QgQ + release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-en-US: N5xwjXTtRtmwfnLj87MdJQ + release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-zh-CN: KEv6U2JrRyOxpWGaSvViEA + release-partner-repack-repackage-macosx64-nightly-ntt-ntt-en-US: XiRND8a6Q3et0pl7NExR2Q + release-partner-repack-repackage-macosx64-nightly-ntt-ntt-ja-JP-mac: NlQ3gqM4RXKPOXTnpbdo9g + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-ca: azxF_70HS7y1mEPeH_lMkw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-cy: Hm9lQXgsSVuXzbrmk7X0nA + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-de: fBSKtepRSbKQZVOuaEKJPw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-GB: LyWK1ZqkRHqDRQ8nKlL8kg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-US: Su3NtxirSSqBKSPeuwuz6A + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-es-ES: MkTFT8SVSta0RRYNHuTJmg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-fr: BiR2QFC_Q6ux8jreOM85xg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-gd: f-3HWh8cSPqjN2IT_MR0IA + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-it: TlYxU8AsTxWmFVyJ0tA02Q + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-ca: AQ8Z07ZcTZ-rbqp0HHzfZQ + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-cy: ENVbIUsyRL2A-rPHaGPz5g + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-de: NX6EO8tWRga9XPxV8aerdw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-GB: dtCWtYPnQ_mWdxw-lmyvAg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-US: M60-S97OSdW4AmZ4tCMahw + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-es-ES: TCf6fz7LQXSbkQ5QOy5Uvg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-fr: Tm7Hp8hDQYKdNTCq55kyDg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-gd: UhQUm0EUQ6G32mTqmJtpFg + release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-it: PEgJHiuHTymthsW-1-IuHg + release-partner-repack-repackage-macosx64-nightly-seznam-seznam-cs: fLe_59oERT2lOFHfcnu-fw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-de: VigDGwSkR2y74yUZtSeAqQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-en-US: Nq6ggH_gTZ6QQERWuvp0Mg + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-de: f_C6tcW2SwSx3pKftcpywQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-en-US: UKhPQR2gQOSz8fcOlkBQkA + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-de: Mp628RbBSquvNYs9AnxQMQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-en-US: KkEKpaipQRC2Q9Kv5IYvEQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-de: MUqfp1U3Q5WVIsFvoB-ykg + release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-en-US: KsDtTDaLS7eG_pew54nVag + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-de: K_Q4ZoinSL2IT2KpNYL1ig + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-en-US: e5EwmkVYSDuKtib_DffhOA + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-de: RHiKJ_x0Rtiacg6iVDE6Kw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-en-US: Z9-aA8nwR9-_SnRaxKuTHQ + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-de: LVg61mxsSjiz8qvI-E3Zvw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-en-US: YJHJJQaDTA-sjbNTpjZu_Q + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-de: Rw8-CAlQRXuGH1iTz0Vebw + release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-en-US: CRc39GuQQb-jU7HqmpvjAQ + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-portals-ru: Z1DLLqEyTH2vPiwHIzBl8w + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-mz-ru: aYJ1f3sLTru9kRwkm6uVtg + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-ru: L7pL8ev6ROqO5jljAsIfUg + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-gezginler-tr: DXbZXfLVTky9wvp5ARq2nQ + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tamindir-tr: e_DJ1jl9RkeVqqXXhxa2ag + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tr: ZVZne-avRheffJDwQ7k3_w + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-ru: JVgSbvGgRqWVZFiOVs5ZJA + release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-uk: dpfjrTKsT32j4EBBpMV_kA + release-partner-repack-repackage-signing-linux-nightly-aol-aol-en-US: fmfyjBqiSnqgvLhYZjqx7w + release-partner-repack-repackage-signing-linux-nightly-aol-aol_desktop-en-US: O0An4cBORUilylitG1L6YA + release-partner-repack-repackage-signing-linux-nightly-aol-aol_huffington-en-US: Y_c74uPhQWSKBzbKBVkXSQ + release-partner-repack-repackage-signing-linux-nightly-aol-aol_uk-en-GB: BoVGx-5tQ2m0s-j9UQRdlA + release-partner-repack-repackage-signing-linux-nightly-funnelcake-funnelcake134-en-US: AzPsfV6AQaWGzVFGZ2P5TA + release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-en-US: YeyjMIm2TuCdUEhjjbhKNA + release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-zh-CN: a38VmAACRKaPpYS9vWG-5Q + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-ca: SFOOeMaAQ-2UXWNYM7_KZQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-cy: ZzlAFM5oS6edXV-UxaxKBQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-de: EytL054jRI2oEW3iTGXRQw + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-GB: e4rKpCU5S9aZp8rLWnYU_w + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-US: Yk7eCqZcRHK7aSWZ2xCOZw + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-es-ES: WcCnTaTLRBqTkR3O00R6eQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-fr: YQnV8IxTTkCmE3lzl8-EmA + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-gd: V_0p2VRMR7KzUZGBjjnQBA + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-it: TzcTkjt6RYu8kvEbrL2QiQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-ca: BxVQLYkjSB-El4-cTKD8lg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-cy: MjnJ91pgTfSYvZKrCVscoQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-de: Rz-IIDvXSU24EH-A8eOzMg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-GB: OSVAjo73Tx-h14UpmUVwjg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-US: Ah6AXDiAScyo88iAiwEmkQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-es-ES: EU0NJZwmR4m-q4pomOQ4FQ + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-fr: AeTEaXuKS5C5w1cVIgqJtg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-gd: UiFrAFsBTx6o6zgFcT--Rg + release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-it: GE8RdeizSHu9l-BXC2oABw + release-partner-repack-repackage-signing-linux-nightly-seznam-seznam-cs: NW5PD22dStCB8t21ob9qOw + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-de: TBcgDrlYR9il0XgoRRtHKg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-en-US: Pc7ax-LbQQWlvX7xOUCbHg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-de: SEKzGHnvQQqhIVrSwOEB8g + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-en-US: G3tXqPVYRdWJ2hAlHSbShA + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-de: FUyPytEsRySewYlpn0yOWg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-en-US: DsxE83h0SqGraJH9o_Oa7w + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-de: DbXPvZu3T9qPsJDBYJUUXA + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-en-US: Wnc6A8t5R8KTkFMOBYspRw + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-de: N4k0PV03QIOkqsyMc52qCg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-en-US: e5W7vrtdRFWfqUFsNwB8IQ + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-de: Jd3YmUDxSv-i-Epp06L6Yg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-en-US: E6EpY6T4RdyGMOcjrs5P9g + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-de: ObYb7ifERg63Mcw9USy4hQ + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-en-US: FST9apwdT8iZR2an9twKRg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-de: LnmcVQsCT_Wf5Lzsu--FMg + release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-en-US: Rao96LAlS5acRQ4jbSzYXQ + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-portals-ru: A_OvvKm-ROyr-jKEODPC0A + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-mz-ru: Iq49RR1aThWcQHQn2jXheA + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-ru: O42VEReoR1GszNWdrHEvjA + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-gezginler-tr: OZbH-k-FQbOXLqSbp6OQkQ + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tamindir-tr: Uydzud-_SLu44paGfS0Cmw + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tr: KsQaFfjxSJiloIskPy1K5g + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-ru: Gr-6TcvZRryyocxgn_sVhg + release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-uk: InEOCDcaRGiRXG_aU1M0GA + release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-en-US: Pzz8p2gORnmluoRh4pSqmA + release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-zh-CN: HmG2JrGwSpy62uGlOg96Pg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-ca: PHYqIoc0SaW_E6PMm7aF_w + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-cy: czBJQXCFQrWuA4OvNgRLOg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-de: dR1OrHwTQE-DQzsLBGgaiA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-GB: T86oavrITFSJp4eF08W2Kg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-US: Z5YYoRXaSyK4rE9MW05L9A + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-es-ES: bb7BT1j4T_a3u1o8s6aToQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-fr: TRulVLTKSgiMArTx2_yARQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-gd: c-E9SLTsS2eZwtuvGxY_Pw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-it: O_71sHH1S8iu59_kFKedTw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-ca: UXqUxcTXSLCwqrujPH_IGQ + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-cy: TlbhPM9lTc2Kfz8rhjm7IA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-de: NKMkFXfsSES_7J0gpPrClA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-GB: L-gPITEOQQi8PNp3wNzGMw + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-US: EiV662PdRVKgM-H2xutXag + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-es-ES: On7yelz7Qk6n_pm98kmzaA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-fr: YQIqCz7vQmmln0Cxg8REzA + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-gd: I1KEbTqlSCuzOlQidC0mTg + release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-it: Zehd9xHbSDCpz6NZueuNSg + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol-en-US: JCMoz1ykR-qkqt4-qKv9CQ + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_de-de: fAmbNs9EQbizCoiEW7rgpA + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_desktop-en-US: ShTUrHtjSxmGGYnYNXQPnw + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_huffington-en-US: dXyo_KMaRMeRRxnQY_amJQ + release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_uk-en-GB: dzEFFYGlQjCoS5SFzsp95w + release-partner-repack-repackage-signing-macosx64-nightly-chipde-chipde-de: B8vvO6FfS1Cu_mZKLvjZVw + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-003-de: L8nt40hQRByTfx6hcDP-Lw + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-004-de: YJzRB7QkT3C8m66SQQxfxQ + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-005-de: Y3_UEwWfTiCAiEDyh3NZ2w + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-006-de: U3spNthoT3u45MsOAYtzVg + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-007-de: JjzcXKqSSee_mS-t_dtxUg + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-008-de: MR7jZNM_QiCs3iy3AF40ag + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-control-de: NaVV-o6KQ7i0PEKHj3adfA + release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-de: cTH3z9AXQF2lVL3aCbp0cw + release-partner-repack-repackage-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: XBEnPqARRn6A6kvRfkLCUg + release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: HA5gv1tRQ-aAmKUQHJVUsQ + release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: cxt4oosvQYSCVfPJzOIXZQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: YaWE4B_0QUOONj7i85DlRg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: dFXA0fEsTfKC3Ci0WP8MJQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZgCOk84KSBmESob7xuv0Fw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: KA9Lm5N9T1yPTM7QTK2boQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: XbzZVIQnRPONgrrK9hZalA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: NvQRUiHbRT2aPdkcnb53Sw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: CkA05810SgWZovO6p4rsGg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: HgorKPdRSFGghJznzBCzyA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: V4LisnjuTy26NOOPy7P-yg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: OmHmx7SwS4yWCuSEwAq_VA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: bfXYwCIKTNSr26EzUHZ85w + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: VDBicfCSQ56ugRvMxLHocg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: KTWL_XX7S5KacNH-REQZhA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-de: ZFApNHfzS8GIW1DV-VyN_w + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: BBA50gyORL-Edq18_DbR_A + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-US: L_4NjItuS6-BLdCdrESEPA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: arSGT9-QRFuRQG6Z44iDrA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-fr: X0yj2BfCSfOLZFmpV8IhDQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-id: WBuqZ4nKRY2je1NzMKA9Cg + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-it: dDjacDNOTZ2KqR0JfuXZQA + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ko: ZUxTEtJLQ_yc4g5YzwBQ0g + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: PpWwwSplRmGHIaYpf_i-MQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pl: NY4fLUSSRfqp4RTxyWaTLQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: dGzEbKk3SqCs4Dzt0aYNmw + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ru: LGLHnINIQsWANtIGCplhLQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-tr: PBUT7-mbRCyp3LCUje7wIQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Ld-dUBh4QkyLzQaCLCxgkQ + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: A_k4Y65YTQa8-XpSRinaag + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: XzkArif4RUeIsuSG8BC20Q + release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: KBEuUBGJQqK2iUBLMNtOeA + release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-en-US: RLqikoPWQpStFyWe6ka_aA + release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: ebyW37wpSme8w1n5yE1T-A + release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-en-US: P2PVfIwYQxiL2t80u94fEA + release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: P_w5qrurSra_GRsE_ngwZQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-ca: cjCuTLlTQ7eR1oVP1IfqOQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-cy: cGDVw7y1Spu3U0C9unUmVA + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-de: GecZv0YrTRmIAEG8RWCTiw + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-GB: QHVxE3wkT--AG2PjQU4UKQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-US: ckT3lbQxQyezwXccn5Srwg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-es-ES: VMOM0OHESVmAKqPCZQQTUQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-fr: bg31l36cSTel27hlofYVfQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-gd: HstbSzJkR-6cf9GkEeyGQg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-it: c521Gc69TIa-flGKA9s9Wg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-ca: MBZYWx5GTaabsutnWGuleQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-cy: bNQhtHM_Tb6ZshFrhMXtvA + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-de: DuUlk57VTKajqCMlPIV_fg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-GB: Z_z3xQqnRwKQdFJ4LT32yw + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-US: IT1uywfjTKuqrmUKyP8Djg + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-es-ES: B9pRIwZTSHKS4k7Fm8AuvQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-fr: dbEuEpl1SPC-i3iMPBWjvQ + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-gd: XeYleDJkRneuxJyp5n9a2Q + release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-it: Sawym0_4QMijlwXKzryWJw + release-partner-repack-repackage-signing-macosx64-nightly-seznam-seznam-cs: JA99iJ3URcqn2uL3IEKOww + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-de: cCfzOT8QTUCQx3nh_1S58w + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-en-US: IWraWw4XSSmULkYPZYgaqA + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-de: JAADP_k-TbKYYB5xmp55LQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: USl8NQfaSTSZF0LAgAeqRg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-de: QlOQ6WcsQvynGmWOmL7cwg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-en-US: El2mjGwKR0CLdsl_eOko-A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-de: PafmIpCCQIez-TCR5-RIWQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: FCEaj_QvSKy2eOM65SpjSg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-de: LP3dx7_9SEK5I1BnFRwLVg + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-en-US: AK5sZPhyTnSkT84FeW5MqQ + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: evj12_-EQD2CHYvnl_oCLw + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: WlBOg4UXStC_ENbvTJR1_A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-de: PXNnofwoSfuAjFZMstDefw + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-en-US: IeVTvDAQS5-YpRZrEzc5pA + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Poa4Nn-eSwWM9ZapRx3y3A + release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: HBlDrziWSp2Zglg_WQaDRw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-portals-ru: fYqgLQxcSl65-aBkdUht5g + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: HFhENKq5QV6SQPO9Tg0ZtA + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-ru: PrRxEkWgS3iIcyrl1EbJoQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: FXReXgZ4TOijQXH2-g_sHw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: Oqqerg7TQtSgMVr81RpVqw + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tr: emyNdDBVRS-kOm3ktr5FPQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-ru: XXmF6_-jSWe5WXRTKhKvrQ + release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-uk: WHG2lC6sToC914uhICOlpA + release-partner-repack-repackage-signing-win32-nightly-acer-acer-002-en-US: S8GF0GZKTk2tEUn48wpo0w + release-partner-repack-repackage-signing-win32-nightly-aol-aol-en-US: SJlBZDVnQAyslf29KwuLKA + release-partner-repack-repackage-signing-win32-nightly-aol-aol_de-de: SyIa_Iv8SNClwdciqz9CrA + release-partner-repack-repackage-signing-win32-nightly-aol-aol_desktop-en-US: IphwJeWWRtG2dF8IQks8Dg + release-partner-repack-repackage-signing-win32-nightly-aol-aol_huffington-en-US: chsrz7hLRJCeLd4vm4Bk6A + release-partner-repack-repackage-signing-win32-nightly-aol-aol_uk-en-GB: OUulyxHMTRSQHeJcftbo5g + release-partner-repack-repackage-signing-win32-nightly-chipde-chipde-de: AWu6urNYQ4qttAxI974wiA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-003-de: f_wa0GdSSmiqoxjoWtWVrA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-004-de: dF87-Z6wRW6mWjJUQTaQtA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-005-de: XzFPD5A4QX6noBkt8KXZbQ + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-006-de: GWOzJ0T9SauKRNxCJjkarg + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-007-de: P1gq2J-0QmO5gWy2528tpA + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-008-de: D-y0D-x-QEyixNT3Y3FOQw + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-control-de: d53HQ7SAThW7XyqpNHUfrw + release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-de: GL1V6Wj1QF2QO5l4FS-iPw + release-partner-repack-repackage-signing-win32-nightly-firefox-firefox-election-edition-en-US: PkFmN-9KTo-HtD8C1HPsrQ + release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake134-en-US: UeY8n5_PRHyemj5mJCEoFg + release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake137-en-US: SqASpEpcQrC-2A65bcx7Hw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-de: D5ZDmjdbQ5Oe0Ve06TvJ9A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-GB: PO5oCMz2SJ6h93hN1CRhUg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-US: USMuLsWET2GdNPyQx_yoMA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-es-ES: O6wIY4icRfihRLgsONsGIw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-fr: bBJSkmI5QT2x0m0-vRrNGQ + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-id: JmIZLIK0TKGvvfg18WWkew + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-it: LeFd7hvlSfm8WVPEpg4x_g + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ja: fcfKGUs7QBylC0RJ9pNorg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ko: Wq1xbFThRIi7sSX6TfI28A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pa-IN: FcAkJ60uSU6nJM-NK82Qnw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pl: LB8IYutGR5OFsgp_9_Mrfg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pt-BR: RBUAKfL-THG0KRp_9Xr1rA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ru: KEm_R8ygTsSHvIk6MX4Pxw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-tr: Z9I2emKQTrKuYtOjyQDaZw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-de: ApHi7KvlT_-MXoYn2YNcgw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-GB: PX014iroSpGpThXoO7dfHg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-US: PewbAx6cRDeTe1C5-K9BHA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-es-ES: b4WcVLl8Q-GYsSxdHtnB_g + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-fr: bQbRuuyXRTiRIOUVp4aemQ + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-id: C5zW_aH0Qp2jzdQQNYPlog + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-it: MIVsUT8HS3ewRwqYGdcwsw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ja: QVUwEFVISbOST4hgW_eejw + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ko: adJ5LoziRN-rNEVli03sew + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pa-IN: Ctq4EIa_QimpjpfOTIDMjg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pl: ISrvkLtgSl-oVXNBv_IoKA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pt-BR: HYA8b328Qem1_vwa7-WClA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ru: JFl_NpRwTJuq0lNv6LWWFg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-tr: XebcZQ_LRnK_nbRtQlv-9A + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: fdZ324DPSYu7DEWBZ-DOJA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-en-US: BCHFqFnvSTeLSfXh_B4Wvg + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-en-US: X8TarqWiTyyBDkkYNC9MJA + release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-tr: VrSJuuI6SEGC0SOMxSE4uQ + release-partner-repack-repackage-signing-win32-nightly-mailru-mailru-ru: JvWkXHVPQs-Izj13Q5ufVQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-az: e7DdmJXnR2KCbozx0q9nbQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-en-US: BHYhl5fyTTWcLkXYon2YTg + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-hy-AM: GKQ8SSSBStih06jHScTFCw + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-kk: eXFvdjF_QJOTjcNzsxnAdQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ro: RRA95yQ4TxCFlYgdSDnRaw + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ru: Kh7WqcGITKy-kv63xjaAuQ + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-tr: LM-EeO6sTZ-Kh5w6rnnT6Q + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uk: PPjnfmQJRhG6jGf4mrnmHA + release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uz: c5vNa7ggToO-UzA6jue5Bw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-baidu-zh-CN: EbLB_2nETUqzORb4aLc4Iw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-kingsoft-zh-CN: ffKAN9xEQjyjLyx-TT_pDQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-en-US: BqCX6u3RT9SvPhP9z-JQxA + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-zh-CN: U5JQWO-WTFuP_zBLNTCRHg + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: F_4Hkcz5TFKrUevScjbCTQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-others-zh-CN: UMtojzsPTaKx08wd-6AxHw + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-qihoo-zh-CN: KhkTGOreTFCwruJ5z7QV8Q + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-tencent-zh-CN: fjxCRlUZSTms_fMBfGiqkA + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-xbsafe-zh-CN: Hhn1S8s9R6i2Eu_WhTH4GQ + release-partner-repack-repackage-signing-win32-nightly-mozillaonline-zol-zh-CN: TVnHn3lnQGGbZA8ORstgsQ + release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-en-US: N4JjMUJdQfuq2_QtR0q18g + release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-ja: br9DN3c_T8a1X_JOYcXOYg + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-de: JCfIVyI0QE-fAC8uXakQzw + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-GB: RbQXvSnpRnSpw-d7FH0SGA + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-US: XpzUDzsyTJ2hRx-yj7d6oQ + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-es-ES: BORMypT5QlWsXUGBsbqmWQ + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-fr: NVv-XX5qSVaIYnzachQN-g + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-it: LzaMjaCMRNGHQ6iX0K7F9w + release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-us-en-US: dSMluYdzTxuIYoug4bi6jg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-ca: AC3vsFPvR5W55m5b6yW0gA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-cy: VnvM9hQzSsmXX7-S6rrPzg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-de: EG6_zJUwRpG6zkIV1v2w5w + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-GB: FhnPraiSThGrMeIFiIgr7Q + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-US: AeMrl5V6TZqIkpbTxSijKA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-es-ES: IY46LYIrSI-zAOVkipZYtA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-fr: I5FnPHt3Q6uCrpPEbY50Pw + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-gd: SyZhcQHdT-iZ0of8-fO52g + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-it: UBxmmePaR--nVVQf3QGQZg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-ca: Eo8o7pJHT_CF6KB9cLH6GA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-cy: OjarzXy8TTGHYwx0QhzSZA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-de: RmRNBjy7S8qGHAEaqc-CNA + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-GB: Kh8ctqqkR2WW4Kz-uV9mjg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-US: bWUiqnI8R7muQRzzNbiLgg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-es-ES: e8LIpYeSSXSCspiT3BjpIg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-fr: AIQzFwreTeCMtHthTj7zug + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-gd: Y8OhhGMHR0-s1m2p1GFaqg + release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-it: XohcXEKAQLupCQHEZ3wdeQ + release-partner-repack-repackage-signing-win32-nightly-seznam-seznam-cs: fAHt_YErQRawNNXysCRsww + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-de: d6GmxFx8QxeFH6Kof16cgQ + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-en-US: af0q_B7ZRzic-yzgVimp0w + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-es-ES: UUtD3SF4T7meZXIahxMILA + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-fr: f3dKMJKLRiOg-hLL_K1zZg + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-it: VfMTqhFhTrWR_QU6seIPcg + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pl: Y92ziwSYT5u3UawNFgf03w + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pt-BR: WttB_tvCR-eOvVRf_rcSDA + release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-ru: UajJBV8WTEadm0pAX5vPpQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: ZzSSAW-AS7KEs4TJlxq9QA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: G-hWsyREQFGO7_PwHAoN-w + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Kg_HnFUCScugObqTno6HWQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: L_4vXgFZRhSw3OdL-zcvFA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: VIS8G5efQ6mjcA30F9YHVg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: SsiUenk9Td-RgWjCWRBwyw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: P2C0VJiwQGCSiOdyRhDS6A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: HmJ6_4FYR4-eeECLf2xyXQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: OGjQziIBR5y7Ic-bGqm2ww + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: IEhoxBKCRZWE6YsQiHSdJA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: SYEdQaIXR-G-WXZtbix94g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: Io2uTgsTQl2HXoX5o8CpTA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: CuNaDVcwTYe2m8GQ3IDOhQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: O44cYTwLQv2UXlov7x7_Nw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: TOU3T95CTmG5_zaxTlzyMg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: EWmViGMFRm-iGSQu4L46Eg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: e3G02jM-QBqfkmsdEwx_pA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: GW6pbGuzRXWjUFni8QiFLw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: ThzJuQ0GRzSkqVqXv3qk4g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: c-0CKZruTh6kvnNBHaYYQA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: buJ3jok6SxmndRz6Su2FHQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: dq1k3gGATWO-MVcXJSzU0w + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: AdQ8ZfB9SeqeFq5tA0HxDg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: QM6peJYjQgy46kwhTcd41A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-de: JDzxQ0v2SuuJtNkjy7fmVA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: QU6wvL9cQ0ek5oEXps8UBg + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: W2LsVKQqQMu3DtT8F41__Q + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-fr: GdBuiki9R927dwfZTTxyRw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-de: WlWy4fBtR5CuHIAU8ZPCow + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: YxukSsRQTLC3OQS1GnHViQ + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: SWDWe0utTJWUYt3byEJd_Q + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-fr: LeXS9q05QZOD1zYQy-ZoXA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: MXXbi2RJRG2phRSi676dnw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: Y6kctChLRIGXPPT_atSpmw + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Eg6oHExGR-iTbvBYsmGX5A + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: KoO7Owp5QEGefAYBi6UD4g + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: HVbHCKjURsSlPqWdc82JjA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: HpVsDhw5Ro6LKqOGWdF7fA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: Hlb1KoJrR921WC4y2YweRA + release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: coY-_1kfTpC5h62XKVnrdw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-MX-es-MX: X-f86mHVQkSNMVwWCqgzvw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-US-en-US: ZbCETvnzSlClpRhWm3Ampg + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-b2b-JP-en-US: Y2SmjK1oTLGS-sJCjKPBsw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-B-US-en-US: eWY6gA5JQOS9qZOktd3rCw + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-MX-es-MX: UEjyHjOgRXeQxtVaQlT3_g + release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-US-en-US: cYFOHWVST66MMdeeSZrDwQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-de: fywqFS2mSVm0-6xwN_6M7Q + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-en-US: FA_me1f5STeT-3Drb0e5Kw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-de: OZxX9H65T5qTBQvGqiDpwg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-en-US: Yo5owbAzRKegLzKtx4nP-g + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-de: XeuAS2RFQi6vmtWIPjtIlA + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-en-US: PkEjXl13SYyJHuHq_a23vQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-de: RACC8r_nTo6NWj_7OUwehQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-en-US: UZ40Jyx2R_m5bdDMfcHPjg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-de: V4kFd5WHQ_ebN9zl9tN6ww + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-en-US: bpy9eWfySwip7cM0-yENIg + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-de: bA642o1iR72QNLy7LF4GQQ + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-en-US: TDYfSw3FQJqAuWm0ZH2nmw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-de: VAmlSof9QviWhF3diI0pzw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-en-US: QWqAleDHTsGRQldxsTwZ0w + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-de: aC5VJz9lR5-kKaXRZrzKkw + release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-en-US: TELGPOZDTwq_9hcJcYT0pg + release-partner-repack-repackage-signing-win32-nightly-wildtangent-wildtangent-en-US: JdARg7Z2Qu28R0Do18nqdw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-drp-ru: TohaP2kuTdKv37MaumMXdw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-planB-ru: MaW0ixuWRq6pXwRXPvVbFw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-portals-ru: QG42WqWyS6CXB4Id0tcfmQ + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-mz-ru: f45L5q3qRTus0Ge1z-l19Q + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-ru: TScPunQWRZCAQxwPHQsyOw + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-gezginler-tr: e8mfxrVwTOKJStJTpJ2jBQ + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tamindir-tr: DRgVRvvPS3CwYV8p4bdY2g + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tr: bpmAxALgT4as1TS0XDUsSA + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-ru: MZypzfCaRZukX4o1Bh6fCA + release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-uk: QceLdF4iQPOjPleQAhzAKg + release-partner-repack-repackage-signing-win64-nightly-acer-acer-002-en-US: XiLkJwbOTTKH3_f-ra8liw + release-partner-repack-repackage-signing-win64-nightly-aol-aol-en-US: C1ENWN2_S0au0cNxXZ83Xw + release-partner-repack-repackage-signing-win64-nightly-aol-aol_de-de: PB0GN8cSSc-fsDDS8sGe2A + release-partner-repack-repackage-signing-win64-nightly-aol-aol_desktop-en-US: fOft-HAPRMq8F6-J5JOxbA + release-partner-repack-repackage-signing-win64-nightly-aol-aol_huffington-en-US: OGMe2wjpTUKdRgMt4_fM-g + release-partner-repack-repackage-signing-win64-nightly-aol-aol_uk-en-GB: XJHzkW69Rwq7zOl7jEFMSA + release-partner-repack-repackage-signing-win64-nightly-chipde-chipde-de: eGKCEA5_ShajCGqEVfMMjw + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-003-de: WhGOAbPLSLCDpIBTtRs4Lg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-004-de: DJCj_Mw6RMiv0khQVYfnEA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-005-de: CJSTRMUeQkC_8Z_TOVj3Gg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-006-de: D6LpUw0tT7yGRwA9VCkubg + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-007-de: XMBmRudHS1iMfxEIGQ-iFA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-008-de: PoCX_UJMQTy24IawcCtGjA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-control-de: HjcEdL0rStaFiN2jM_I8UA + release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-de: Z3VYxzJPQ1Kpx_RBOFt-9A + release-partner-repack-repackage-signing-win64-nightly-firefox-firefox-election-edition-en-US: cPIloCcPQl6aQvmoowbNug + release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake134-en-US: OZUBAd8RRUyEOcqoTQhPkw + release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake137-en-US: O9QQXuWbRBKWP2U9kNTbRw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-de: EEXiCsXlRYug_UO0nxSWGQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-GB: ZnlgFqRmS6mfeeXj0gcriw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-US: Ot-fuyKORXap8gwQiV7qrg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-es-ES: SkOB5nUqQoGhIay15uOQlQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-fr: YGeDb7hxQAqR7QS4rvqkSQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-id: RgEhe6grSICa9uBBu-YJpQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-it: Cd4SxTbrSvKuZVOR3MGmfQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ja: MCuxkPiiQZC84oAb803TVg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ko: bAhWTNW7R9udr9HgjR3KEQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Az4kFYdmQYq0nB3MSdWHNw + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pl: Hha2rbr5Rl61lrJa2MZYlQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pt-BR: fnVnEbJ8RQq3jp9nEDEcDA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ru: HvPnYmEWRtCdKascj10oDg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-tr: V4uvI1zwRTSY6x1RW10P7g + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-de: ZtcRAOqhRBOHTyarS0Z03w + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-GB: Y2pNVU-HR4y8cHuc5CsgzA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-US: HKL7Ou8RR-awKSTdbuF5WQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-es-ES: F8LXzH12T4G9zDztVvAA0A + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-fr: bWbIs-NnRhm_gMZXPHWBkQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-id: Xf_0hh6UTRe7oEUZO1jDxQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-it: Zm3GBGS5Qm6IB-0xxPEIcA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ja: UE4DjdvlQPWOLO_DlPDWrg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ko: FdPj2LScSo2NGMAZMd2QTA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pa-IN: EB0Me2iOTWC3EUCfQOeGtQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pl: UJXkkqHtSoiG1TsA41AVmQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pt-BR: f_j54yxhSY-HqtgxA-fvgQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ru: BrWe7wV3TrG1MJIyfCyFXA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-tr: CpdhBsMjQf-0c9GtSYHUcg + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: ScrgZFziRD-V_NfQLqoF9g + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-en-US: DjIkj112SQ2Mxlm-SSxBoA + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-en-US: NC8fwT0NR72-Q5oXAJT9dQ + release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-tr: eeWcNduZSOWczw4HOIFM5g + release-partner-repack-repackage-signing-win64-nightly-mailru-mailru-ru: CPOZPomKQtKOW4jcjxS0SA + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-az: WTMNaEv1TJKBKWE6JbjX5w + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-en-US: AELUVC2uQeKSYrLMYxAzkA + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-hy-AM: fjTtAoK8S-62VurIiP2F1w + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-kk: ecEJOo0zSqWQEqHUmlQZIg + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ro: GaGrD0SkQE6i9nR6fq60_A + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ru: asIjnZ1iQTKalpGPyAXs1g + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-tr: YuK8JM1VQaWoBXu7tc4lyg + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uk: BDFdvSynQ-qU7Zf7km4U-g + release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uz: TKY6UahiQ2uCZh2N4u26Tw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-en-US: T-BriiiASJ6BrI3xx1hRMA + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-zh-CN: Zlz2kqGqTBOdL2gZuCxQSA + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: ElmjXAkbRUu0jG4wahBY3w + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-others-zh-CN: DfGtPDmYTFCg41Icb-WBvQ + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-qihoo-zh-CN: Bp1rATS-RDmRfiOB3sbUSw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-tencent-zh-CN: BUv-O0euQ_qJibj5VEs5aw + release-partner-repack-repackage-signing-win64-nightly-mozillaonline-xbsafe-zh-CN: OGCEeOcYRRW5b1RSAlCU0A + release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-en-US: TPmGx8pDTyqG_QNYMA4Q7Q + release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-ja: cU3WOS5ZR2yDzrxWEAs8wg + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-de: Sf_OyaHTSlCieWVMh6BENQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-GB: AA6S25k3RK2wBlWSimWzXQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-US: QRA2Nq1RTPK0ewEAhBfNHw + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-es-ES: GwQ1y8maTDOKLvv7E6-uTQ + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-fr: Atjbqm-_S1iPBrC5JOkY9g + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-it: ZxScpMhrS7WoSeMKV7U1SA + release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-us-en-US: IqgYuAK3QwaVJnCEyFb2_w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-ca: WIFDnrI4TjaVsDiZ99eGxg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-cy: XutCmPYMROyICbRO1k9wuw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-de: POT5qBnVQUumpTbbuNLDkQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-GB: bv7RZWfbRa-sxTi0WPbLRQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-US: NLgxCzDzQjK4Xoeu8ufj1A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-es-ES: UYAis7cpQbG7KIN-y2tIUQ + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-fr: OcBODF-rTO62HX8LSh42qA + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-gd: TMEsuX_ITfGy08FuQeBc4w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-it: FK7omnQRSu6lfNAGQTO52w + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-ca: BJTfRkOBQp6jbcmRQ36Pbw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-cy: MpKfO80VQnyDVNp1925K7A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-de: A9dkhnF4R3Gu4ZRDGIQONg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-GB: L1u6lza7RgaqxXR7QJF_Dw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-US: NU73fJewTSq1RC4wBLaF5g + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-es-ES: AmczSEKXQ6SXI6Os9m17Eg + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-fr: AwPb-sfiS2WqukuSsK4oWw + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-gd: Gb4puHwvTRC2X8qip7hZ2A + release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-it: Zcqg_F8MTHmfxYmR-IuO3w + release-partner-repack-repackage-signing-win64-nightly-seznam-seznam-cs: cvunSOESTI2-E5xCvHULug + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-de: d5eswKoVSlyOPL-5kcOjkA + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-en-US: bON5seb1QoqcMpahjlvgrQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-es-ES: V4td-KcUTRGaXC8rCptrXw + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-fr: VGw88G-tSmuloZ15v0qJQA + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-it: UgcMTyIXQai50_gg_5JZtg + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pl: YfIbJC0tSIK7PANsxnowwQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pt-BR: EssGNIg0R9OZHsv_6KY-KQ + release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-ru: ANVajloGSgaNwnGetj_XWQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: AzIWuS3eTFu-SuFmjjpIGQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: Ei5QVo_5Rwait1zbI2U2Aw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: EqWayKh-TUiTa755QBtdNg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: GcCuGpf5RBKpCMWebENQ4A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: I5Sk9dhkT2msmzPPR-IBrw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: V8Um8YVXQOGb5YbPU89q0Q + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: OipQL8PzQrmQUCHuq25b2A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: DescTqhjQoKAinuhQwC9pA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: fsVg3eL0Ro-3duXk33EwCg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: eLTcE1WORBCyyOWxA3cebg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: JCbOfq4MRLigF_ACninNGg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: dez2wjmRSJaefABIlFfcHw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: XPyLptUvSk2OXIPjGWHVGA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: fia_iid4THGA3_OhQ1zSQg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: eP-HIq7oTOSZHCDfWXSU9Q + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: I2EbbOKuQ1S-ZzTISjqBMA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: NaTz_8n6TFeFU5pFnovIhg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: YxcAjl0YRQ6EjF7Vx3fFDg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: BYNf-L9JQIy35KRoTMy1UQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: H-dAtdHIS1OTe8K0dqQPuw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: PtQjUY9oSruhuIGzfwnd-A + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: T2drYtdCTfOqmDmFcM7Csw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: TqboOf8NRlaCiYs2MJfPjQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Bvt1zxneTga3bfoQytEoRA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-de: TcJCsRupTQSXUfA3FfVBEw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: HLzAn_lQTOmUg0tDfAw5hw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: BvAIuEpgSH-l-X7CYcQn2g + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-fr: HFCChlNgTiaTHv2ude_JQw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-de: ZvZBXmehSTmX6m9ycuIfHg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: IDZNHNm9TZmYutFJG4r5fw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: U589qFzST1G10r6Vd5q9Ag + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-fr: LYczc13FSuiCE9q6VCpL5g + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: Cb9BMMDMTdqU2FnXZ2yYsg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: fVP76dbdQ72gHotKQoAGiw + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Tp9kItHlR2m0B4Y4My4cuA + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: NgpflU6FRcOGAx8GY1AFhQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: BdhQmUpdRT6-ngpuLqwxDg + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: PsvOEBXLRnKwmJdM5HQX1w + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: QytfsfVMRJq9-Ejqydp4JQ + release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: FUznCc-eTaqxLaJp0dKd1g + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-de: NdMPVp5nS6eb31T9cgNo4Q + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-en-US: RAbvalRiTTG1qBxfwaUnxA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-de: YE-Vh1YBRLa7olZGMWCfMw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-en-US: ItZwssg6RIukum_Ckm6aHg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-de: PwDhHH_fSbmzt-Xv8nQr9w + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-en-US: BdiRIZSjSIK3wARQWpbFyw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-de: ZtSd8DnDQLaP3ZBqBVuBQg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-en-US: FW06s7oTTweKwn6yb0KtBA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-de: EVNEV7irTPOyl7KG3WPNJw + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-en-US: YaNF-QZQQRKvuP6q6L7tbQ + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-de: IT0_W8-2SFahpz8rJw6yKg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-en-US: Vfe3mEK6RvurBIV6MaKjhQ + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-de: S_RuUl7MSfCDx_Rv24wpFg + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-en-US: Joqwzyh2RxaPP0sxNJSlpA + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-de: aAPZ2TowRdida11DeJiF5w + release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-en-US: Qoa3634oSJ6uP5BdboIT-Q + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-drp-ru: AQUBCSt7Q9C0rHzb0zcuyA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-planB-ru: H8EuYAsMR_m5_OajAY_SiA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-portals-ru: OxgKd2J9QVqO9kWQE5gmnA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-mz-ru: URa7OQLHSO2JGfREIvuOMA + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-ru: SnnSMoRcRMCiZk6pgwjYlQ + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-gezginler-tr: OrYjkkShTt2cgA2fq2qq9A + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tamindir-tr: CbTcFG8lRK-qBmpT-xrvTw + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tr: akJTQt4FRYiFR2Fs1leqMg + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-ru: P5r2WJeZTg2WD_EE3vbgDg + release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-uk: DDuV6nmmTi2ITKU_nVZUDQ + release-partner-repack-repackage-win32-nightly-acer-acer-002-en-US: N0GVZTR6TY2sl9kudwl9sA + release-partner-repack-repackage-win32-nightly-aol-aol-en-US: LHIBrCs1RZaejPhf4pWVsQ + release-partner-repack-repackage-win32-nightly-aol-aol_de-de: W_09Pw_zSX6At5kbbR2cxw + release-partner-repack-repackage-win32-nightly-aol-aol_desktop-en-US: aEo3QqPcT7uRKDaoQGoG1w + release-partner-repack-repackage-win32-nightly-aol-aol_huffington-en-US: af8P-z0pRPeH2TWEpufubQ + release-partner-repack-repackage-win32-nightly-aol-aol_uk-en-GB: elwztSZQTa2uLLV_X5sWHw + release-partner-repack-repackage-win32-nightly-chipde-chipde-de: bagR4ORJQbOkJhad6G0qHA + release-partner-repack-repackage-win32-nightly-chipde-cliqz-003-de: HcyN27CTS6-301q938u9hg + release-partner-repack-repackage-win32-nightly-chipde-cliqz-004-de: e1zObD83RgWUw2Yh9WoOwg + release-partner-repack-repackage-win32-nightly-chipde-cliqz-005-de: YrvEZABvQCSIFCNFgwe7vQ + release-partner-repack-repackage-win32-nightly-chipde-cliqz-006-de: Pz-EsbFCSEKHF3NDF4hTHA + release-partner-repack-repackage-win32-nightly-chipde-cliqz-007-de: HWIid5X1QTqJpQ2E0HyQ-w + release-partner-repack-repackage-win32-nightly-chipde-cliqz-008-de: FDtNvgvPTUaQXrD487c__Q + release-partner-repack-repackage-win32-nightly-chipde-cliqz-control-de: M1aTr9RbQpeaGvDkDPmzGQ + release-partner-repack-repackage-win32-nightly-chipde-cliqz-de: L93MikcASniVKMDZqMos_g + release-partner-repack-repackage-win32-nightly-firefox-firefox-election-edition-en-US: Htoj2MtRS8ekABG1AZKlJw + release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake134-en-US: b5l2KsPxQIeH12BbuAaQBw + release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake137-en-US: WxZP_5diRQ6D_Ot26h0cAg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-de: PO9iM_-XS06M6tVpJdICeg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-GB: W1Sr_dU4QGOyK6cJ_--JNA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-US: ElB-i78TSuWJOdngaHaVNw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-es-ES: cXEe9quWQXux4wLX8AmVuQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-fr: DO5A7FBtQSeDruznxbTNXA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-id: c3y8MIi-Q5eICY-x5b6fug + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-it: N5EMzG5eSF6Rbm1UXoz82A + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ja: bkG_Vta-QpSuYFoTkSHxxA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ko: R9GsRHRMSg2whmrPaXJHlA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pa-IN: VMFJKplFT9eLK0YDgNXLxQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pl: C3eaVmhJQfK4m3zqWqGKqg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pt-BR: VMzz4cBKSHCF9XbVV6hTUw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ru: csnxPNa3Qju-xj-n_T8qig + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-tr: H3lGoG24T1W6DKdK2lbjBg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-de: LCEEaisGR5qM-tMTfm1g1w + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-GB: dzrFgUe6Ssmt5yOrvpQkcA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-US: MR-6oeS6Sjq8n9Nxwi1SZA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-es-ES: HkUp_-I_Tb-oNUf5xtGDlw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-fr: C9wfwd99QnaSlgvKeW5qgw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-id: EGIS-lyySkqPrnzxIfVYvQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-it: DYnNIKkNTIqqUPqGAnfojw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ja: DHz_Z7YAQsSpuIRmFQLjEA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ko: BUpQuthfQxuX6ZYEwG66-Q + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pa-IN: a6Df7ylcRAyEVTbOX_d2qw + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pl: ed_M7HPlQBqHktyVBFEuPA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pt-BR: aGS6E7JlQwmsvZvUJWLnlg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ru: SW1jZHeVRO6q03Zrj82SHQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-tr: dLJ1_EuaRQmOH5ub7cpNVA + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: cMHvYCIKSu6j1TQKNTSCZg + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-en-US: FhvKIFoaRqunAwSSvJQTww + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-en-US: EE_iFeWgRdCplLFOMptAzQ + release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-tr: blbOdFB5SC6OTkDG0G_F9Q + release-partner-repack-repackage-win32-nightly-mailru-mailru-ru: ek036v_QS8i15JL27MWihQ + release-partner-repack-repackage-win32-nightly-mailru-okru-az: QV24DA1bQ3KP60kT9FKzVA + release-partner-repack-repackage-win32-nightly-mailru-okru-en-US: PV0wphO-QsmESNOu0DgJDA + release-partner-repack-repackage-win32-nightly-mailru-okru-hy-AM: ZXSkk351S2ORh5TbzSRsbQ + release-partner-repack-repackage-win32-nightly-mailru-okru-kk: Ff32yh7LT4ywS2pu9enEpw + release-partner-repack-repackage-win32-nightly-mailru-okru-ro: W_ODP11pSxi9Lt7Zgy4_XQ + release-partner-repack-repackage-win32-nightly-mailru-okru-ru: RZmCQbHaRcaZbq34DgKYnw + release-partner-repack-repackage-win32-nightly-mailru-okru-tr: W6oTNZb-Q1al33UurO-GtQ + release-partner-repack-repackage-win32-nightly-mailru-okru-uk: IbVzJ-pcQUiK3zmwd-DCUA + release-partner-repack-repackage-win32-nightly-mailru-okru-uz: Zo1PMxVVT5a5D6fQZLpN7Q + release-partner-repack-repackage-win32-nightly-mozillaonline-baidu-zh-CN: HMRdur5vRpCGrljNMTMBzw + release-partner-repack-repackage-win32-nightly-mozillaonline-kingsoft-zh-CN: Vtf_vmu3QNCQBisD42UgvA + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-en-US: bqRRvSylRyC5oaN6PcqrEQ + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-zh-CN: f6YwTiCDT3un2GZFGtdO1Q + release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: ffdlLBKWSaeEqz8LIh6ZkA + release-partner-repack-repackage-win32-nightly-mozillaonline-others-zh-CN: WhBv6u0_SmeZMwQ7QiHAbw + release-partner-repack-repackage-win32-nightly-mozillaonline-qihoo-zh-CN: fEf4PQ67Taud6NbZ3KPwIg + release-partner-repack-repackage-win32-nightly-mozillaonline-tencent-zh-CN: KAf_sFMdT0iZ1J67sAxs0g + release-partner-repack-repackage-win32-nightly-mozillaonline-xbsafe-zh-CN: VdUdqrcxQpGVk4Jb-vCCsA + release-partner-repack-repackage-win32-nightly-mozillaonline-zol-zh-CN: Nm0NmFBRR9erCRHorejJlw + release-partner-repack-repackage-win32-nightly-ntt-ntt-en-US: NXnLnupoRe2XSBhaZsfRrA + release-partner-repack-repackage-win32-nightly-ntt-ntt-ja: EkgYDDVtR3exZGsOve4NRA + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-de: W51uRvqsQd6YGYhxbaXRdw + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-GB: GjVz3nMMTlWf9F4cEdoavA + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-US: Dve-tjtpTA2782j71qRewg + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-es-ES: FqDw0hTSRJSNWedVoIPICw + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-fr: VXOOm6ieSeu4f6bTlzdAow + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-it: cJeROY_ATny4a52MKyNl2A + release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-us-en-US: VlUa4hoIRHWFrhM0ZpYULA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-ca: N1x7XFhWT0yweJ627c5xSA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-cy: fz3KQOY_TEO_VKBx4rabiQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-de: YiWrxFuKR1OyrvKC9rcNEg + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-GB: Hzly1TAZS4qoe1RhomMSRA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-US: IA1xk1SNSwiKum2tQSib2A + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-es-ES: eNQ2DeizRPOcpAMuEXYzuQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-fr: P144Ez8JTXGqEPgeVBIvnQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-gd: CGDo-f4FTriA8vYTTblgJA + release-partner-repack-repackage-win32-nightly-qwant-qwant-001-it: S1CTzv8bS-OEbTM41ZQNTw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-ca: N9TLDVeuROmXNSlfbpLjtQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-cy: cqB_oVSfR6a6XZa-hP5vjA + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-de: YQtC0BxqSi28XJBsys8pDw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-GB: cr0Z7P5gS4KsQj_YfbZjkQ + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-US: ckjpM0pJS-e314EyR6xFxw + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-es-ES: VQvEJ7K-QDGf_Jd9hPus5A + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-fr: fT0EZyjgSICV2EO8ocAw1w + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-gd: SICVC4-zS9uKk-tOPbRyIA + release-partner-repack-repackage-win32-nightly-qwant-qwant-002-it: ZRZgxxNwShm2vLjRKcSFSw + release-partner-repack-repackage-win32-nightly-seznam-seznam-cs: FHmui_2QRryLvwwjv8qzSw + release-partner-repack-repackage-win32-nightly-softonic-softonic-de: SFTRhyhaTBimqk9BMcsA_g + release-partner-repack-repackage-win32-nightly-softonic-softonic-en-US: X8VrHZiQTgyW-C_z20uaXw + release-partner-repack-repackage-win32-nightly-softonic-softonic-es-ES: evILFpXASROi2D9uBItLig + release-partner-repack-repackage-win32-nightly-softonic-softonic-fr: X5EWtR9HQv65EZbMV9_1JQ + release-partner-repack-repackage-win32-nightly-softonic-softonic-it: cb24zrugSvGAHmNcc6wUQw + release-partner-repack-repackage-win32-nightly-softonic-softonic-pl: FCdlryzFQWq5bGV08_9tGQ + release-partner-repack-repackage-win32-nightly-softonic-softonic-pt-BR: AdTGlirBQFmc2gNiHTYIpg + release-partner-repack-repackage-win32-nightly-softonic-softonic-ru: IuuQv-yURfecijOPRtGyVg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: RVP3ldcTQRGjGm7KEmpukw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: AQ-AtChBSymQn_z9qzMxlA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: LnIRwibkR0yaVdyXamB0mA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: C9F5ek9uQFWQxxIhxlq7Gw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: ekO5I9v9SseQqN5yB835kQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: FvVPwTdpRIiZuPfFtDjB4g + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: eIfnQ1cUSeG1DXZUukDIug + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: MG1uXoxaTkm2NjItt63Eyg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: MdVJ0TetRqOYhNrCVykktA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: boKl2qf8SqShQQivsjhExg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: Jg65r60AQOOVc70MvlmISQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: V-R0681nQeKwbmlhgioNeA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: dlM-XSgYTO27Xs8rVkc2sQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: SmMP5ZSXRLqjro1h19xzYw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: fXBjKt4xR-273oduIjInZA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: BstZlJRCSaiBwGe-tzpkmw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: JxXT6G1xRr254_yTp3cXHw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: bDcM4YpPSoyjDJcgrC-9qA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: Tv2OE5d1RQKsh68JjsMgRg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: EjRC3_obT9yk1_J2BYkHLQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: KH5GPV0nRUuhoeIU-9h-QA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: XkwOpKMVQWS8BEe080YBxQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: Ov2pGHUlQha2qPtPgA6Uiw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Cy72BXzqRIeRQQOboJ5JbQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-de: SNxobrgxSLWjkfxUzqq16A + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: eHP0wj1YTfyHxi9EHA0-qQ + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: RADlGUuvQiu5RdGNJ1hmnA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-fr: XPTDsHThRzWfqTiTUcGTpw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-de: QW6D9x77R46xw6BmOt_q3Q + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: d9VmmRj5Qmeq0pWtrcK7Qg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: KanT4EmiSxWt_PXFFnHhug + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-fr: XKwNtpJQTNi3WY0_mgbgYA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: RIq99qhyR1OUr6oedsNyzw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: exqP39TUSySyY6XlXQFI3Q + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: ZCKJGDBWQGO6V1ewQWLdzA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: YGBI6vQtScqKDxAGnQzZaw + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: Iwj7DUd2SLeObijED9Kalg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: VCI4RWCoQIOXGLdkgbPFBA + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: B1BIBSxcRp2JwrWwKF6oXg + release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: Y0lf2aFjQHWzbfqYxt-3tg + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-MX-es-MX: BbKSHTrNR9a-i_xefcb90w + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-US-en-US: Rjoz5KpSTeCvSKmjKLM8fg + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-b2b-JP-en-US: E9Do2gUZQuq1hppHQc_KtQ + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-B-US-en-US: A65WJPa-Qs6P1s36Z2Qhtw + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-MX-es-MX: HHOddPojRyGtgqoQzx8p1A + release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-US-en-US: LJd2kFtaRey2tQtKsCb-5g + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-de: Mye60mWJT36h-kN7mePI0w + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-en-US: Atew1fCCSX2Ze4-VFoqjFw + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-de: Du6Qsp04Tgi4XHJ2-V8A6Q + release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-en-US: TRluSh6JRxGd0bba0QALig + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-de: PpHKU2GrQ0ORrYEO4Tx3Sw + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-en-US: G2hdpH2FTlu691NgDOIWSg + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-de: Ov2G662SRUW2bLYWrdKdow + release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-en-US: WZcUWdH1SRGV5-5WllU-nw + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-de: PKQK0Qp3RoWi_kfXsJ7MjQ + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-en-US: D39amj5YSbepD2Mef-HQSg + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-de: VHDevsOySP6OyVY4o0pvvg + release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-en-US: S1nhtn1tSVOWz0KDQPckmg + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-de: Q0-q5B7RRRKcv5mPk4YSTQ + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-en-US: LY6UX4uhQvm2GG13sIYL_A + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-de: baGi8FY-RdKn-LMnwM5M-Q + release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-en-US: bA9hzUjuTSKI5rjB7I6J5w + release-partner-repack-repackage-win32-nightly-wildtangent-wildtangent-en-US: e5jXIU7USrq8FBhhaw6rXQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-drp-ru: exfRz_NpT3mRbWAIbofKCQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-planB-ru: LCMw7VijTW62FcvmkT_7QQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-portals-ru: AmJVzwmmQS-kOH57cefg7w + release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-mz-ru: MwgzxXNzQh-Hh6A3j5p7Tw + release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-ru: Y3JA0lAVSDiY8V_PWSI2wg + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-gezginler-tr: SNCgVmDQR3G6vdVeTYmKuQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tamindir-tr: G3mycDCQTUKzHJqqQHaZ7w + release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tr: TBhZKnmATcCvKoUb-sj6bQ + release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-ru: U-qi811dSfGYxKrk3Ebvow + release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-uk: Cfz2DZRRSUi-axyLqvEsRw + release-partner-repack-repackage-win64-nightly-acer-acer-002-en-US: YeSlBZB3SGmhkexMgHMPTQ + release-partner-repack-repackage-win64-nightly-aol-aol-en-US: IEuKI_OjT8GJoDuRfheE9Q + release-partner-repack-repackage-win64-nightly-aol-aol_de-de: ft9NUZ9tTHiAIW1S8t-RlA + release-partner-repack-repackage-win64-nightly-aol-aol_desktop-en-US: MeZvAhf2T9GRVeEuH3DyPQ + release-partner-repack-repackage-win64-nightly-aol-aol_huffington-en-US: Y8ZGBeugTdSCJujhFZPU0Q + release-partner-repack-repackage-win64-nightly-aol-aol_uk-en-GB: Nv_W78CGQnKah_8uY97_qw + release-partner-repack-repackage-win64-nightly-chipde-chipde-de: aOHqPG3YRZCtmyhPoPnAjQ + release-partner-repack-repackage-win64-nightly-chipde-cliqz-003-de: JsJzPtl6QRO8hap9Bnm0vQ + release-partner-repack-repackage-win64-nightly-chipde-cliqz-004-de: WylMm-GbRDKndFFC3qzvlg + release-partner-repack-repackage-win64-nightly-chipde-cliqz-005-de: Bgj-xcjDSYqLUT-ckRWwWg + release-partner-repack-repackage-win64-nightly-chipde-cliqz-006-de: P9m87OM-TJC-mPd03eGE6Q + release-partner-repack-repackage-win64-nightly-chipde-cliqz-007-de: JUANGkdzRLmXBrDo1k376Q + release-partner-repack-repackage-win64-nightly-chipde-cliqz-008-de: EpovcoD8QAWR4kp36zU5fA + release-partner-repack-repackage-win64-nightly-chipde-cliqz-control-de: M1dJljdOS5egZFBzDMEIEw + release-partner-repack-repackage-win64-nightly-chipde-cliqz-de: QQY1nBPYT9GuIaOVSwFj5w + release-partner-repack-repackage-win64-nightly-firefox-firefox-election-edition-en-US: EFW-a_eZTpi3CXvJ2QeMAQ + release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake134-en-US: TDA-ohu_SdCwyYDcro7OyQ + release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake137-en-US: XnuUiKAbR9qBISbdPgUUEA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-de: QuOUcvv5QqKgQRw06NDJFg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-GB: fTH5hDf2SGqcotWTp5tfbg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-US: SmFZw7NvR122j02MBy--2A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-es-ES: J4ugsatbQzeASM3fEXPbQA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-fr: fEW_SnPVSPmXlPaKMG-b_g + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-id: DqaOEmYJQZyvPrPg36zTfQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-it: LqEixu4QR1W5RlbskO1BWA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ja: Xu6QlLbyTPuo0GMKerIfUg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ko: H8A0qzCjThCYC5FFVhtt1Q + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Z_KAK0GGSfu_r-etz5Z9xg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pl: LuNmOwwSQIiSLBlEQeKtzQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pt-BR: ALN_GTZ6T5iFkcq8mZJz5Q + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ru: KPWqM5KfRvekOUQhiRyrTw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-tr: UvGvdmSrTNWJpIqeAYlgIg + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-de: FprQNQXKRHGVRtZibMpkug + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-GB: cTNIcwgQSz6fCY1seslhUw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-US: c5xqN2mWRjujUfQQFtl6FA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-es-ES: Apj3zPtTRD6HRAy-NTF54g + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-fr: J4d14z3tSa2DRQUjqOqBMw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-id: DcTfYMKyRGOiYpmSBVFFgA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-it: DqkTId8VSmyOBtdS2-Hnlw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ja: BWIxO_MvRqulimYMFl87RQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ko: F-s9DJQKSSWd-EckMoMNQQ + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pa-IN: GAT5OnIGRkWMWNvpB7PsgA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pl: XRM14nw_S0OiKbNF12KNTw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pt-BR: WElGrtVHTVuAo3oOWLUD5A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ru: Y1l29LARSguqjrcyrfZ_Hw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-tr: QqwTkQwkRkeZG3qQZXsy4A + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: e4lCFfFeTDe7osZWxJUErw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-en-US: erjqvW0KR6q6868D-akSaA + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-en-US: fsZ01vMlTRuPcovKGSG6Hw + release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-tr: QCeMVexaSASfyHCzh_aTCA + release-partner-repack-repackage-win64-nightly-mailru-mailru-ru: MmcxWJP1QUWc_p9AQXqp5g + release-partner-repack-repackage-win64-nightly-mailru-okru-az: MYRCjHdHQVuo1CoSXvS6kA + release-partner-repack-repackage-win64-nightly-mailru-okru-en-US: GuZHICnORQKQAoXlYC1cuQ + release-partner-repack-repackage-win64-nightly-mailru-okru-hy-AM: FxJkCLhXQo6wYOqamVJdoA + release-partner-repack-repackage-win64-nightly-mailru-okru-kk: PpOcvRySRnqUXFQkRhVqPA + release-partner-repack-repackage-win64-nightly-mailru-okru-ro: Pg2mwD5CTxKSXV5BHJnFGg + release-partner-repack-repackage-win64-nightly-mailru-okru-ru: Q9Z-31u0S_i-VCKHd9U7Zw + release-partner-repack-repackage-win64-nightly-mailru-okru-tr: O6r3x0MYQ5ydkPBHW-uncw + release-partner-repack-repackage-win64-nightly-mailru-okru-uk: EYtppbXXRE2aJMoxDa5phg + release-partner-repack-repackage-win64-nightly-mailru-okru-uz: Fe5Z5g2cTBa__YEZlvkEKQ + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-en-US: bVJI3h0QT8KNgHrLFoVJJQ + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-zh-CN: bt_q-tkkQxusnHsV75ZWYA + release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: Ugo6usVtSHKP4YIHOTYIpA + release-partner-repack-repackage-win64-nightly-mozillaonline-others-zh-CN: aRjZPvZpR1y9oC6jA04law + release-partner-repack-repackage-win64-nightly-mozillaonline-qihoo-zh-CN: NPRl45ohStW7Lm8oGcxDGQ + release-partner-repack-repackage-win64-nightly-mozillaonline-tencent-zh-CN: fE_-b4dRSVONMG9gLIl7AQ + release-partner-repack-repackage-win64-nightly-mozillaonline-xbsafe-zh-CN: J48UStasRLSXNrcJNMQrPA + release-partner-repack-repackage-win64-nightly-ntt-ntt-en-US: cO7csiSPSIqcTtt8Ioozlg + release-partner-repack-repackage-win64-nightly-ntt-ntt-ja: VkXiyXEXQoOtcw6MK8Ic7w + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-de: ACNpEeYFQXyw34ued0WmUA + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-GB: MPtUVZ-kRSmc2ViWnyRi0w + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-US: Kh1n0YTqQ6m6s8-b36z7-Q + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-es-ES: CzkvGintQ1uiknxc_kWCtQ + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-fr: VLFknhL3Rc6mpPdSyxC_uQ + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-it: NcqBtxSCQN6Yxy3IS1uOzw + release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-us-en-US: EY3IQucUSZqHuf0_K_gRbw + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-ca: XNHRVjyLR5itm1E8BmJkIA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-cy: Z37kngz0RP2y5_i6s1a-rA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-de: VEFQYZvNSu6f9004pjwwLQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-GB: DuB-14ebRGqMin3RNcVIXA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-US: fHpc5fikQpGFP3b4AimdKQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-es-ES: E4YjKxSPR_--6zvSmO2ueA + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-fr: UgREzlOxQi2phtbUsJQBDg + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-gd: Oo0lnutyTvOLDW8xJK75vg + release-partner-repack-repackage-win64-nightly-qwant-qwant-001-it: Cso66dw0QjupmkGtX4ZHTw + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-ca: BeaAQwPTStWHHdlczJ0roA + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-cy: ZQHceiD3R36cMhi9Hx7L7g + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-de: U0EfA2W_SfKbmSSjASJeWg + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-GB: D8Oe0KMYRoaxkgoqmJ2EFQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-US: ej5MlnWjSbS2NVkUi8Op_A + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-es-ES: e37uE19CQESgyPvXyifWWw + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-fr: RNoW9lGjTUKNDC8GWJnypQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-gd: YjTslyxTToWZc1xaIH0rKQ + release-partner-repack-repackage-win64-nightly-qwant-qwant-002-it: XAMwgeJRRhGhhuEuGq6nmA + release-partner-repack-repackage-win64-nightly-seznam-seznam-cs: Qa2kHaR7S4OLOSdmxJxPSg + release-partner-repack-repackage-win64-nightly-softonic-softonic-de: T_gG-ufiRB-gmsJNLUcZwA + release-partner-repack-repackage-win64-nightly-softonic-softonic-en-US: O_DX6Y8RRbOiAgM6AfA5VQ + release-partner-repack-repackage-win64-nightly-softonic-softonic-es-ES: EuENXRUmR9CbFU-y7vcKFA + release-partner-repack-repackage-win64-nightly-softonic-softonic-fr: Iex0lQc_SJiWXPp__tt1Tw + release-partner-repack-repackage-win64-nightly-softonic-softonic-it: EUc-gZybRPGCDhmB2qAFzg + release-partner-repack-repackage-win64-nightly-softonic-softonic-pl: VZUVWOzPTjOuBFIoyWM_Lw + release-partner-repack-repackage-win64-nightly-softonic-softonic-pt-BR: S2lup30eRH6OqDrRk_iweg + release-partner-repack-repackage-win64-nightly-softonic-softonic-ru: b6zroKF2Rq6sM113Dd7_BQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: CdnzGiG6QhiQi7o0iVp-Hg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: J9SdKikYTr6-VoTnMLic_A + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Es1hCiyNTvKTtixDJx48iw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: cJg9LR-RQZ-rm6278IgGhg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: QLbykZ3NQu-hc4yxosxepA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: fOQ6Mdx3TeWzqLXXC1sicA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: LdEkTGacRs2ZzO1Xez7xtg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: a0JTJaKWR1SYqJPkxulOUQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: JqMIDRWtSw-j7TvEV02a5g + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: bUKWE87QTou7mec2ohn5EA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: BvYadYwSSQOicAOOKfYsdA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: IbyZkig7QCKcDK85Sk4vfA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: GTH8RvipRx6T_P5SIaC-7Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: TzLC3c7qTwOKRR2Bv3yiCA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: S-3TDDmqTNyrgJxmjQGqZg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: E-gK6QQxSY6bOb8fsrEy8Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: GCYpGh3_RsuDf3sm3cftkQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: Frxf6zUlS5CN6AxHB1wT-g + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: brtMY60TQVW9Gm9BZ5zaVQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: Fg_PB8BHRHuPUR3efdrBwA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: e-MAIzFDQ9WeDxwYeuHH7Q + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: CzFBWxoiQt67ne6l1DWT7w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: deM7K7vMRiigx_yRIIqXiw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: X9IfgCo_RfWI1hGoDtVeFA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-de: V2rYgfVFQAiOO5ZAcMSNjQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: NZ44B18mRt2iLV8XJMXp6w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: eIt1et-tQfC2XM0UUHpJ0A + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-fr: b7mujLDoRD-xbVvpoeyaKw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-de: IbHOwRe3Tdmzt5xtLdqUgw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: EbX4WQHRTdWLigqlN5hhWw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: GRuko-5OSm-zpEgzsIFDlg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-fr: U9Jmus0tShWAXHPj6CJmLQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: dqN9lXS5SrSG-dfC4HpwtA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: aTwbVl-VS4mcJwBUmYSMWg + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Njw6Pv_JRGKUV6jY7OJIdw + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: fWVce1_8TFW-Qj41F4KzsA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: V8WPCZGKQiqzuxXASaEORQ + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: ewsuiRh9TOOlst0jZUQTsA + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: ec7BVNQhQOKe_VFpHbeT7w + release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: cqQJ4Bn6SiuNy0P7GcDvQg + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-de: Trb3Gl7JQWeS9nD4sWH7wg + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-en-US: S7A_nBH7QDmdwLN1yic0JA + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-de: cB_7dRHpSdCutMk2Dao6Sw + release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-en-US: ZDFNUVqJSemGRV-GcPfl7A + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-de: ZfJKnmvlQVy3RhZNGaizQg + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-en-US: ENvE9b0bTmmpXZb3kXvK3A + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-de: NFfPKFAmQo27c_97Wi0pbQ + release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-en-US: eCoOv5C1QAutxfD96KBd-g + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-de: CHLSWVCZScSsz93Z_YEylg + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-en-US: TR3jRWVQTeK1BVnIZ7sxcg + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-de: ExFGqNLcTs2fPlS-tfnLbA + release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-en-US: Kxq5nF58QjWXP11TYzGtHQ + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-de: atKV-0H7TpyTxYlbjmyXPA + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-en-US: dX_6iMSWQlSaPTOuMHmqlg + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-de: WslGWYz1ThqGPw_RzLMW-Q + release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-en-US: VwUogMdfSW-QdTufFIPEcw + release-partner-repack-repackage-win64-nightly-yandex-yandex-drp-ru: alpNVhKITcO_LUS1nF6ezA + release-partner-repack-repackage-win64-nightly-yandex-yandex-planB-ru: BL6PRm3JRTaGRwEhBF1MsQ + release-partner-repack-repackage-win64-nightly-yandex-yandex-portals-ru: XZJStNe7TV2bQiiFBgJ-4g + release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-mz-ru: W0vqvjPJR0C-tHGQOH_fhg + release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-ru: Fx26yAH0Q_a4oysqmGtSnw + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-gezginler-tr: fafg2Ah7TfCf4lRR3jNIcA + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tamindir-tr: Ghjy1OcfSeKxqq1T46DPVQ + release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tr: LZ5ICIzWT0i43lzcAO3gkw + release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-ru: VA3zk1qkQBGJ-SoVy_aNjg + release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-uk: LzWbkscgTXiyDMuk5pHQaQ + release-partner-repack-signing-macosx64-nightly-aol-aol-en-US: bT8yXA8OTbG0ljyaXJvzWA + release-partner-repack-signing-macosx64-nightly-aol-aol_de-de: HjlnJkDUSOq-JyIwwSgWcg + release-partner-repack-signing-macosx64-nightly-aol-aol_desktop-en-US: YuSYUb0SRqW2lItNKbcoEg + release-partner-repack-signing-macosx64-nightly-aol-aol_huffington-en-US: RmDzk1gcQDGoDcoNrwDQnA + release-partner-repack-signing-macosx64-nightly-aol-aol_uk-en-GB: KTb0R-feQ5-sF2PVLY7h1Q + release-partner-repack-signing-macosx64-nightly-chipde-chipde-de: Tti16V0zTUurNgeEVyR0sA + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-003-de: FZbY3P_PRKyS_0MSTEa1xw + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-004-de: Nlpi1gz3TjuzokVemJ4zYg + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-005-de: ITA6vOTbTqCwwQCK7Wwoag + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-006-de: Hyc5zWuKQQOp7NCJPxeEjg + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-007-de: cAQOg-MsQoyZHE6fWFColQ + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-008-de: U_5RarFoQD6b_Ny56nuPug + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-control-de: X-eLIXjMSROES-XC0fbc0Q + release-partner-repack-signing-macosx64-nightly-chipde-cliqz-de: PXVdBSTWQ--nPyvR72WcnQ + release-partner-repack-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: PJahkc4URvmMSIc0wBHOWg + release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: AKZC6zJ6Sf23-ajcK7tteg + release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: WgW0LxBgRB64COq5zaLoZA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: OGL6miIyQl6ejstRyYbZYg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: DeO_QlylRjWYOySyLsgP0g + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: NL_9kqjCT-SV2tDKSQbMoA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: V5MFtJUYQ2CtGQwWEhzpoA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: De5zAXkHRdy6VPIEIHJLkg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: CYWHPXFaSeGjzCTAujiacw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: DizQdvWOQFe7NB-p5IGNOQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: dFDNpvsOTMKNF7her5lcbQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: JhggfF7uSvmfsoqqqWsUVQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: QJRcOuGfQemj80a5shQ9hQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TcadWvfuSTGEhcBTUJHrGQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: eRhVPrZ_TBWJ7JS5rY7M0w + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: eQy_T52XTLmmSvrHvGsePA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-de: ejz1aMgWQKCRTU89D0Yzog + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: CMUbtc3ATXibTRY3JtR_IA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-US: GypnOXlRT56pYSrutbNyyA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: I4FK4yv1QGuzuaIuQ5fCfg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-fr: O3g8gp6vS26jiV518PcqLw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-id: N1tidPfgRWCvDTJITK67SQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-it: eVM1OXfmSiSvblqX3u5lMA + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ko: a5GiRYLvT0uQlQ8sL-YZWw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: I7V1kEgqSlq2Mr-fq3Bvlw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pl: E4nl5id6T5OU9ZrOwU7rLw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: P8ZRf-QKSAiaGgxuv_uJbQ + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ru: dtt-NOTDTR6aZVFZ7UxwAw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-tr: VefrozaiTLm6xZchLIgMiw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: LOf_HHjHTh6jfbY1scsRMw + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: B79WTRwSSOC7G_o56IWyOg + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: QXL4HP1SSKChDf-eNaha0g + release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: HLkCgCv9RcqYyqANWMM77A + release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-en-US: UWvqY5OTROWGaAlFhaks5w + release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: Niif9xtzRtSha7kKio--Hw + release-partner-repack-signing-macosx64-nightly-ntt-ntt-en-US: BeeEJr_pQ02_p6W3A2gIVg + release-partner-repack-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: UiIX3-wSTie6PjxUsGqvcw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-ca: cGOecsznTcuFlrFfi3jTiA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-cy: aE1odJDOSgyrKzArV9uo9Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-de: Vm894j09TEqN0wXQC_Tgaw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-GB: Faq16OtNT0CcPcWrKjwiZQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-US: TOxEAdKCQKq4WQUonidaLQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-es-ES: MTU06JWKQrif2Z-TZYp_IA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-fr: LF-tWKw8RwCrUJkJ-z3W0Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-gd: VQH4gnIARjy-ZOFZYnGBCQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-it: R44v2MZ0S2KEEehAhk8t0A + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-ca: Xed4qqZ_TTC8G1KYJI5gOg + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-cy: YrGQ5HDyQpuiCtj8XdhMRw + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-de: X5-Pt6F2RuWrDji-QAOePA + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-GB: cI1Yn1yJQgehetWlZ00h7g + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-US: NTdI9rQSTSK6b9qZmXsg-Q + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-es-ES: HHywXvcxRPSMgDDv_Tcpow + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-fr: d7z68L2aQNG8D3fkvnyg-g + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-gd: OAGT7eiCSr6Dn305U-NtZQ + release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-it: dO-mH5mnQ1ynZhcYsDO7Dg + release-partner-repack-signing-macosx64-nightly-seznam-seznam-cs: BQz46WaxT--OPG0RstNmsA + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-de: R9sFKzQwQtiAzS63SgMgug + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-en-US: YV2v7kStTZeAKl20cucm3Q + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-de: Iz80VQhWQQGLgDFhFXe9BQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: RX8fyEksRNSvJz_b58R8Kw + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-de: XKgiCksYSxGXMY45_UYfNA + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-en-US: NGFvaGQwSf-u2ir4HoeOCg + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-de: BfccjqTpSXSoUWhb9s0X_w + release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: YZ3m2cr8Spm-OuS7Sjm7nQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-de: HmR9pWedQTOhHHEHr4dHUQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-en-US: JVgTpY68S4CkbF3DCJZDJQ + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: EVHlFvhjQ7iHVGXkJa6miw + release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: X_xQQ6PeRLyTaZLeRY7vuw + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-de: JPoz-NwySiOk6b4ZTuIMDg + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-en-US: Fw2zO4KNTLunbE3tRnvuHw + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Z5_96ISeRmicdlgexU1aSg + release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: Wq608zqiQQCyJke0ueoTYw + release-partner-repack-signing-macosx64-nightly-yandex-yandex-portals-ru: besdKUczTsGAx7VIi6vgxw + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: CyAeWHPGQ7CMK3-IWijo0Q + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-ru: StqQciJJQWqG4LczK3BS8g + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: Zv8jpEZyQbOscnaOdDjdfg + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: DfJx4g9MR8eTShBTKkexEQ + release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tr: OPt9p01kTvm9EvviFu_kRA + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-ru: eT5UzT9zT-uQla57siMjVA + release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-uk: ZF26uloLTa6ZMzYKR09j-Q + release-partner-repack-win32-nightly: Q2j3JmrhReShd2aIRSSGsA + release-partner-repack-win64-nightly: A5KcGJIETCqIWgbYLuAJ-Q + release-snap-push-firefox: M1WO0_B5RLSiPjw9dpcZ7w + release-snap-repackage-firefox: NR5c8ichS_CCJeFzorjVCQ + release-source-checksums-signing-firefox-source/opt: JIcVwohsThmr2gFT68astg + release-source-firefox-source/opt: SO9LvB6YR_a9IhtnPui2Fw + release-source-signing-firefox-source/opt: QMzngmz6S_S4aJyLNOa3Ew + release-update-verify-config-firefox-linux: Gk7hT2U4QmuDnJSIiVT5ng + release-update-verify-config-firefox-linux64: YJieFTJ4R_KHcrz5j682Iw + release-update-verify-config-firefox-macosx64: Uo1TbpxGR4aADK_Y2pjpvw + release-update-verify-config-firefox-win32: YLV4XV64TOG2I2B9hp1Tdg + release-update-verify-config-firefox-win64: ceNzEVh_Qyu5GpVdV1nwOQ + release-update-verify-firefox-linux-1/12: KeZPVc_JQQ6DZz0rhh3Wew + release-update-verify-firefox-linux-10/12: OCpDzWzdSfeyuZv4YUh_pA + release-update-verify-firefox-linux-11/12: G0PTyvNwSh6955VwsidCZg + release-update-verify-firefox-linux-12/12: Ic-o1815Q5GjyEuie6-F8A + release-update-verify-firefox-linux-2/12: cliJiYh-R86wONFxHUyDuw + release-update-verify-firefox-linux-3/12: dhYQZiXhR-qhV_CYBmm5rw + release-update-verify-firefox-linux-4/12: epNDNn1-SdKyGyHtFwXXkw + release-update-verify-firefox-linux-5/12: NA57z1B2QoeP5bst2D8B9g + release-update-verify-firefox-linux-6/12: Q8JpVcNgSjqYTmC4YoKbaw + release-update-verify-firefox-linux-7/12: d4S97_aoTZGNTv_RmAxkyw + release-update-verify-firefox-linux-8/12: H7-UBOvrT2i_qxoT0wj3bQ + release-update-verify-firefox-linux-9/12: HUxWXBs8QGybX8GyADFaVw + release-update-verify-firefox-linux64-1/12: HSfUXuLETyGagjDpXMjpFQ + release-update-verify-firefox-linux64-10/12: QmQFsInAREKyeCF1h1iIHg + release-update-verify-firefox-linux64-11/12: WzrNxY35QQaWAwiNl3WWAA + release-update-verify-firefox-linux64-12/12: d05NAVzIRaOYed2ry2LbLQ + release-update-verify-firefox-linux64-2/12: TNphRsScRQ-d_4piRHMzPg + release-update-verify-firefox-linux64-3/12: QZGi-n2nQay3iVUzZ824Sw + release-update-verify-firefox-linux64-4/12: DkKLHEm1RQ6afg5asVO8xA + release-update-verify-firefox-linux64-5/12: NZNQy90EToSfM5i4jbjL2w + release-update-verify-firefox-linux64-6/12: Hxe0dFveQa-DOqdz3JBZrg + release-update-verify-firefox-linux64-7/12: FSPmKU6dTzSVNuz6Lty5Og + release-update-verify-firefox-linux64-8/12: FCe_UwVOSlaOauBX6pqKKg + release-update-verify-firefox-linux64-9/12: f87W-YfIT8Cul52FPpS8_w + release-update-verify-firefox-macosx64-1/12: aDR05DSeQtC3Ga3aroy4Xw + release-update-verify-firefox-macosx64-10/12: V-64IW93SEOMm6gJQN2AlQ + release-update-verify-firefox-macosx64-11/12: IIHf7GJCSDC-zluT2sfv1w + release-update-verify-firefox-macosx64-12/12: dbImgTthQqC08PYfgSkYdw + release-update-verify-firefox-macosx64-2/12: fV3FkRr1ToKbq1vxDBf-CA + release-update-verify-firefox-macosx64-3/12: R2YI8NnGSVKdIpAhzyirHw + release-update-verify-firefox-macosx64-4/12: DI6zuJcqT9aOsiw0pzY68A + release-update-verify-firefox-macosx64-5/12: H6-IrY1oRoWRONcdWStWwg + release-update-verify-firefox-macosx64-6/12: dJ-jl4-lR2i5yL8sEnXmcg + release-update-verify-firefox-macosx64-7/12: LCGLW9rDTt2lhQ_kMtC2fg + release-update-verify-firefox-macosx64-8/12: LgjfS9NdQ2CQ-GBSEqlh0w + release-update-verify-firefox-macosx64-9/12: OAS8WQAiTj23ENdpUz2Akg + release-update-verify-firefox-win32-1/12: YaQv2wBZR2iirDqWwuuP1w + release-update-verify-firefox-win32-10/12: FVHQU_WIRtO4_W0ieGXMGQ + release-update-verify-firefox-win32-11/12: e78ielxLSPybE5pSgEhqcg + release-update-verify-firefox-win32-12/12: B-4uLMGkTYOH3XDA9aDSpA + release-update-verify-firefox-win32-2/12: SF-_AGHATMmxiloUC16d7w + release-update-verify-firefox-win32-3/12: OBABm9sZTOOeGkUSmo7CWQ + release-update-verify-firefox-win32-4/12: dHcaB4k9RnW2hfNOrhZtJA + release-update-verify-firefox-win32-5/12: DiSRxYaHR76Chb7xc_dOxg + release-update-verify-firefox-win32-6/12: edUjcdfqQiyOhe5WaCHMXg + release-update-verify-firefox-win32-7/12: DqBZfu4vRoiQWzyfF-bOMQ + release-update-verify-firefox-win32-8/12: UR1T7w3LR1y_88Lm3w_LFg + release-update-verify-firefox-win32-9/12: WS-TE4KfRXShAa0AO2bPPA + release-update-verify-firefox-win64-1/12: ff2jw9FGQky6X7SNi929Yw + release-update-verify-firefox-win64-10/12: Hr-hYh5IS_aAlXyOsQpvwg + release-update-verify-firefox-win64-11/12: F8trJPI3T8GJR3aUWB1qLg + release-update-verify-firefox-win64-12/12: HgCFjs6zSNaJXffamvz7dw + release-update-verify-firefox-win64-2/12: WEgA4tB1Rh6ba93GW0UmJQ + release-update-verify-firefox-win64-3/12: X_aWUw1KShK1ZZ88YPM93Q + release-update-verify-firefox-win64-4/12: dJlRrwgbS0idC_tw3uWrgA + release-update-verify-firefox-win64-5/12: eGBzw5QSTDevIf6fKNMDgg + release-update-verify-firefox-win64-6/12: SKX8eJ4ERomCtG-CNbCpDw + release-update-verify-firefox-win64-7/12: cDLdqOXsRAC8ILD_pac0Xg + release-update-verify-firefox-win64-8/12: VdWR75VlR1-84PuGFaPuwA + release-update-verify-firefox-win64-9/12: OQwy7IqSTOm32NVXn_Wpxw + repackage-l10n-ach-linux-nightly/opt: X_dCq3IATvWTts4vFpiKvw + repackage-l10n-ach-linux64-nightly/opt: BjV47tinRw6RKRJLmOkhVg + repackage-l10n-ach-macosx64-nightly/opt: VtiwYS1IQ4-KTB5uBqUDdg + repackage-l10n-ach-win32-nightly/opt: Y0s-H8AlSKeXwwih_X6MHQ + repackage-l10n-ach-win64-nightly/opt: K9dYgwVSTaOnlvmY5uF4Iw + repackage-l10n-af-linux-nightly/opt: QuvvYbPITDusMh5NM3uqWA + repackage-l10n-af-linux64-nightly/opt: fjOpFEGnSsWj0EBMerzydA + repackage-l10n-af-macosx64-nightly/opt: EyjWmTuTRWCg3nS2J13Dow + repackage-l10n-af-win32-nightly/opt: L4nc7wdITbKYHrY8MeoGWQ + repackage-l10n-af-win64-nightly/opt: TfuIJO3SQVC8eYAdKQ7yvw + repackage-l10n-an-linux-nightly/opt: SlVK8RUxQgexIVKFsLdZ5w + repackage-l10n-an-linux64-nightly/opt: NYCxlB-SSreKnQ0pW2IZ7g + repackage-l10n-an-macosx64-nightly/opt: N-zDaE6VSz6FaBT5v2G9Qw + repackage-l10n-an-win32-nightly/opt: XAfftAF8QMye0KJChF0qXQ + repackage-l10n-an-win64-nightly/opt: S0-u4EurQLiy2CxFa3vrqQ + repackage-l10n-ar-linux-nightly/opt: ALzyUr_aRoCSi3Qn30AmBA + repackage-l10n-ar-linux64-nightly/opt: B_-Qwi_eSayPXs-lNFqmUA + repackage-l10n-ar-macosx64-nightly/opt: TO3j6xgbSiKOw5YL1oXI-w + repackage-l10n-ar-win32-nightly/opt: TtQeCz31ShuAScrFs2WqQw + repackage-l10n-ar-win64-nightly/opt: TfY_MC6_T3aCoiqaybiyNQ + repackage-l10n-as-linux-nightly/opt: Me19EtmeS1SaOC1lQGJx-Q + repackage-l10n-as-linux64-nightly/opt: SJW6-vTnSq-yVLVFYIWCHQ + repackage-l10n-as-macosx64-nightly/opt: ASmlqxFvRRyVYa0L23yqcw + repackage-l10n-as-win32-nightly/opt: UjohhO37SCCFOEpKHntilw + repackage-l10n-as-win64-nightly/opt: VHFj0TVMRQqSDlkKz-Lopg + repackage-l10n-ast-linux-nightly/opt: UMn3rVI6TjaR3MeHKPPcZQ + repackage-l10n-ast-linux64-nightly/opt: UwvcC3ncQTW6iupsln1GgA + repackage-l10n-ast-macosx64-nightly/opt: QuFJW7pgTg-YAY89xSb8Qg + repackage-l10n-ast-win32-nightly/opt: QW8H3MywRwCi7BR7LznxZA + repackage-l10n-ast-win64-nightly/opt: UpHB1fE_TJWZPkbsPIIOYg + repackage-l10n-az-linux-nightly/opt: W9V34gJcT4C1SZUfKqZK1Q + repackage-l10n-az-linux64-nightly/opt: JOszAMgARvCqtxNCnDDqFQ + repackage-l10n-az-macosx64-nightly/opt: DEkDEtSASY2bFtLKa4A2xw + repackage-l10n-az-win32-nightly/opt: T2OLtmLVRSWlEMPZKEAJ8A + repackage-l10n-az-win64-nightly/opt: E8OsEFzgSNO1mLiylHxYqQ + repackage-l10n-be-linux-nightly/opt: ehChRV4HQqmg6bSI5kkySw + repackage-l10n-be-linux64-nightly/opt: cbEL-MAsS3OrjGw3YZOs5g + repackage-l10n-be-macosx64-nightly/opt: K0FYej7bTzeJGF0wz_8rwg + repackage-l10n-be-win32-nightly/opt: IAypLFOSQ2OKgBOowJtvDg + repackage-l10n-be-win64-nightly/opt: IhdlTLY0TVWJobkdN2NDVg + repackage-l10n-bg-linux-nightly/opt: EWLggAibQ3mGL5EOKF7Dig + repackage-l10n-bg-linux64-nightly/opt: E6gDS7CmQBuyHHPqil3nsw + repackage-l10n-bg-macosx64-nightly/opt: QcHz61IfStKMkFFgawzV5Q + repackage-l10n-bg-win32-nightly/opt: F76yjGx-SqiOADsUTUWqbw + repackage-l10n-bg-win64-nightly/opt: KycXXp_AQ5G-VLwpSMt3Mw + repackage-l10n-bn-BD-linux-nightly/opt: J08jAPC_Qq-9mAgeQu3jiA + repackage-l10n-bn-BD-linux64-nightly/opt: ZCh4JWwGSA-F1VP3Qn69Mw + repackage-l10n-bn-BD-macosx64-nightly/opt: YN5ogj6eQDKShzIfjdKyKw + repackage-l10n-bn-BD-win32-nightly/opt: Q7TR9jwaSmqU4UzGrlR8PA + repackage-l10n-bn-BD-win64-nightly/opt: YC_tfgLjRMKHAP4giBQOPQ + repackage-l10n-bn-IN-linux-nightly/opt: d8Mw0BxvRQyKq7K3oY4_bw + repackage-l10n-bn-IN-linux64-nightly/opt: BCNxZWrMS_22_i29--8bNA + repackage-l10n-bn-IN-macosx64-nightly/opt: aLrCWBdlTFqipqjAS1Lo5Q + repackage-l10n-bn-IN-win32-nightly/opt: XGJ0ftKSQC6swSVJY4YVFw + repackage-l10n-bn-IN-win64-nightly/opt: Dm7HCGXXRXSXCKJXUXs7IQ + repackage-l10n-br-linux-nightly/opt: c6i7gvzGRDGh5lEwgIQsnA + repackage-l10n-br-linux64-nightly/opt: VRkWJ3C_QPOaK529thIIpA + repackage-l10n-br-macosx64-nightly/opt: GnP0xnT9QbaKRPeiivYzSw + repackage-l10n-br-win32-nightly/opt: GT3fr8dcSvSE80X56unNYg + repackage-l10n-br-win64-nightly/opt: cWbHbIiGSNqQO7LRcGSVqA + repackage-l10n-bs-linux-nightly/opt: O_Ti4LrkTZ2Q6jCUI__imw + repackage-l10n-bs-linux64-nightly/opt: L6pDqX-JQQ6c3c9EtuD8Ew + repackage-l10n-bs-macosx64-nightly/opt: DpGNpG4wScuujYTuV62U7A + repackage-l10n-bs-win32-nightly/opt: S88zC66VQbWeo_JzsHlJKQ + repackage-l10n-bs-win64-nightly/opt: NHDIAzWIS8aECl1K_FayAA + repackage-l10n-ca-linux-nightly/opt: PuCSLKzNQ76nDo1Wt04JHQ + repackage-l10n-ca-linux64-nightly/opt: P75THLYiTk6lBHg8CcvE0Q + repackage-l10n-ca-macosx64-nightly/opt: fr8z-mToTi2XdptPXTD4mQ + repackage-l10n-ca-win32-nightly/opt: EhJ7wmykQZWkdrxW7y73lQ + repackage-l10n-ca-win64-nightly/opt: AKI14rTHQ-uvjN0geu4rrQ + repackage-l10n-cak-linux-nightly/opt: KfFcUXTHQYOCrzpkG7WvSg + repackage-l10n-cak-linux64-nightly/opt: MfsG05qhRsmgAlmbhg2O8g + repackage-l10n-cak-macosx64-nightly/opt: DoqZDK43QAmCGqBfFv-PkA + repackage-l10n-cak-win32-nightly/opt: Aqa9ZGIxQWKzKVjmk0FCgA + repackage-l10n-cak-win64-nightly/opt: Y9w11m6mSfyNoeVW3y89yg + repackage-l10n-cs-linux-nightly/opt: XfDp08tySk2m0XxrVB9LbA + repackage-l10n-cs-linux64-nightly/opt: PWoOVoaRRku_yOtwy0-11Q + repackage-l10n-cs-macosx64-nightly/opt: RYTguRoHRXaDoqpgCBVkvA + repackage-l10n-cs-win32-nightly/opt: eGc7RQkESxetIrTkGLnA5Q + repackage-l10n-cs-win64-nightly/opt: MaK5m5akSiKTvMgS5COisQ + repackage-l10n-cy-linux-nightly/opt: MMXRhIMfSn-jtaxalFwywA + repackage-l10n-cy-linux64-nightly/opt: WxoNskaySoWuf3JdBYJcOw + repackage-l10n-cy-macosx64-nightly/opt: RrzTnM33T4iTeQqky2HgJQ + repackage-l10n-cy-win32-nightly/opt: H5a4CGP3RIaNkMxDJVLN-g + repackage-l10n-cy-win64-nightly/opt: FQgwyR8mScCdAEs8TP4QIA + repackage-l10n-da-linux-nightly/opt: LF9lJhWrRU--hGGO9cCy1Q + repackage-l10n-da-linux64-nightly/opt: O6OHPZuuQm-9_G_5R44jvw + repackage-l10n-da-macosx64-nightly/opt: YswzIJpXSi6-B7y0-ZBtIg + repackage-l10n-da-win32-nightly/opt: OP2FEQ4gRXCYIWGaHfCYeA + repackage-l10n-da-win64-nightly/opt: ceL9h9UHQVKM1I69JYBJdQ + repackage-l10n-de-linux-nightly/opt: A92o9QDMR_GMPp5tlxGLMg + repackage-l10n-de-linux64-nightly/opt: T-lIOpozSDeHvT32dNnpoQ + repackage-l10n-de-macosx64-nightly/opt: PaJTczTcSoiiLYu2QPtTjA + repackage-l10n-de-win32-nightly/opt: FmqQok4kRgGn2hfGuGrhug + repackage-l10n-de-win64-nightly/opt: Tr6qa8P1QXme0-xuuXMgWw + repackage-l10n-dsb-linux-nightly/opt: Zld8k105TtqqJJTsUqXkHA + repackage-l10n-dsb-linux64-nightly/opt: ZUvt8V9jQ8uYVW-aZJeXYw + repackage-l10n-dsb-macosx64-nightly/opt: GHc47jAMQWKrNPV1OBwo9w + repackage-l10n-dsb-win32-nightly/opt: cpImhCbsRsOfjWhNEHB0WA + repackage-l10n-dsb-win64-nightly/opt: YKs4Hl8tQeGUM3odUbyYvw + repackage-l10n-el-linux-nightly/opt: GNKtKFo1Sj6bMjYTKBo_pw + repackage-l10n-el-linux64-nightly/opt: I-rpP_sKTY2dBy-0Fq4G4Q + repackage-l10n-el-macosx64-nightly/opt: VjCdtkNeTRaGDd105qZPjg + repackage-l10n-el-win32-nightly/opt: IQf5EguNQIe4XQBJTH8Nkg + repackage-l10n-el-win64-nightly/opt: ZYZqYJvrSmWrnkUYosZIwQ + repackage-l10n-en-CA-linux-nightly/opt: RO2hng9HSSmkLDqVdRwkmg + repackage-l10n-en-CA-linux64-nightly/opt: S8ItT_NrT46_bwW8kopHvg + repackage-l10n-en-CA-macosx64-nightly/opt: W_jvCH29T2qdCQL4EQV2CQ + repackage-l10n-en-CA-win32-nightly/opt: b7FmPW5_Rfm3WGB3wRE4QQ + repackage-l10n-en-CA-win64-nightly/opt: GupW3UV8TFOh2IzByX498Q + repackage-l10n-en-GB-linux-nightly/opt: Dq-kqy77RG6vIIigTFiJow + repackage-l10n-en-GB-linux64-nightly/opt: CVZFytZXQ0GVxhz3k02TVQ + repackage-l10n-en-GB-macosx64-nightly/opt: MGas6hP8QFOmdBXoPss8Xw + repackage-l10n-en-GB-win32-nightly/opt: dguTVzBpTtCX9gfojo8nyA + repackage-l10n-en-GB-win64-nightly/opt: fZzjov6YSPWokzgmSOpReg + repackage-l10n-en-ZA-linux-nightly/opt: KJ2cCdxXRv-TkxYjtxDaVg + repackage-l10n-en-ZA-linux64-nightly/opt: Yk-FV1ZSQPuywvTi6WQa1g + repackage-l10n-en-ZA-macosx64-nightly/opt: Gu91jYH7QfeoX3KCvQzF5g + repackage-l10n-en-ZA-win32-nightly/opt: AmGY-ORMROyqBJkoD9imgQ + repackage-l10n-en-ZA-win64-nightly/opt: c0Oy_K_ESaWoaaGIBizU7g + repackage-l10n-eo-linux-nightly/opt: CwTCkmaLRiGZG1cWqtr8mg + repackage-l10n-eo-linux64-nightly/opt: G9SXSN0SSq6BO9Pa044_kg + repackage-l10n-eo-macosx64-nightly/opt: ezBNLgrZR0yQ8R-BS0U23Q + repackage-l10n-eo-win32-nightly/opt: NUJlScuAS7uPeGgVFSkRgQ + repackage-l10n-eo-win64-nightly/opt: COKF8SNFRZaNKwUS0_lRAw + repackage-l10n-es-AR-linux-nightly/opt: bgImvIYrQ0WLvwMdXnM4gg + repackage-l10n-es-AR-linux64-nightly/opt: DkGC2CKVTt2o-fZI7Yx0TA + repackage-l10n-es-AR-macosx64-nightly/opt: bbi8upTvT-u14G8kDO9uZg + repackage-l10n-es-AR-win32-nightly/opt: KoqkENbqRuKe0xe0D0N8Kg + repackage-l10n-es-AR-win64-nightly/opt: Ikswh3u4RyOWP2bzcrYIMg + repackage-l10n-es-CL-linux-nightly/opt: JWSmcpglSx2C2HwgBNP27Q + repackage-l10n-es-CL-linux64-nightly/opt: NmyR0rzKRkKg2W3PSb8QYQ + repackage-l10n-es-CL-macosx64-nightly/opt: E1G4WJbNR0WivXVZfVyBLg + repackage-l10n-es-CL-win32-nightly/opt: PdyqNQRQT2-aEKmTxRM5tA + repackage-l10n-es-CL-win64-nightly/opt: MOBCru2nR_q7vPA4DHStAQ + repackage-l10n-es-ES-linux-nightly/opt: dDndQQ2ZS--ZT8QN4w8-4w + repackage-l10n-es-ES-linux64-nightly/opt: GVs4HNSVTiOn8TWlGoPCPQ + repackage-l10n-es-ES-macosx64-nightly/opt: WiU5MFN-S4mKJvItIW8mBA + repackage-l10n-es-ES-win32-nightly/opt: UoG3BxAoQgqhQtLLdsYDQw + repackage-l10n-es-ES-win64-nightly/opt: F4jpif1WSCi9QzQuLsJ7aA + repackage-l10n-es-MX-linux-nightly/opt: ZtI_Vyh6TRKieOLHnVIFsA + repackage-l10n-es-MX-linux64-nightly/opt: FYrRlK72SkmjTLRCimu0fg + repackage-l10n-es-MX-macosx64-nightly/opt: IIoP1F7mSvC-ptSUO1eq-g + repackage-l10n-es-MX-win32-nightly/opt: Fk_1fqkPRIiJneHmXiVJNA + repackage-l10n-es-MX-win64-nightly/opt: cUp2QlU3TIuqAfNXLijpUA + repackage-l10n-et-linux-nightly/opt: ChUvzCWnTAqp6j3_RNhLow + repackage-l10n-et-linux64-nightly/opt: fET6B3cEQg25Yg9v_Mzhxg + repackage-l10n-et-macosx64-nightly/opt: LI4aOCIMSNK4pct7nAe3Vg + repackage-l10n-et-win32-nightly/opt: cSMaQXeMSr6kU_IECr_lFA + repackage-l10n-et-win64-nightly/opt: NMY6uN17SIOypJSEIwbM8Q + repackage-l10n-eu-linux-nightly/opt: D3iUIsf2Sk-BuVRjIc8p1w + repackage-l10n-eu-linux64-nightly/opt: JBnGk7xHQGS175oI09QxsA + repackage-l10n-eu-macosx64-nightly/opt: cAtYORc6SvSyFqavNP8gmw + repackage-l10n-eu-win32-nightly/opt: HyV8p7A1QW62cdLhzwSQ7g + repackage-l10n-eu-win64-nightly/opt: JMZfsItARN2l02Ncg7T7sw + repackage-l10n-fa-linux-nightly/opt: EYihBtCwQbmTx1PmwDFGLA + repackage-l10n-fa-linux64-nightly/opt: TpLbxyJEQUuGO6VwqYAlaw + repackage-l10n-fa-macosx64-nightly/opt: JPwCyPjjR0S-dyAuCMsYAg + repackage-l10n-fa-win32-nightly/opt: TzCchZHlQ9GpsErijwtWXw + repackage-l10n-fa-win64-nightly/opt: O5uZYdQ_TNuVB19swleNNQ + repackage-l10n-ff-linux-nightly/opt: Nlcy8Vg-ST-Mbq7ZdBRA8g + repackage-l10n-ff-linux64-nightly/opt: ILl2BWuoSXi1qpfeOE0A9g + repackage-l10n-ff-macosx64-nightly/opt: IJi_wTpIRMaIbx5JvjZogg + repackage-l10n-ff-win32-nightly/opt: C73m675jQE-gOqiq1FuBxA + repackage-l10n-ff-win64-nightly/opt: WagGyt7XQE65r_DD0vkYjw + repackage-l10n-fi-linux-nightly/opt: N04kLsTgQfiV-Vxz6GOCZQ + repackage-l10n-fi-linux64-nightly/opt: NIVLyHvARSuM1UP1DLnLmw + repackage-l10n-fi-macosx64-nightly/opt: KTJUJ6rzQf2FPU1Q6t4jzw + repackage-l10n-fi-win32-nightly/opt: W2-b5DuFQLWHQQYMk1zqug + repackage-l10n-fi-win64-nightly/opt: D13g_q_sTQeRhHfBE58r-A + repackage-l10n-fr-linux-nightly/opt: FbHy8bRfQZa2GMlbyC1D-Q + repackage-l10n-fr-linux64-nightly/opt: LvRquCmISBKHNT2VdGfNYQ + repackage-l10n-fr-macosx64-nightly/opt: VxCyyTI1S7O1dhGtI8sFWw + repackage-l10n-fr-win32-nightly/opt: bkDJcw4wRBidcFvDWGeh7Q + repackage-l10n-fr-win64-nightly/opt: WyXjchpUTXiphvF9z_XtaA + repackage-l10n-fy-NL-linux-nightly/opt: UBwEdm4yTlGMK0yzzlp-eg + repackage-l10n-fy-NL-linux64-nightly/opt: CCH18ef6QcyA-Ed1dPudBw + repackage-l10n-fy-NL-macosx64-nightly/opt: djZ1O9cvSg2OBkhdzbu7PQ + repackage-l10n-fy-NL-win32-nightly/opt: bRPNUU0oScGR6KM6QniVcg + repackage-l10n-fy-NL-win64-nightly/opt: G5VEGKpqTr6hYFDhuut9kA + repackage-l10n-ga-IE-linux-nightly/opt: KqI4_VuESam6cFj9c20K9A + repackage-l10n-ga-IE-linux64-nightly/opt: Tvlv2ScDTAOTsnjuN1OUDw + repackage-l10n-ga-IE-macosx64-nightly/opt: NxguYT2KRAu7oLt09GBDZg + repackage-l10n-ga-IE-win32-nightly/opt: dfGUvELjQ4mKaiN17b9jzw + repackage-l10n-ga-IE-win64-nightly/opt: D-JP0ck4QLSBLjie7gHiKg + repackage-l10n-gd-linux-nightly/opt: XIfQRrSKRLeNXhb2MPnclQ + repackage-l10n-gd-linux64-nightly/opt: OVfoZ4TUTba2mZOlBqKZ7w + repackage-l10n-gd-macosx64-nightly/opt: ar4BWqcLR8W9Eok-EuF-6w + repackage-l10n-gd-win32-nightly/opt: SuV4TBXrS3OudG-Qkqedgw + repackage-l10n-gd-win64-nightly/opt: QRVcaPrtRtWSVILDsjR6CA + repackage-l10n-gl-linux-nightly/opt: NRKe-_ezQBCVZtoIDcypQg + repackage-l10n-gl-linux64-nightly/opt: W4aRzxtCTWeTUG6MBSi7jg + repackage-l10n-gl-macosx64-nightly/opt: BovXfvvJQDSp07mbfqQq3g + repackage-l10n-gl-win32-nightly/opt: Som4AUNuTCSYnpD-kWEVeg + repackage-l10n-gl-win64-nightly/opt: EuQoWvCdTpejdsJXKKw57Q + repackage-l10n-gn-linux-nightly/opt: YzDa1YqjSUKCrQbLS8uGjA + repackage-l10n-gn-linux64-nightly/opt: RA3FNaekRaSzmryaRaZQSg + repackage-l10n-gn-macosx64-nightly/opt: M8Uog5bsQLOxVJWdQxdd3A + repackage-l10n-gn-win32-nightly/opt: XpjgkzadRlyf9qqk6ZuPsQ + repackage-l10n-gn-win64-nightly/opt: buShETCwS8mKiygN0u7DxQ + repackage-l10n-gu-IN-linux-nightly/opt: HerJYHB0TNeChFe6n3QkcA + repackage-l10n-gu-IN-linux64-nightly/opt: dbCT_cX7SYWkD7KHPNexeA + repackage-l10n-gu-IN-macosx64-nightly/opt: P8sTgN54TzufPYnhlzDU4A + repackage-l10n-gu-IN-win32-nightly/opt: Aa1NWhouRISrkqy8KNOpEg + repackage-l10n-gu-IN-win64-nightly/opt: E3llJ_QxTvOQPb3NW5NMJA + repackage-l10n-he-linux-nightly/opt: dDUyzraJSFC0EpQWLkqSXg + repackage-l10n-he-linux64-nightly/opt: KGx_mFUgSeSS0NCMHJwzEw + repackage-l10n-he-macosx64-nightly/opt: ZdQqpj7SRpGCcwW8TWu-8w + repackage-l10n-he-win32-nightly/opt: ay4pdRduSruJAp17B8qxvw + repackage-l10n-he-win64-nightly/opt: EDOTOXnwTrqIg_su5zQD7w + repackage-l10n-hi-IN-linux-nightly/opt: Li-dDxMjQSOsbU5So7FB5Q + repackage-l10n-hi-IN-linux64-nightly/opt: CTrGQcjjROi6TSBdGTE_JQ + repackage-l10n-hi-IN-macosx64-nightly/opt: T8jhSlVFRAmUOjDpBojMiw + repackage-l10n-hi-IN-win32-nightly/opt: T4bK8FauQOu054sUE657-g + repackage-l10n-hi-IN-win64-nightly/opt: Lxe8dskSSoiGDyRZQjnNgQ + repackage-l10n-hr-linux-nightly/opt: HfTjp97pR5-Q8KJrvjbKiA + repackage-l10n-hr-linux64-nightly/opt: GJmK34IQRIugEuqVmO06YQ + repackage-l10n-hr-macosx64-nightly/opt: X7SiA3GqSnGrM05OofErZQ + repackage-l10n-hr-win32-nightly/opt: bl8m7YBdQSedrfgsbQGzHA + repackage-l10n-hr-win64-nightly/opt: ayyeeUejSme1mmNOgtATfg + repackage-l10n-hsb-linux-nightly/opt: e8fpZptWQJuqrZSbIGi-Gw + repackage-l10n-hsb-linux64-nightly/opt: fP99sIBXTBaQdbi39HOhYw + repackage-l10n-hsb-macosx64-nightly/opt: IRSV88MBToyN1kkwoV-GIA + repackage-l10n-hsb-win32-nightly/opt: OTX-JxPmRLWxCAJ4Vs8ReQ + repackage-l10n-hsb-win64-nightly/opt: PBm9Fne1QF-sG5WRLlUetA + repackage-l10n-hu-linux-nightly/opt: VvT_7qPSSnG8PlNv1WbZ0w + repackage-l10n-hu-linux64-nightly/opt: S35M9lKqTt2StmJ1dLQD9w + repackage-l10n-hu-macosx64-nightly/opt: Atm7cEEqQFGSVjAs-wvs4Q + repackage-l10n-hu-win32-nightly/opt: A7gFbJSGSNSC8lot94Q-Pw + repackage-l10n-hu-win64-nightly/opt: WDjLgwYdQ_OGiPFvvSxlKA + repackage-l10n-hy-AM-linux-nightly/opt: YnEgGz7DSjiQD_2azaRUDw + repackage-l10n-hy-AM-linux64-nightly/opt: EL27o_rfRuqD54M76lXKOg + repackage-l10n-hy-AM-macosx64-nightly/opt: YJmtHf_7RcilxeC481NPhQ + repackage-l10n-hy-AM-win32-nightly/opt: eTlE_u5yR7eR6S2SDDCeUQ + repackage-l10n-hy-AM-win64-nightly/opt: WNjU1zsdQ7O2wgTZoiDqrQ + repackage-l10n-ia-linux-nightly/opt: WqrpxiX-REGU3I96XkO8IQ + repackage-l10n-ia-linux64-nightly/opt: P2zZyIEgRtWJ-xPS1_SluA + repackage-l10n-ia-macosx64-nightly/opt: VYEBVdDiQPufxIPFQ8gM4g + repackage-l10n-ia-win32-nightly/opt: JkDvhGE3QjGQZ8FxC9-6eQ + repackage-l10n-ia-win64-nightly/opt: UB97NWa5ToqxGAGBQkNQDQ + repackage-l10n-id-linux-nightly/opt: Aeahgf_7RBKTM46VDx1vfA + repackage-l10n-id-linux64-nightly/opt: JUbN84Z9TAqgqmhFySiHGQ + repackage-l10n-id-macosx64-nightly/opt: RswHlXRbQ7qiymYMhD3kug + repackage-l10n-id-win32-nightly/opt: fdTSsrbCR0uC4U89Rn0hQw + repackage-l10n-id-win64-nightly/opt: TPNWeZHIT2-UtjJpMdo6gg + repackage-l10n-is-linux-nightly/opt: Ye8dCdcHSharN0rkGdyOVQ + repackage-l10n-is-linux64-nightly/opt: QjkBs73MQGOv4KPv0nCPxQ + repackage-l10n-is-macosx64-nightly/opt: cFnFKiScR5uKvqAtwaPbYg + repackage-l10n-is-win32-nightly/opt: N56VRfojSmWioHKczLKbgg + repackage-l10n-is-win64-nightly/opt: ZoGeD24bTFKiS_efoSP8eA + repackage-l10n-it-linux-nightly/opt: Fr_kN5DqR2GnU5jF5dxp6Q + repackage-l10n-it-linux64-nightly/opt: NrLsuSrUSIWvKdDWklGCKQ + repackage-l10n-it-macosx64-nightly/opt: dsGoWvviSeyWfxNPWAGWzw + repackage-l10n-it-win32-nightly/opt: LEdmTOgvQ22Wd6aCfJTaPA + repackage-l10n-it-win64-nightly/opt: TJGAHaIIT82W5xLMMD1BQw + repackage-l10n-ja-JP-mac-macosx64-nightly/opt: HWRSUJ85RPqZJPNtI_0OJQ + repackage-l10n-ja-linux-nightly/opt: FJZeyHb-Sx2Wfe4E5G0FOg + repackage-l10n-ja-linux64-nightly/opt: W3yklSh4Qua7DXoehwq9qw + repackage-l10n-ja-win32-nightly/opt: cW_Sg9lYTMqvEkFqRX8uNQ + repackage-l10n-ja-win64-nightly/opt: MypX9zniT6aoJm98B9gHhw + repackage-l10n-ka-linux-nightly/opt: KhFfJ7KCS9C0n0JGRQIOBQ + repackage-l10n-ka-linux64-nightly/opt: UkTbeplUSr-qCQH6CjCGLw + repackage-l10n-ka-macosx64-nightly/opt: L98oZXV7TcW3ImsnzqGSBA + repackage-l10n-ka-win32-nightly/opt: IVS4K7plQsatHxvyDr4HOw + repackage-l10n-ka-win64-nightly/opt: FfYgzqsCQ9OhhHt1Iru7Wg + repackage-l10n-kab-linux-nightly/opt: Fl5vxGWfSo6mvrRwhrwvNQ + repackage-l10n-kab-linux64-nightly/opt: b4vXRNtKSTmNDLOuSCwdNA + repackage-l10n-kab-macosx64-nightly/opt: ECTTMt9ZRjC0Z_vA99goGQ + repackage-l10n-kab-win32-nightly/opt: KxtqMoPORzKvQfvxEQZX7g + repackage-l10n-kab-win64-nightly/opt: Gn3DU7vFTP6IGakpITCP3A + repackage-l10n-kk-linux-nightly/opt: GBJ7GmoLQhmVYK9e4-K5zA + repackage-l10n-kk-linux64-nightly/opt: b9QUorz5SYWVkRuNFZR8qw + repackage-l10n-kk-macosx64-nightly/opt: f7mWJVelQHqbYYPUNNg_QQ + repackage-l10n-kk-win32-nightly/opt: LwDE5j-ZSJ6ktqJ8-ASUuQ + repackage-l10n-kk-win64-nightly/opt: HbPObXUGSKK2XHChybaiQQ + repackage-l10n-km-linux-nightly/opt: M7GMEAF2TVajj4kHmca7UQ + repackage-l10n-km-linux64-nightly/opt: OsFJThNBReC4hT70G3WcNg + repackage-l10n-km-macosx64-nightly/opt: N9vqDGZQSQ6cR0vC67RYOA + repackage-l10n-km-win32-nightly/opt: dOLnMdDCRimKJWJhM14dOg + repackage-l10n-km-win64-nightly/opt: RVKTVdwITHma6HRNQIPsfg + repackage-l10n-kn-linux-nightly/opt: Aaea_KxeSuaevEDkR7Agiw + repackage-l10n-kn-linux64-nightly/opt: aCfE20MdTYyDfdN7PfEOXg + repackage-l10n-kn-macosx64-nightly/opt: Dwcz3UeJTMyeB8LmVHo9lg + repackage-l10n-kn-win32-nightly/opt: QxIY2WVHQsSiKZ8u9lIq9g + repackage-l10n-kn-win64-nightly/opt: dnlkyZbxSIeqPhVOFSWopQ + repackage-l10n-ko-linux-nightly/opt: f5eOpJWpQA-5mWYhXn05SA + repackage-l10n-ko-linux64-nightly/opt: EeSalDrkQUiGpzDScrfB7g + repackage-l10n-ko-macosx64-nightly/opt: NEqii-yXTo-J8WwzTTFaXg + repackage-l10n-ko-win32-nightly/opt: A9KF6wBJREmPL5euv9dHTA + repackage-l10n-ko-win64-nightly/opt: EorADmyKSf-cBTfvaVuLhA + repackage-l10n-lij-linux-nightly/opt: VTPTlDBkQiSJfcFCZbq2ng + repackage-l10n-lij-linux64-nightly/opt: WqZGbNwJRPaVFGv-nlco_A + repackage-l10n-lij-macosx64-nightly/opt: cZBjYaDATlaPshNKUTQ62Q + repackage-l10n-lij-win32-nightly/opt: QKBmFfkLSE2FF1QPLe47kA + repackage-l10n-lij-win64-nightly/opt: HNWydAavTN-CWXmuMh_PYQ + repackage-l10n-lt-linux-nightly/opt: IgeC1vZoRWaw0pdLojGLig + repackage-l10n-lt-linux64-nightly/opt: JlOv51ahQq24bh3jBPNc0A + repackage-l10n-lt-macosx64-nightly/opt: BMvTT-T3SSCsPjTP8I_3ww + repackage-l10n-lt-win32-nightly/opt: FRxEP5zYQVScciciqHi2Dw + repackage-l10n-lt-win64-nightly/opt: BRl-c7R9Qky0fWe8kAxeSQ + repackage-l10n-lv-linux-nightly/opt: RCJNFSYjRkywnqCmILpBPQ + repackage-l10n-lv-linux64-nightly/opt: YlZZWpxgRPG2EaHPeX5PZw + repackage-l10n-lv-macosx64-nightly/opt: SmMnWkEeSWqkNcJgFj6ZHw + repackage-l10n-lv-win32-nightly/opt: dmeLsTq5RVayST2DroeLww + repackage-l10n-lv-win64-nightly/opt: BupVR3UHQHuTJa56GUqv9w + repackage-l10n-mai-linux-nightly/opt: F2WbLUjBRQmbir-Ro9Sgkg + repackage-l10n-mai-linux64-nightly/opt: LE9YRY_CSDaA4YHw0tnQcA + repackage-l10n-mai-macosx64-nightly/opt: d0N1Y3UwSHyce_BJZg9lYg + repackage-l10n-mai-win32-nightly/opt: EEeb8aNjQq-L-SBZasRofA + repackage-l10n-mai-win64-nightly/opt: PaNvPZCXRoqjnRhCm3CjjA + repackage-l10n-mk-linux-nightly/opt: N6LvHid9QaOeU6EF-KDghg + repackage-l10n-mk-linux64-nightly/opt: fkKhy2e3Rtuh4L970B3TRQ + repackage-l10n-mk-macosx64-nightly/opt: ZUN_K612Qg2nOOZRndOPAQ + repackage-l10n-mk-win32-nightly/opt: J6ejcgdyRQSryOpxBG9fUg + repackage-l10n-mk-win64-nightly/opt: OJjYB8SVSEuj7gxPSoF_Og + repackage-l10n-ml-linux-nightly/opt: BjCmftxLRsS6rsm0T_SMuw + repackage-l10n-ml-linux64-nightly/opt: MVlT7Fy8QuuBZr3Ez1UYXw + repackage-l10n-ml-macosx64-nightly/opt: WVxeoggyR8K-QlOEuyndWw + repackage-l10n-ml-win32-nightly/opt: XdVEgSK-T6CqxXeguhb6FQ + repackage-l10n-ml-win64-nightly/opt: M4eBaLwtSfiOX-mUH9e85A + repackage-l10n-mr-linux-nightly/opt: YyBauZj0TW6BvgDmX5N4_w + repackage-l10n-mr-linux64-nightly/opt: ftzIaYVRQSePoWmC_1ZZ6A + repackage-l10n-mr-macosx64-nightly/opt: BpWcaQNpTpqi2M02EId72Q + repackage-l10n-mr-win32-nightly/opt: DceeRZrITj2vaxfWJtXyUA + repackage-l10n-mr-win64-nightly/opt: NcJ7v4OIS9asY92iUgISww + repackage-l10n-ms-linux-nightly/opt: KvF4Uf3sRoC3ndcTlDCq0Q + repackage-l10n-ms-linux64-nightly/opt: Rg5lx8h1SsiDcIAlgnNJ8g + repackage-l10n-ms-macosx64-nightly/opt: MfOcbnFqS1upre2Z4agwEQ + repackage-l10n-ms-win32-nightly/opt: OkVDCrNNQ_qbBTCkbQ_NjQ + repackage-l10n-ms-win64-nightly/opt: Hz5B48qzTFOFDkRp38nqmA + repackage-l10n-my-linux-nightly/opt: YL17OwlhTwu3xbZ79TBZjg + repackage-l10n-my-linux64-nightly/opt: LuDWcpQjRR-HYOdkSor7bg + repackage-l10n-my-macosx64-nightly/opt: KNbvYT5dSM6LfkyV0_Bkkg + repackage-l10n-my-win32-nightly/opt: Ro9VJpdAT8aC3JmTfCvpWw + repackage-l10n-my-win64-nightly/opt: dqEYijiSRPaLBL0iRUCayQ + repackage-l10n-nb-NO-linux-nightly/opt: OVMbwXoiRxiczYnho2AC4g + repackage-l10n-nb-NO-linux64-nightly/opt: dMlMfl2pT0W4J844uxxjUQ + repackage-l10n-nb-NO-macosx64-nightly/opt: axmkh8kLRtOY_3gdZI_Pjg + repackage-l10n-nb-NO-win32-nightly/opt: WKjr9IL8QwGRJCdoKiGdlg + repackage-l10n-nb-NO-win64-nightly/opt: AmjTR2sGRqWR2Bcpr8mSxw + repackage-l10n-ne-NP-linux-nightly/opt: GzkoVhd5RP--nqw9GdXN2w + repackage-l10n-ne-NP-linux64-nightly/opt: YnMFAQwuTMORbfctoIiPpg + repackage-l10n-ne-NP-macosx64-nightly/opt: ae2tGGyVRJGHVFV1JxLlGQ + repackage-l10n-ne-NP-win32-nightly/opt: eoUGTVRjRHy58YDu4dGKiA + repackage-l10n-ne-NP-win64-nightly/opt: QoSrC6YBQYOLVEzRJOpsMA + repackage-l10n-nl-linux-nightly/opt: cv2K4ELWRxK4Us1U02dVmg + repackage-l10n-nl-linux64-nightly/opt: Uok_JW_4SXWKKGshzXWtGg + repackage-l10n-nl-macosx64-nightly/opt: Yb4uVuTvQm6BV8y84I47iQ + repackage-l10n-nl-win32-nightly/opt: LKOZWCopR2Wi0yS4sqPQCw + repackage-l10n-nl-win64-nightly/opt: cDA2zSsdRJWDLCZutCfaRg + repackage-l10n-nn-NO-linux-nightly/opt: AbME5EJmRp2smau6aqTJVQ + repackage-l10n-nn-NO-linux64-nightly/opt: O1h7vs1NSW659-FT7dJ6_A + repackage-l10n-nn-NO-macosx64-nightly/opt: eZoqTdn_SHuDldKcR72Ppg + repackage-l10n-nn-NO-win32-nightly/opt: OYiWivG7RJybhTDpxxEZKg + repackage-l10n-nn-NO-win64-nightly/opt: aGc1xo5GSyCqISiRjJTV8w + repackage-l10n-oc-linux-nightly/opt: CSrSF_4yRY-DsdH2GL-fyA + repackage-l10n-oc-linux64-nightly/opt: QW9045zlQ6WYwNSxZLConA + repackage-l10n-oc-macosx64-nightly/opt: cR_m6L_qRzeDQEDn0S1PGg + repackage-l10n-oc-win32-nightly/opt: XF5cPuQWT_-4GwmOAIPY0w + repackage-l10n-oc-win64-nightly/opt: YbhQ-bezQaSD8y3Pobu6kA + repackage-l10n-or-linux-nightly/opt: ZBWXcEx_RNWCaBlR05o2TA + repackage-l10n-or-linux64-nightly/opt: eQCUACcXQiC-6btbGAwlqQ + repackage-l10n-or-macosx64-nightly/opt: TdDrwu7DSqy7LmgZ7QYebA + repackage-l10n-or-win32-nightly/opt: Ak8KFrG5TXiFmpVVaHtwHA + repackage-l10n-or-win64-nightly/opt: KKFqFUXqSkio5Kg_2L7H5g + repackage-l10n-pa-IN-linux-nightly/opt: e129_f6tT-2XIHbfmKNncA + repackage-l10n-pa-IN-linux64-nightly/opt: HNSL3KH2TZagkfJ8TsvYQw + repackage-l10n-pa-IN-macosx64-nightly/opt: SfIoh5xqT_e3oBVdjrbBzA + repackage-l10n-pa-IN-win32-nightly/opt: MEK3RPR4Tfa6Okg2CDqHOw + repackage-l10n-pa-IN-win64-nightly/opt: IYlg76WVRcqCbbcVpolJrA + repackage-l10n-pl-linux-nightly/opt: R7IyWmKTR8S_UUvakjK8Vw + repackage-l10n-pl-linux64-nightly/opt: YoIMyeH-Qh6A_7wy92er7w + repackage-l10n-pl-macosx64-nightly/opt: GO_UKlybQA-7gQzSIYyBPw + repackage-l10n-pl-win32-nightly/opt: e9LB_TaUQb26eBkYdQHi7A + repackage-l10n-pl-win64-nightly/opt: MqTkCPK9QjmXHgA63HCh7A + repackage-l10n-pt-BR-linux-nightly/opt: OO4bxyenQRyXbTV08LbL-A + repackage-l10n-pt-BR-linux64-nightly/opt: cQMmGNIITliO3gf8jsik3g + repackage-l10n-pt-BR-macosx64-nightly/opt: d_jhpGRZQA-oo4VeRK2jcQ + repackage-l10n-pt-BR-win32-nightly/opt: ZIgF4jeETqOiNwlw6500Jw + repackage-l10n-pt-BR-win64-nightly/opt: dwzicSkETzmnLciGZskPag + repackage-l10n-pt-PT-linux-nightly/opt: eH7_zUoZRuqeIzLovtIyeQ + repackage-l10n-pt-PT-linux64-nightly/opt: DICuRm5LQoOI9oknKbcpSg + repackage-l10n-pt-PT-macosx64-nightly/opt: Sxwwh50JSm2fRPfk_bhpVA + repackage-l10n-pt-PT-win32-nightly/opt: U0slPcj9TLOWk0dH_PcL2g + repackage-l10n-pt-PT-win64-nightly/opt: Co-uZyo9RS-6QKz10RwKfw + repackage-l10n-rm-linux-nightly/opt: Mw0z0B-iSt6EEh9dDmK1XA + repackage-l10n-rm-linux64-nightly/opt: HyZ4CA1gSES2kRfk9EQ1sg + repackage-l10n-rm-macosx64-nightly/opt: XQ36ofUdSrOaiP1CIWYU7g + repackage-l10n-rm-win32-nightly/opt: ENxorfjHSbeRc5ICV5akhQ + repackage-l10n-rm-win64-nightly/opt: Xo_lyazhTUeUigkI8OhTAw + repackage-l10n-ro-linux-nightly/opt: Rnee1W2_S9-fsvotWULwtA + repackage-l10n-ro-linux64-nightly/opt: Ia2EsaxfSG2Va5HqH_2JtA + repackage-l10n-ro-macosx64-nightly/opt: K66TNRdqTaqVJb22upqulg + repackage-l10n-ro-win32-nightly/opt: VLbpoIS1TV61zE21SKQbxw + repackage-l10n-ro-win64-nightly/opt: ZzV6qCY2QiSPfLjy1W0SMw + repackage-l10n-ru-linux-nightly/opt: LsFRtS3HQ4GzTeFqPULRpw + repackage-l10n-ru-linux64-nightly/opt: aZjpOd72RpmtGVkwHmJmyw + repackage-l10n-ru-macosx64-nightly/opt: PrX4pOtIRsGjTomIhMlAag + repackage-l10n-ru-win32-nightly/opt: B7KGW6zQRIa9m2Ilp2J3pQ + repackage-l10n-ru-win64-nightly/opt: XocHKkiJSv-kRUDk9Niakw + repackage-l10n-si-linux-nightly/opt: C9HZpuFBQhqdttyEFN01Iw + repackage-l10n-si-linux64-nightly/opt: DF_9EDVKQxCn5qaPLYuw9Q + repackage-l10n-si-macosx64-nightly/opt: fouYtqEMQlKvoRbGNSk9DA + repackage-l10n-si-win32-nightly/opt: F0LKyNFPR32bmL5G6vZxPg + repackage-l10n-si-win64-nightly/opt: GR_hQHOzRhOGKXYH0nz-pw + repackage-l10n-sk-linux-nightly/opt: SVLLpvKbRzKC4EpLdPB1rw + repackage-l10n-sk-linux64-nightly/opt: d95A59XISgm4cL8uQpu8lA + repackage-l10n-sk-macosx64-nightly/opt: ZyU486mYSAqoRGpXVr5DKA + repackage-l10n-sk-win32-nightly/opt: HFkIgsx9RmGgFcENqxlupQ + repackage-l10n-sk-win64-nightly/opt: LMJYnWSlTjirXjNvMryf1g + repackage-l10n-sl-linux-nightly/opt: XdYu83JNS6u2h7-KQnEISw + repackage-l10n-sl-linux64-nightly/opt: FKgGV9vnS8i-cyrOvu0nwg + repackage-l10n-sl-macosx64-nightly/opt: fplnbzMZRZORGkXtRAEijA + repackage-l10n-sl-win32-nightly/opt: HPvCtE1mQpKZNzM5Yodd0Q + repackage-l10n-sl-win64-nightly/opt: KjWrkT5vRLKyKxlJOdCG3w + repackage-l10n-son-linux-nightly/opt: SGOaQxQFQS6MzipCGMb1Fg + repackage-l10n-son-linux64-nightly/opt: bF4UTJLtTVeE2rLBb2OuFw + repackage-l10n-son-macosx64-nightly/opt: ewi198RnQdKry6X4qzdRuQ + repackage-l10n-son-win32-nightly/opt: bfqz1QWJQFSs9Im_oZURKA + repackage-l10n-son-win64-nightly/opt: XSw8QOGsTgOQ3JYQ8PRzCA + repackage-l10n-sq-linux-nightly/opt: S-2NblTdTp-JNRDm9DPlOQ + repackage-l10n-sq-linux64-nightly/opt: H9FsolZ3RR-OepCGiM8fDw + repackage-l10n-sq-macosx64-nightly/opt: JptCj9e6TwqCQ0-cvTk0nQ + repackage-l10n-sq-win32-nightly/opt: bFsf02LfSFWqk5rpkzYNCg + repackage-l10n-sq-win64-nightly/opt: dG5o_8p4Tcm2Sk1_wUFLOw + repackage-l10n-sr-linux-nightly/opt: DuLjnX6xTA-M1bh2SS_ptA + repackage-l10n-sr-linux64-nightly/opt: XQnmb-DjQHGEr7Xp42N54g + repackage-l10n-sr-macosx64-nightly/opt: WijMJD9bTJCvT0ftpOkHgQ + repackage-l10n-sr-win32-nightly/opt: HLiVMchHTiSWZC9l318X4g + repackage-l10n-sr-win64-nightly/opt: OL8oGxMCQ6qJNR0UzhNa3A + repackage-l10n-sv-SE-linux-nightly/opt: bIIItrogSU6pGhHkp9qb_Q + repackage-l10n-sv-SE-linux64-nightly/opt: BfzeNFLDRSCJmXQ1kMVKaw + repackage-l10n-sv-SE-macosx64-nightly/opt: Qc7i2OWFS0Kgj3Z7_SkNGA + repackage-l10n-sv-SE-win32-nightly/opt: OCUCZwPxR62YAOhRJ08zTw + repackage-l10n-sv-SE-win64-nightly/opt: Bo28uvBXRCOvciMUjkTa4Q + repackage-l10n-ta-linux-nightly/opt: FOBMy2dtS5afzNpx05-rYg + repackage-l10n-ta-linux64-nightly/opt: WkriWroZRNKE-NKfZFlMbQ + repackage-l10n-ta-macosx64-nightly/opt: QnbqiWEeTzOWKw9ShUdl8w + repackage-l10n-ta-win32-nightly/opt: QfaIfTegR5yfjw4ENJG5GA + repackage-l10n-ta-win64-nightly/opt: BfOSe7rpSn6JHJ4lRfnx5A + repackage-l10n-te-linux-nightly/opt: SnYbb3bWRWWksAPshcxUjQ + repackage-l10n-te-linux64-nightly/opt: U58C4Iv8Sx-Y9Aq2IXsYuQ + repackage-l10n-te-macosx64-nightly/opt: G_1EELSYQuyAzB9A3csvBw + repackage-l10n-te-win32-nightly/opt: fuUBPagwSw2UPjZWSqOxSA + repackage-l10n-te-win64-nightly/opt: aIyA8RSfTGW7XnFME6Xa5g + repackage-l10n-th-linux-nightly/opt: C6mWyhtkTe6jXIH_OJ1H-Q + repackage-l10n-th-linux64-nightly/opt: eyIrx-izRlWKffl85wIY7Q + repackage-l10n-th-macosx64-nightly/opt: LTwIuk3wQLqxtM7CBsH-Rw + repackage-l10n-th-win32-nightly/opt: NP8JuvFTTsiTBOtrgPhGbA + repackage-l10n-th-win64-nightly/opt: JrG7QlobSACd5-WW2FQdZA + repackage-l10n-tr-linux-nightly/opt: DJQpajaBTIi59c0zQUq2RA + repackage-l10n-tr-linux64-nightly/opt: SNBo9hNjR6CrW1_vMrJdig + repackage-l10n-tr-macosx64-nightly/opt: eHjj6UNEScOzV61G_eTKTQ + repackage-l10n-tr-win32-nightly/opt: XlxnDEXURhS_pCxqkRiVNw + repackage-l10n-tr-win64-nightly/opt: D-9aQDIyR8Wn0gKgMPGtYw + repackage-l10n-uk-linux-nightly/opt: Bo1J_7DMQDWUJCN1bBFZHg + repackage-l10n-uk-linux64-nightly/opt: DB-kHZjFR3GvYjeas_KHVw + repackage-l10n-uk-macosx64-nightly/opt: P3QhLSIxTDqgBP6PD9_KcQ + repackage-l10n-uk-win32-nightly/opt: WsBYsgIZSJiOX674U0Bgmw + repackage-l10n-uk-win64-nightly/opt: efaaKwJJTFGBeIlNhiCUHg + repackage-l10n-ur-linux-nightly/opt: a7_zVi-YSmq_rrw8_ZlR3Q + repackage-l10n-ur-linux64-nightly/opt: DX0rWZzwTPWOxqHrhHyrqA + repackage-l10n-ur-macosx64-nightly/opt: FH4jUbKySiW09eaFIvAm7g + repackage-l10n-ur-win32-nightly/opt: LWNTpMo-SIaQyKF2qmaatw + repackage-l10n-ur-win64-nightly/opt: WXcij_gSTimuGtkpoey0Ng + repackage-l10n-uz-linux-nightly/opt: Vm6Io74HTru5b8nOt19Aqw + repackage-l10n-uz-linux64-nightly/opt: ALG1qR27Q_yrW18FHqPRsw + repackage-l10n-uz-macosx64-nightly/opt: VwCNROBVSAaxkSxfC73jyw + repackage-l10n-uz-win32-nightly/opt: LknEL-m3TIuZEsSURWwCCw + repackage-l10n-uz-win64-nightly/opt: MGtV4GVCScW6J86bDn1MWg + repackage-l10n-vi-linux-nightly/opt: Rm1u8Iw4TbKYiFP3vJUsSA + repackage-l10n-vi-linux64-nightly/opt: Z_PbU86CSE6DYSDS0RTJGA + repackage-l10n-vi-macosx64-nightly/opt: W96ZZcUCS0aDdCb9-0OIhA + repackage-l10n-vi-win32-nightly/opt: Ca9SIhbNQlq6pnPBciC_Cg + repackage-l10n-vi-win64-nightly/opt: SpQJijEJTaWtM93Cb5JhQQ + repackage-l10n-xh-linux-nightly/opt: GZ8UYoYBS6WET3CiMtknLQ + repackage-l10n-xh-linux64-nightly/opt: IDl51PskQV-2Vu8Ax-4j7g + repackage-l10n-xh-macosx64-nightly/opt: OnIF72tQTR-AvO8LIsf6Rg + repackage-l10n-xh-win32-nightly/opt: O__L4JOOQmG7fQiAxUPn1g + repackage-l10n-xh-win64-nightly/opt: HfFRHqcuT86B_kSaXwOdQQ + repackage-l10n-zh-CN-linux-nightly/opt: NLNucfn3QOG6HP-hmZokew + repackage-l10n-zh-CN-linux64-nightly/opt: NIyH_N8lQxG4KBrtI-0C5g + repackage-l10n-zh-CN-macosx64-nightly/opt: KUNwvU8ZTVKVDtx804zCDQ + repackage-l10n-zh-CN-win32-nightly/opt: ZoWfzdicQtuW6Avo8tqkCw + repackage-l10n-zh-CN-win64-nightly/opt: crhHxmCSQd-4JHRZ8w4Fdw + repackage-l10n-zh-TW-linux-nightly/opt: ZdJDq5K1Tu2MW_oU2mDlnA + repackage-l10n-zh-TW-linux64-nightly/opt: HBCE8wT4QAmx7_PzMQC81A + repackage-l10n-zh-TW-macosx64-nightly/opt: ZYBrjx30S2OwzfWJKIzTdw + repackage-l10n-zh-TW-win32-nightly/opt: fUVNVY9ASXWh0jpeQFYWfw + repackage-l10n-zh-TW-win64-nightly/opt: YOiSIDw4S8aYT85CNFs4qA + repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw + repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw + repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg + repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A + repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw + repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg + repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ + repackage-signing-l10n-ach-linux-nightly/opt: fAvC9v-XSLyJcrcpfwqZOw + repackage-signing-l10n-ach-linux64-nightly/opt: Vcv9E2lhSiGG2Cegj8KIew + repackage-signing-l10n-ach-macosx64-nightly/opt: AA89SyuTQLiwKmX489DQxA + repackage-signing-l10n-ach-win32-nightly/opt: EYCn4a0TQnyi2c7yc46ihQ + repackage-signing-l10n-ach-win64-nightly/opt: QS7WN3xeQ12urQGD3osz7w + repackage-signing-l10n-af-linux-nightly/opt: am-JImE0S0-r4C2-Ts37xQ + repackage-signing-l10n-af-linux64-nightly/opt: LVf3uAZ_SgegHwoqqsCwyA + repackage-signing-l10n-af-macosx64-nightly/opt: B4mc2R9YTECcx744jT5ZxA + repackage-signing-l10n-af-win32-nightly/opt: Q60fyODjRJWDkfVGtSGIaQ + repackage-signing-l10n-af-win64-nightly/opt: J4zfRenYQ_Ccvq7Pr4MfPw + repackage-signing-l10n-an-linux-nightly/opt: Ee2Br43vRjGEx-twKoqkVA + repackage-signing-l10n-an-linux64-nightly/opt: JiCbK76xS0KBXFTGM2Ikrg + repackage-signing-l10n-an-macosx64-nightly/opt: HY1J0vxQQvq8dD73IkgLDg + repackage-signing-l10n-an-win32-nightly/opt: LPid3B9tT_q18kCLR2ETuQ + repackage-signing-l10n-an-win64-nightly/opt: KL-EnxJcT8GJFwTkhnGE3g + repackage-signing-l10n-ar-linux-nightly/opt: IsMNN8fYSeuAwaPC-NBjNg + repackage-signing-l10n-ar-linux64-nightly/opt: YdAaaCeESzeOZJZhoU_FMA + repackage-signing-l10n-ar-macosx64-nightly/opt: FIWG4K0eRbmQqA09uzNkeg + repackage-signing-l10n-ar-win32-nightly/opt: c0OH4GtXSf6_a-_L1dmZDw + repackage-signing-l10n-ar-win64-nightly/opt: BLoCiPjISSuUPdCW4YWuhQ + repackage-signing-l10n-as-linux-nightly/opt: YEN4hgMlTwSH_xANAnCjEg + repackage-signing-l10n-as-linux64-nightly/opt: AY5cQf4hQJ2buzFOAKr87w + repackage-signing-l10n-as-macosx64-nightly/opt: P5dzdyn0SVK1vS5ZtG6pQw + repackage-signing-l10n-as-win32-nightly/opt: MSOAHn9VQ8yH2KUIarrDHg + repackage-signing-l10n-as-win64-nightly/opt: E3wSJw5BRnqSiHCWOtFxmw + repackage-signing-l10n-ast-linux-nightly/opt: Tnnfb3z1SDS4wlF8JkN3fA + repackage-signing-l10n-ast-linux64-nightly/opt: BJ-oW97DTXuIHYrtzUtEEQ + repackage-signing-l10n-ast-macosx64-nightly/opt: DdKMOQanTX6zibN387KZ8Q + repackage-signing-l10n-ast-win32-nightly/opt: Tr1FBxJHThaXQQCoYOYH0A + repackage-signing-l10n-ast-win64-nightly/opt: OJBRpZLkS8S_8uc00_7e6w + repackage-signing-l10n-az-linux-nightly/opt: CoA7XOfVQU-1aqtCxLkqfw + repackage-signing-l10n-az-linux64-nightly/opt: EA2HpsZZQ9qS4SGARaT3UA + repackage-signing-l10n-az-macosx64-nightly/opt: Etw7XdNPQU-bP0kmDMxHmQ + repackage-signing-l10n-az-win32-nightly/opt: DTAqU-5YRGScHpN5juWfDA + repackage-signing-l10n-az-win64-nightly/opt: T6BhjVuKRieM25d2Gp6-Ag + repackage-signing-l10n-be-linux-nightly/opt: bG09MC_ZRBeNm4cZDGMCEA + repackage-signing-l10n-be-linux64-nightly/opt: BXJpzNn0Qn2OU_KUM123VA + repackage-signing-l10n-be-macosx64-nightly/opt: AZCO-pbSR467nQBP8fxB1w + repackage-signing-l10n-be-win32-nightly/opt: V9LMRU3jR_6_YyBew8uo2Q + repackage-signing-l10n-be-win64-nightly/opt: UrmTQF0mTfq5LZlI8ntpYQ + repackage-signing-l10n-bg-linux-nightly/opt: EIM5cazgQOiGup2RVXkyTw + repackage-signing-l10n-bg-linux64-nightly/opt: bdiESmd2Tjy93v55aan7Sw + repackage-signing-l10n-bg-macosx64-nightly/opt: BvStobqwT3qZgpufMtiERw + repackage-signing-l10n-bg-win32-nightly/opt: fmn3N2msTuuvBOZ0xxJVuA + repackage-signing-l10n-bg-win64-nightly/opt: MwcrOu9ARumsoVjAa8SlGg + repackage-signing-l10n-bn-BD-linux-nightly/opt: cQ8DXc09QGaUuOR3OCTEVA + repackage-signing-l10n-bn-BD-linux64-nightly/opt: G9w4aKFRQOyqsdwY2Rxjmg + repackage-signing-l10n-bn-BD-macosx64-nightly/opt: SqjfJktvSeGPIFKENqg2hQ + repackage-signing-l10n-bn-BD-win32-nightly/opt: QUb2yI39TimxwOU_aWZsTQ + repackage-signing-l10n-bn-BD-win64-nightly/opt: YSg_a7PlRnmwjWNne90pZw + repackage-signing-l10n-bn-IN-linux-nightly/opt: WhJdTMn2Qc61S1IvTu9Wng + repackage-signing-l10n-bn-IN-linux64-nightly/opt: DeLYDeU4TTSdeCylUJX2lQ + repackage-signing-l10n-bn-IN-macosx64-nightly/opt: DV1Up2k2ROCkQOCvQ5sucQ + repackage-signing-l10n-bn-IN-win32-nightly/opt: ZWX7zun9Q3a8kCFXq_FGvw + repackage-signing-l10n-bn-IN-win64-nightly/opt: U8NFK_lWSUuosP3B0ZbVUA + repackage-signing-l10n-br-linux-nightly/opt: KG0SECCmRVGr1GIb_mseOQ + repackage-signing-l10n-br-linux64-nightly/opt: cIBNTZd_QEC2N6KYobb37A + repackage-signing-l10n-br-macosx64-nightly/opt: fBZp28bkTiG-rr2Nmdj9AA + repackage-signing-l10n-br-win32-nightly/opt: Pr_a2YYUST6y0tRqFKyfng + repackage-signing-l10n-br-win64-nightly/opt: Dp7uF75QTNSOgmm17dtMKg + repackage-signing-l10n-bs-linux-nightly/opt: GIY29le4RiqeaX4G33f6TA + repackage-signing-l10n-bs-linux64-nightly/opt: WgV6jv9yRJuBsxTPPQxd8Q + repackage-signing-l10n-bs-macosx64-nightly/opt: AQ0XYLyqQZmXU1mIFdTqgA + repackage-signing-l10n-bs-win32-nightly/opt: WLwkPj1wSJC1SyB_R4xmoQ + repackage-signing-l10n-bs-win64-nightly/opt: WHiqY6RHQSi8ZMhPvoGZLw + repackage-signing-l10n-ca-linux-nightly/opt: B7ETXAzbSP-pJU43PcsbPg + repackage-signing-l10n-ca-linux64-nightly/opt: ffj7REmzQFuTy5R48N3k5A + repackage-signing-l10n-ca-macosx64-nightly/opt: YQ0WddjLTSylYD-LN_J4Fw + repackage-signing-l10n-ca-win32-nightly/opt: eJZbY0VURN6iQZGvesJOtQ + repackage-signing-l10n-ca-win64-nightly/opt: FBzSCExGT1qGyYbuGznZdw + repackage-signing-l10n-cak-linux-nightly/opt: FECCg6xLQ3mCqifZljkjsA + repackage-signing-l10n-cak-linux64-nightly/opt: HXgAGOoWRWuR7lSDc1Stkg + repackage-signing-l10n-cak-macosx64-nightly/opt: EvIwe9S8SGSb42r4yVcXJA + repackage-signing-l10n-cak-win32-nightly/opt: Vax7C0UCRtGUfn284rqTZw + repackage-signing-l10n-cak-win64-nightly/opt: Q7W_ZDIgS4my0__KkIdycA + repackage-signing-l10n-cs-linux-nightly/opt: bFvM7CqXTXKBKcZePllGKQ + repackage-signing-l10n-cs-linux64-nightly/opt: GGdTDqvISnqKYHQuvxyTqA + repackage-signing-l10n-cs-macosx64-nightly/opt: exBXNztTSEGVluUGAPdUKw + repackage-signing-l10n-cs-win32-nightly/opt: Z_SSTQd9ToyIz7dh7L18_Q + repackage-signing-l10n-cs-win64-nightly/opt: FkT6jPX8R9KsRiN_qjbTvw + repackage-signing-l10n-cy-linux-nightly/opt: WDDoqBpZRx-hs2iIE5f1-A + repackage-signing-l10n-cy-linux64-nightly/opt: LZhIpSpRQVigRYby42F3aA + repackage-signing-l10n-cy-macosx64-nightly/opt: NZIO5NmXSv2rjcd5evXP_w + repackage-signing-l10n-cy-win32-nightly/opt: HKQck4vvR6aXWvrMzo-Mvg + repackage-signing-l10n-cy-win64-nightly/opt: AmVP2IJKS-SwqmCEP2DMeA + repackage-signing-l10n-da-linux-nightly/opt: embDNZtsR3-JZ0RxMvMZ4A + repackage-signing-l10n-da-linux64-nightly/opt: LEi5UmnoTUqTxgd3iIdUXw + repackage-signing-l10n-da-macosx64-nightly/opt: db1XS0qAQZ-HsGbgHc4PcQ + repackage-signing-l10n-da-win32-nightly/opt: VImlIRhBQ02G1Lf39liZXw + repackage-signing-l10n-da-win64-nightly/opt: YpyLBV8YQnS3mCfVa2UPRg + repackage-signing-l10n-de-linux-nightly/opt: OxMz2JgoS9uDmMvJoL_S9g + repackage-signing-l10n-de-linux64-nightly/opt: Bjf09fNwTteVe9HWaQdnlg + repackage-signing-l10n-de-macosx64-nightly/opt: JZ3X8RaXTNycGkgn1qXCiw + repackage-signing-l10n-de-win32-nightly/opt: UyQT6n5XQX-jcvp7SfI8RQ + repackage-signing-l10n-de-win64-nightly/opt: XI-EZLPnTBuFOthiIqEHKg + repackage-signing-l10n-dsb-linux-nightly/opt: cUbgJn7XRlaFkUzkr17FHQ + repackage-signing-l10n-dsb-linux64-nightly/opt: LZLYVtj6TVmmZgN2Z3uYCA + repackage-signing-l10n-dsb-macosx64-nightly/opt: LCO5Qr9HTtWj5P6FGWt9PA + repackage-signing-l10n-dsb-win32-nightly/opt: Kz7qIhSJQZC04Ss5AEvs3Q + repackage-signing-l10n-dsb-win64-nightly/opt: JLN5qdpIQKyEIXdHo7505Q + repackage-signing-l10n-el-linux-nightly/opt: HmjG_VhHQkO5kzkUaNdNRA + repackage-signing-l10n-el-linux64-nightly/opt: ZEfJdp6rRuW07gwNsELLvw + repackage-signing-l10n-el-macosx64-nightly/opt: em9DWRAvQOajAGy-syRAMA + repackage-signing-l10n-el-win32-nightly/opt: Dd0c5MPkRi64jaNdRHKcag + repackage-signing-l10n-el-win64-nightly/opt: MpN5_ySXR7SnEByPHRW7bQ + repackage-signing-l10n-en-CA-linux-nightly/opt: Y1RfVA46Q02RZlZAPcmuYA + repackage-signing-l10n-en-CA-linux64-nightly/opt: VC_Nipc9QpyRmVoCE6uBAg + repackage-signing-l10n-en-CA-macosx64-nightly/opt: de5nIASeRiSYuW9nn4su_g + repackage-signing-l10n-en-CA-win32-nightly/opt: WSusudwCTu2pgDfSpuoYNA + repackage-signing-l10n-en-CA-win64-nightly/opt: MpkzRo1TRL2G1GYNMTLhaA + repackage-signing-l10n-en-GB-linux-nightly/opt: XZrS8CPMQNKmYIIZMuVbAA + repackage-signing-l10n-en-GB-linux64-nightly/opt: Cvyc0ynEQciXutAejjvhQw + repackage-signing-l10n-en-GB-macosx64-nightly/opt: LI0GpvJ8T3S0Xua8xz1ATA + repackage-signing-l10n-en-GB-win32-nightly/opt: XcHCSDXXQCirDnGtGeEJlw + repackage-signing-l10n-en-GB-win64-nightly/opt: M-YRLPY4Q7SoUqCrMKzQFw + repackage-signing-l10n-en-ZA-linux-nightly/opt: eGZ3U8d_SkenPcNQ9M014g + repackage-signing-l10n-en-ZA-linux64-nightly/opt: E3QS042sRQS-CYm-0Rpykg + repackage-signing-l10n-en-ZA-macosx64-nightly/opt: YJEQ0J8wTxuxj1sPui6bjg + repackage-signing-l10n-en-ZA-win32-nightly/opt: PLpJM7lGTWG7gV5vrW-cFQ + repackage-signing-l10n-en-ZA-win64-nightly/opt: B_rzzxB4RpCzlzHlMGQ-iw + repackage-signing-l10n-eo-linux-nightly/opt: CVObj2zmQrSRQMLkuuMfFw + repackage-signing-l10n-eo-linux64-nightly/opt: N6yCt-x5RV2XWKWgNoCBkg + repackage-signing-l10n-eo-macosx64-nightly/opt: SIbU2KqQRFS9IesNFvn_8g + repackage-signing-l10n-eo-win32-nightly/opt: JUQqgb0QTZKaVNIm0Y-DfQ + repackage-signing-l10n-eo-win64-nightly/opt: VpPvf5B_TISpJykd72lE6w + repackage-signing-l10n-es-AR-linux-nightly/opt: QV5OAEc1QLyAo_H5q6Wa3g + repackage-signing-l10n-es-AR-linux64-nightly/opt: M_3_NBgiQCGiVOAJ2FMH4g + repackage-signing-l10n-es-AR-macosx64-nightly/opt: SRdYphzuRoG-8xRashlx8Q + repackage-signing-l10n-es-AR-win32-nightly/opt: Y05ckJtyRIufoiB-MfYm6g + repackage-signing-l10n-es-AR-win64-nightly/opt: URyztnYsSqq437UCCdeaVg + repackage-signing-l10n-es-CL-linux-nightly/opt: awFRPvBJSNC9epBZfMpSqw + repackage-signing-l10n-es-CL-linux64-nightly/opt: b0GI8a7rRuiZKwjHeNN6sw + repackage-signing-l10n-es-CL-macosx64-nightly/opt: NnLRv4iURJiT5WdymzjuVQ + repackage-signing-l10n-es-CL-win32-nightly/opt: Wp1NUM4hTHm2LKYEz-U3SQ + repackage-signing-l10n-es-CL-win64-nightly/opt: QtJWINsKRwCJ8zC1f_HPWw + repackage-signing-l10n-es-ES-linux-nightly/opt: BeiV8Ul2SoKtF7fckfqQPw + repackage-signing-l10n-es-ES-linux64-nightly/opt: WRskua4xQWawGoxS0NcViw + repackage-signing-l10n-es-ES-macosx64-nightly/opt: Jj8e62MXRWmYoKhshNM7_w + repackage-signing-l10n-es-ES-win32-nightly/opt: WJN6IKEkSSybnhWGvOO2Uw + repackage-signing-l10n-es-ES-win64-nightly/opt: SqUjd8tLQyW_gi1Om2ZjSA + repackage-signing-l10n-es-MX-linux-nightly/opt: YNBM3nbYQ5eu3qHW4VSSJQ + repackage-signing-l10n-es-MX-linux64-nightly/opt: VWR-e74tSo6Q4cA8vZY_pQ + repackage-signing-l10n-es-MX-macosx64-nightly/opt: PGxjjAkdRsqsxsbYJxv7kQ + repackage-signing-l10n-es-MX-win32-nightly/opt: VGnjDEE3Qaaqm7jhDO-t6Q + repackage-signing-l10n-es-MX-win64-nightly/opt: OmZSD6U5R-qweT7Uq1ViUA + repackage-signing-l10n-et-linux-nightly/opt: FR6X0YsCTvWC5g_NQcRUfw + repackage-signing-l10n-et-linux64-nightly/opt: bFMIGH9-SceXyaMyFVLnKg + repackage-signing-l10n-et-macosx64-nightly/opt: SjOCZW-eT6qNUX3--D3dpQ + repackage-signing-l10n-et-win32-nightly/opt: P1g6resMTU-f3e_5NE4G4A + repackage-signing-l10n-et-win64-nightly/opt: PNlOhZKnTYCAnKE-t9fUvA + repackage-signing-l10n-eu-linux-nightly/opt: Ur0dWGxKQamf725kzr0rPw + repackage-signing-l10n-eu-linux64-nightly/opt: PiLm411hRcu5uSTaYOPKGA + repackage-signing-l10n-eu-macosx64-nightly/opt: ZffeYcdRTjivgW9y_-fwqA + repackage-signing-l10n-eu-win32-nightly/opt: PZRfXzZbSqq6zTupcqcS1g + repackage-signing-l10n-eu-win64-nightly/opt: KDTOj9jPRneGVTsFFZ_fhQ + repackage-signing-l10n-fa-linux-nightly/opt: EnHWGU5vQHqAoi6CLm5MJA + repackage-signing-l10n-fa-linux64-nightly/opt: EXaPMxJERbG8rLnMj7ThMw + repackage-signing-l10n-fa-macosx64-nightly/opt: ZrDcqkOuSMC8jc86y83wBw + repackage-signing-l10n-fa-win32-nightly/opt: C70bd2c7QeOgl3sUwqajLg + repackage-signing-l10n-fa-win64-nightly/opt: H3gz0-W_S_OE4bDTgxn4aA + repackage-signing-l10n-ff-linux-nightly/opt: aFU5yQ0xQTOG3C6EqA2DnA + repackage-signing-l10n-ff-linux64-nightly/opt: D9LlLSK3Taq6aR7EFa3xJQ + repackage-signing-l10n-ff-macosx64-nightly/opt: ExMqoOc7RfOgynLUhefLvw + repackage-signing-l10n-ff-win32-nightly/opt: FBKUBTZTT6GJ5l76W5Wpqg + repackage-signing-l10n-ff-win64-nightly/opt: TQzZdsF0SDSqcYDcg7VF0Q + repackage-signing-l10n-fi-linux-nightly/opt: Im2MELuDS3ypYY4nhutNGQ + repackage-signing-l10n-fi-linux64-nightly/opt: Ybz5zYAHSICG7i1JEBrI0w + repackage-signing-l10n-fi-macosx64-nightly/opt: XKpTN4_WS56-a5uelNkk8g + repackage-signing-l10n-fi-win32-nightly/opt: FXL9FoFiSgCjJt_piKo3HA + repackage-signing-l10n-fi-win64-nightly/opt: H_n59Q1rRWWl2JrbpRiVPQ + repackage-signing-l10n-fr-linux-nightly/opt: dCsXvhruTiy_VVEGaO_g7Q + repackage-signing-l10n-fr-linux64-nightly/opt: Rf1GF6RSQi24jeXT1sng2A + repackage-signing-l10n-fr-macosx64-nightly/opt: Ov7BC2oGRqa2DN6Z1fqVUw + repackage-signing-l10n-fr-win32-nightly/opt: YvZQM4GbTmaWl2o8BwFNFA + repackage-signing-l10n-fr-win64-nightly/opt: ZcgljIn3RjSX7tzWDh0Wlg + repackage-signing-l10n-fy-NL-linux-nightly/opt: NaYI1w5FRvSYs9mzf69oOQ + repackage-signing-l10n-fy-NL-linux64-nightly/opt: WEGszjqcQraQzOohZHYBVA + repackage-signing-l10n-fy-NL-macosx64-nightly/opt: GXsPEBdfTMecJlY4uzHMfw + repackage-signing-l10n-fy-NL-win32-nightly/opt: WQ6Lc7_AR6ePWC_8OrfFWQ + repackage-signing-l10n-fy-NL-win64-nightly/opt: UnKjsArXSnuycIWOwICk5g + repackage-signing-l10n-ga-IE-linux-nightly/opt: HlanSStoSQisCfYjFJ304g + repackage-signing-l10n-ga-IE-linux64-nightly/opt: emJNUPLuTGiq1P1YsZqSow + repackage-signing-l10n-ga-IE-macosx64-nightly/opt: KB60jyxCRs2SgTuUXxIE7g + repackage-signing-l10n-ga-IE-win32-nightly/opt: cm-Zun5ORkS7nCnG-CF7xQ + repackage-signing-l10n-ga-IE-win64-nightly/opt: Oi8xiCkdTWixeQ83D5XQeQ + repackage-signing-l10n-gd-linux-nightly/opt: H0QhEvPSQQGqlPQ8mF3yiQ + repackage-signing-l10n-gd-linux64-nightly/opt: Vkoj_gZ6Rmm9Sfgj4GE-RQ + repackage-signing-l10n-gd-macosx64-nightly/opt: ZisYh3toT16YOhA_QO4JsQ + repackage-signing-l10n-gd-win32-nightly/opt: aSMT3jnGQkqRliES6VipGA + repackage-signing-l10n-gd-win64-nightly/opt: aD7k8NsBT3iUOntSvK-zyA + repackage-signing-l10n-gl-linux-nightly/opt: Nxl_JpQNQUyF_7XUmAVyag + repackage-signing-l10n-gl-linux64-nightly/opt: RmPK1DHwSCmOpD4NDqgC3g + repackage-signing-l10n-gl-macosx64-nightly/opt: LdAgA4mySNy_jDHSwg7l0Q + repackage-signing-l10n-gl-win32-nightly/opt: WrdPt7TDQI6SnHG0XN5RSA + repackage-signing-l10n-gl-win64-nightly/opt: FDM7nGsjSgCZdtV8zgVm2Q + repackage-signing-l10n-gn-linux-nightly/opt: daoVzRF-QtidceCwo3Ildw + repackage-signing-l10n-gn-linux64-nightly/opt: HTwz9neqS4CLb1ZPsep5nw + repackage-signing-l10n-gn-macosx64-nightly/opt: RMNQJDbGRomnhbrytM8h4w + repackage-signing-l10n-gn-win32-nightly/opt: c7etVvl_SfaNl1G-RahYiQ + repackage-signing-l10n-gn-win64-nightly/opt: N1k023rbRaOdZ7I3s5VUhg + repackage-signing-l10n-gu-IN-linux-nightly/opt: XA3ODce5TpiCL7nszUPHFg + repackage-signing-l10n-gu-IN-linux64-nightly/opt: FtH9c_t2QvijJJD5y81hsg + repackage-signing-l10n-gu-IN-macosx64-nightly/opt: bYgbrsS4QjqDPywcSFbRYQ + repackage-signing-l10n-gu-IN-win32-nightly/opt: Z0mwKLloRzO80Q8Ez4-ijg + repackage-signing-l10n-gu-IN-win64-nightly/opt: OOVftXGjQGut9YSahD72MA + repackage-signing-l10n-he-linux-nightly/opt: YnSRwyf_QF2AZG9mSR2x7w + repackage-signing-l10n-he-linux64-nightly/opt: RaraTuqjRsOrugv-xzcd3Q + repackage-signing-l10n-he-macosx64-nightly/opt: FR28kPGCRu-loL8jpnxzWw + repackage-signing-l10n-he-win32-nightly/opt: OprharuUT3C0Fjv0rPhoLQ + repackage-signing-l10n-he-win64-nightly/opt: avgh6K0JSdSkGlxxt_KZWA + repackage-signing-l10n-hi-IN-linux-nightly/opt: J-M7jKG4QTagxl5ZK0g4yQ + repackage-signing-l10n-hi-IN-linux64-nightly/opt: XMub522mTO6-Xmj0IVIiLQ + repackage-signing-l10n-hi-IN-macosx64-nightly/opt: RrfExwOoRbOwP9Y8e4kDYA + repackage-signing-l10n-hi-IN-win32-nightly/opt: Ehhwq7AnTkOtRxO8Cx6-qg + repackage-signing-l10n-hi-IN-win64-nightly/opt: ctz6JptjRmiw1iuzgVvdDQ + repackage-signing-l10n-hr-linux-nightly/opt: MCiBdnY7R0SmtvnqyuRjiQ + repackage-signing-l10n-hr-linux64-nightly/opt: RODaLKWFQyimVEi8Jr9cTA + repackage-signing-l10n-hr-macosx64-nightly/opt: ZhR3MPSsTT68DtibswW3Vg + repackage-signing-l10n-hr-win32-nightly/opt: FApws6mGR2u2n7Nk6pYk3A + repackage-signing-l10n-hr-win64-nightly/opt: WJv1dE3BRzqSyjNLZ9wlng + repackage-signing-l10n-hsb-linux-nightly/opt: LxSvJJVLTgOPDOVJ__zpMA + repackage-signing-l10n-hsb-linux64-nightly/opt: dmgFcrKZSVmr_hu6tdJFbQ + repackage-signing-l10n-hsb-macosx64-nightly/opt: Sk5VdTY3SPibeHQMrka8cg + repackage-signing-l10n-hsb-win32-nightly/opt: H9gHOd9qRTi1mbsPz06rkQ + repackage-signing-l10n-hsb-win64-nightly/opt: d8S8ciaqRA2BXi-7FrcC2w + repackage-signing-l10n-hu-linux-nightly/opt: FUs1-u4JQcSeUEB294DE8g + repackage-signing-l10n-hu-linux64-nightly/opt: Gs2Aq0oIRpmXhJKH7Wh_ag + repackage-signing-l10n-hu-macosx64-nightly/opt: Ko7ncwVXQueQBeE1nR8djw + repackage-signing-l10n-hu-win32-nightly/opt: Zvv_PpWsRgqT75xQm6HUkQ + repackage-signing-l10n-hu-win64-nightly/opt: NQAZfm7ZQ3Ozon7FKY1SHg + repackage-signing-l10n-hy-AM-linux-nightly/opt: bDFMzBiiTqusE5YoZEeG7Q + repackage-signing-l10n-hy-AM-linux64-nightly/opt: P8ZxpWIjSnWONhSu8hdXaw + repackage-signing-l10n-hy-AM-macosx64-nightly/opt: dMh3GbSXQl2Brg7w5FsQ_Q + repackage-signing-l10n-hy-AM-win32-nightly/opt: c3U4wan4QQCxWhFNkUvMsg + repackage-signing-l10n-hy-AM-win64-nightly/opt: U5XKWNmURee2K-z12INTIQ + repackage-signing-l10n-ia-linux-nightly/opt: fZ-J3BtuQcaGQYSsIUeUsg + repackage-signing-l10n-ia-linux64-nightly/opt: OEc0vEJAQp6xzfads9W7aQ + repackage-signing-l10n-ia-macosx64-nightly/opt: GHKsHFH4RNKK0aUmK-_05Q + repackage-signing-l10n-ia-win32-nightly/opt: MEpxKmvKS2Wmccm2MApy7g + repackage-signing-l10n-ia-win64-nightly/opt: O4LglEFKQWCkFZGydQIEEg + repackage-signing-l10n-id-linux-nightly/opt: EG6zXOfjRie1AEarZqjOTw + repackage-signing-l10n-id-linux64-nightly/opt: FlNqV5sVRV2eInASttHinA + repackage-signing-l10n-id-macosx64-nightly/opt: FE6TGYbMSRSxK0K8R06Fxw + repackage-signing-l10n-id-win32-nightly/opt: IgwsoU7aTy2d_FsSTMpozw + repackage-signing-l10n-id-win64-nightly/opt: MwA-kd-aSoqK0ZIoM2YhMg + repackage-signing-l10n-is-linux-nightly/opt: dUZDBfbmTBq-rG5xhGb5Lg + repackage-signing-l10n-is-linux64-nightly/opt: G37ZmO4GT32gaJbtA-_QZA + repackage-signing-l10n-is-macosx64-nightly/opt: EAdYQypDRK2BTg0aW1uOiQ + repackage-signing-l10n-is-win32-nightly/opt: fysAq2OeS22LTAIXIN9Zuw + repackage-signing-l10n-is-win64-nightly/opt: fu_f5jMIToOI-oPRsoB-0Q + repackage-signing-l10n-it-linux-nightly/opt: GQOCqNOKRc6vwLBd8PjOJA + repackage-signing-l10n-it-linux64-nightly/opt: GF3JJRvtQXeEcSAYq2xG3w + repackage-signing-l10n-it-macosx64-nightly/opt: HhdDHXvRSOqm0Nxuq7_JUQ + repackage-signing-l10n-it-win32-nightly/opt: Y6KQGGPvQVybpo8oMkmiEw + repackage-signing-l10n-it-win64-nightly/opt: Fy3zc0nATdqvxWpfEsnj4w + repackage-signing-l10n-ja-JP-mac-macosx64-nightly/opt: C9PxyYU0TZejPA-zkPtyyQ + repackage-signing-l10n-ja-linux-nightly/opt: YBFw-qXUSdqBScRoUjse5A + repackage-signing-l10n-ja-linux64-nightly/opt: UogzCsibT9i5aq3sIDNgXQ + repackage-signing-l10n-ja-win32-nightly/opt: BROb3yrVR6665AUY3kFGKw + repackage-signing-l10n-ja-win64-nightly/opt: dkPU_BRbQB2z3q7bsLYJpw + repackage-signing-l10n-ka-linux-nightly/opt: IR9A3T3RTHClzxaMFM-9LQ + repackage-signing-l10n-ka-linux64-nightly/opt: cnEq3S7yRCSwInRR7eLAGw + repackage-signing-l10n-ka-macosx64-nightly/opt: R12QoLAaRDyLVM1L6HQTLA + repackage-signing-l10n-ka-win32-nightly/opt: RIIsC0fwQVy4w3ttCMsqyw + repackage-signing-l10n-ka-win64-nightly/opt: aZaHxAtdSoeHjsUIDCuoow + repackage-signing-l10n-kab-linux-nightly/opt: HBrf8xdIQQWdZ3e2SU9xJg + repackage-signing-l10n-kab-linux64-nightly/opt: ElH_7MHaTRyo8nPqJai7YA + repackage-signing-l10n-kab-macosx64-nightly/opt: RdC6ancLTSyH7HCcNWJlEQ + repackage-signing-l10n-kab-win32-nightly/opt: J1xfdHNqQbCLAL4ZtcObrQ + repackage-signing-l10n-kab-win64-nightly/opt: HSjm2HRdQk2Uf1cFBIz7Ag + repackage-signing-l10n-kk-linux-nightly/opt: O4R_hSD0RzSiSPdMoVXXxw + repackage-signing-l10n-kk-linux64-nightly/opt: YGmROL5FT5OI2IZPsQIbmw + repackage-signing-l10n-kk-macosx64-nightly/opt: SOgODyUATyySLB9FROr-_A + repackage-signing-l10n-kk-win32-nightly/opt: NwUgx1BNSoKJVQ2V-b6Deg + repackage-signing-l10n-kk-win64-nightly/opt: Hb9mKZzCS9uqnsQMIMbO5g + repackage-signing-l10n-km-linux-nightly/opt: aJDL1w16RcKL4tsZy96T_w + repackage-signing-l10n-km-linux64-nightly/opt: Fr4n-E_IQ3uV3AWAmFGDAg + repackage-signing-l10n-km-macosx64-nightly/opt: G89rnmgmSVm5_uUvVCk9LA + repackage-signing-l10n-km-win32-nightly/opt: HyL31tMiSeih88t6FR0twA + repackage-signing-l10n-km-win64-nightly/opt: I67Qsyb1RQOGuD_Nx3I39Q + repackage-signing-l10n-kn-linux-nightly/opt: Xvuf79n4R2-9l-nNREzLjg + repackage-signing-l10n-kn-linux64-nightly/opt: dBhHzmYPReufVdMHsy0PMA + repackage-signing-l10n-kn-macosx64-nightly/opt: V5aojOzQTDeXRH-xvwr7vg + repackage-signing-l10n-kn-win32-nightly/opt: bOxK5FMgRnii_WYmu03fHQ + repackage-signing-l10n-kn-win64-nightly/opt: T8tOcuK8TSSZjztG0AICZA + repackage-signing-l10n-ko-linux-nightly/opt: TgHxOUXpQtmVTAfKoJ2dXQ + repackage-signing-l10n-ko-linux64-nightly/opt: I3QCE3X3Sai0WeJVmlrRxw + repackage-signing-l10n-ko-macosx64-nightly/opt: CsOevdopQIKWqcRyZgmnPA + repackage-signing-l10n-ko-win32-nightly/opt: NllCbxDIQvCf8Wh_PrP3Qw + repackage-signing-l10n-ko-win64-nightly/opt: XiIsCmx3RoGYumt4r5eWqQ + repackage-signing-l10n-lij-linux-nightly/opt: cgyD5HpbQuGmSmkSbNaqew + repackage-signing-l10n-lij-linux64-nightly/opt: IVxhNsWeRB-MXusTX4Flfw + repackage-signing-l10n-lij-macosx64-nightly/opt: OIOEaN_rTs-DmhXl8kYgRA + repackage-signing-l10n-lij-win32-nightly/opt: HgjL4yaQSASey25wLeIPZg + repackage-signing-l10n-lij-win64-nightly/opt: Fwh8HMxzRPuIu39mu350sA + repackage-signing-l10n-lt-linux-nightly/opt: JqiPIufKSKOAtTbpy_xVVQ + repackage-signing-l10n-lt-linux64-nightly/opt: LsldhnzvStWK9L5zfGZRwg + repackage-signing-l10n-lt-macosx64-nightly/opt: XYiyiueMRr2qT6rrxqZaWA + repackage-signing-l10n-lt-win32-nightly/opt: c64_384bShGmTegcFeSiJw + repackage-signing-l10n-lt-win64-nightly/opt: Q8EnRWg_SNe6uMR8ay8l4Q + repackage-signing-l10n-lv-linux-nightly/opt: Mp7TIGVlRqyuT56pirDSEw + repackage-signing-l10n-lv-linux64-nightly/opt: Pjgt6wL0RAmhWBoCMefK9Q + repackage-signing-l10n-lv-macosx64-nightly/opt: X0xSuZtpTwyZ0A9LjSdXvw + repackage-signing-l10n-lv-win32-nightly/opt: Cy9Ml8QmSDaEf61EDNT2PQ + repackage-signing-l10n-lv-win64-nightly/opt: ag89pZ48QZK-Nq8c1fNKxg + repackage-signing-l10n-mai-linux-nightly/opt: FoY6yMkHRjWeu6Yf5SrLTA + repackage-signing-l10n-mai-linux64-nightly/opt: SSFTQQBNSsOwH1WIDNBkaA + repackage-signing-l10n-mai-macosx64-nightly/opt: ZWaAw49qRmqx_M_QFrsh5Q + repackage-signing-l10n-mai-win32-nightly/opt: B9QkiVHZQdeGt2Y0yeoOIQ + repackage-signing-l10n-mai-win64-nightly/opt: docw-cfLSbmXISzSemCjfA + repackage-signing-l10n-mk-linux-nightly/opt: E1Lobwu6Qj-TK7vUEBieWQ + repackage-signing-l10n-mk-linux64-nightly/opt: asLQLhdeSnqIfA0poK9XmQ + repackage-signing-l10n-mk-macosx64-nightly/opt: agGtxVazTH2LZLFymhl5pQ + repackage-signing-l10n-mk-win32-nightly/opt: TwCxFBwVR5ms5HTPT8ZWbQ + repackage-signing-l10n-mk-win64-nightly/opt: KotWI6a-T9aJQWDhc-BNLw + repackage-signing-l10n-ml-linux-nightly/opt: eybshgJlThC8PlZninbjIA + repackage-signing-l10n-ml-linux64-nightly/opt: Byf2NlYsT8WclMUd4QBqSA + repackage-signing-l10n-ml-macosx64-nightly/opt: J4Zhgb29QwykOW1IERgB_w + repackage-signing-l10n-ml-win32-nightly/opt: PaS33ty9RrW4FfiEg45RMQ + repackage-signing-l10n-ml-win64-nightly/opt: QukXemWNShCQbAl_wCRnBQ + repackage-signing-l10n-mr-linux-nightly/opt: NlV_mAieSJKnDyz9ndEwbQ + repackage-signing-l10n-mr-linux64-nightly/opt: RuOvEb1VTi-ml6aI-sfYMQ + repackage-signing-l10n-mr-macosx64-nightly/opt: XjOrznhURPW1Y1d3HniA1Q + repackage-signing-l10n-mr-win32-nightly/opt: FiS93983QReWU0yoqCzSjA + repackage-signing-l10n-mr-win64-nightly/opt: Ra6jpjO6SVysSHQQyRKKxw + repackage-signing-l10n-ms-linux-nightly/opt: IkWCAqSATn6KzCiCIO_MQg + repackage-signing-l10n-ms-linux64-nightly/opt: DEhEX_U3SxaZf66XbbGgvQ + repackage-signing-l10n-ms-macosx64-nightly/opt: URhAyN6yQKiUDgiRIgWjmg + repackage-signing-l10n-ms-win32-nightly/opt: UBbEOxtVQ-K3z8-lXB-LAQ + repackage-signing-l10n-ms-win64-nightly/opt: N8PHng_dSgKrnjESg8zcmQ + repackage-signing-l10n-my-linux-nightly/opt: czIstd1zQ5inAy5MDdeUKg + repackage-signing-l10n-my-linux64-nightly/opt: fSZ9mLLOQbWBGt-wS3YKag + repackage-signing-l10n-my-macosx64-nightly/opt: GmNYP5D5T4-ocMuxQMX_HA + repackage-signing-l10n-my-win32-nightly/opt: KDmjFn_NT0Gf829rWCnl-w + repackage-signing-l10n-my-win64-nightly/opt: P2Q6eNOPRpqLXG3izXTaOw + repackage-signing-l10n-nb-NO-linux-nightly/opt: Uz451_GpSZSI-nsyhckHvw + repackage-signing-l10n-nb-NO-linux64-nightly/opt: aLv6kEmRQEumaI8kGqF--Q + repackage-signing-l10n-nb-NO-macosx64-nightly/opt: Uv4gzu0tReirE9Aa4DSQ_Q + repackage-signing-l10n-nb-NO-win32-nightly/opt: YGskM4vPS92AXUu45aK5Pg + repackage-signing-l10n-nb-NO-win64-nightly/opt: KUT6k1J7TV2bzx9Z0PuCug + repackage-signing-l10n-ne-NP-linux-nightly/opt: ToQXXFHCR1KmTIVuwrbm8w + repackage-signing-l10n-ne-NP-linux64-nightly/opt: PE6tUHWtQYKjLxwfnR033g + repackage-signing-l10n-ne-NP-macosx64-nightly/opt: TgjQS8qeRc2L4nzXqrOewg + repackage-signing-l10n-ne-NP-win32-nightly/opt: Ycbh2N3nRJup1fPR_KiN-Q + repackage-signing-l10n-ne-NP-win64-nightly/opt: OPyxr0ngTWCLCLs9KOA7jA + repackage-signing-l10n-nl-linux-nightly/opt: aIfsv17ySvy_zaIzSQYwuQ + repackage-signing-l10n-nl-linux64-nightly/opt: Hm9pHNSWQ-C5LBpDAA1E7g + repackage-signing-l10n-nl-macosx64-nightly/opt: FktJwfyeQ3isilDuTGYnfw + repackage-signing-l10n-nl-win32-nightly/opt: F0WtnMzXTD6U5pzqh9UOjw + repackage-signing-l10n-nl-win64-nightly/opt: GDe6TQImSBijxzKgJfKnkA + repackage-signing-l10n-nn-NO-linux-nightly/opt: BF2TKc91TU-ZVpeEE2tQIw + repackage-signing-l10n-nn-NO-linux64-nightly/opt: VWnaXteHQpmCzstqxSlAGQ + repackage-signing-l10n-nn-NO-macosx64-nightly/opt: LQ6dUVuHSiGHoYFW2aUPxA + repackage-signing-l10n-nn-NO-win32-nightly/opt: U2uAP2SDR9C88tnuODqqyA + repackage-signing-l10n-nn-NO-win64-nightly/opt: Q8ni759hSJqNGGI4Xji9FA + repackage-signing-l10n-oc-linux-nightly/opt: RzLr8Kz1SHOLRO7SXZHBkQ + repackage-signing-l10n-oc-linux64-nightly/opt: BCLHhPfETEm3BwXec23hbg + repackage-signing-l10n-oc-macosx64-nightly/opt: NtDyw74WT6iWrp9jAECTyQ + repackage-signing-l10n-oc-win32-nightly/opt: WTDZqWmOQTq2xWLWpN2EDg + repackage-signing-l10n-oc-win64-nightly/opt: L5qQyYi3TIuZknI_bFdeNQ + repackage-signing-l10n-or-linux-nightly/opt: XWNk5lJ2R4iZsomI3EIR5Q + repackage-signing-l10n-or-linux64-nightly/opt: NVP3TNXgSze8Hhw7Jyk9Lg + repackage-signing-l10n-or-macosx64-nightly/opt: OKMmnNWPQuiwV19oZkRRPg + repackage-signing-l10n-or-win32-nightly/opt: DzWbsKXuQmupdRPwQH-1JQ + repackage-signing-l10n-or-win64-nightly/opt: Pp0kV909SkyT-fzeuiyzrw + repackage-signing-l10n-pa-IN-linux-nightly/opt: Mdon0UCKQJitX6iAJYeyWA + repackage-signing-l10n-pa-IN-linux64-nightly/opt: ZmTqI_SIQeufS3J5e9SpuA + repackage-signing-l10n-pa-IN-macosx64-nightly/opt: G4NtfQxQRYyKqrJFe0iJ3g + repackage-signing-l10n-pa-IN-win32-nightly/opt: ALOeqG8HRwOwLrJ6blERsQ + repackage-signing-l10n-pa-IN-win64-nightly/opt: LEV2YxQiRvubB8L8rTX58Q + repackage-signing-l10n-pl-linux-nightly/opt: J01EqjQgTzSg1nDyit2XCQ + repackage-signing-l10n-pl-linux64-nightly/opt: Z7K1EVzOQsuhoVslGNKpyQ + repackage-signing-l10n-pl-macosx64-nightly/opt: M4CO4ZXZTui_kULw0A5gtw + repackage-signing-l10n-pl-win32-nightly/opt: Lbc1UXP8S02e5ECJOyqhUw + repackage-signing-l10n-pl-win64-nightly/opt: GPukNjHoTGO2xtzlvkUyXg + repackage-signing-l10n-pt-BR-linux-nightly/opt: VCGfn_WgRxCaMYkt2BBWMg + repackage-signing-l10n-pt-BR-linux64-nightly/opt: U5zbN9l6R62HMDzien3yFQ + repackage-signing-l10n-pt-BR-macosx64-nightly/opt: Ce1_BqusQJGgEy50VsI-9w + repackage-signing-l10n-pt-BR-win32-nightly/opt: LSNp0olKRqSh-MfsXMgEoQ + repackage-signing-l10n-pt-BR-win64-nightly/opt: L3KtGwigRumAqHIKffyt8g + repackage-signing-l10n-pt-PT-linux-nightly/opt: MHVhHbpAQ3uFAThZGD87IQ + repackage-signing-l10n-pt-PT-linux64-nightly/opt: cebUSNArTRm_XKysnAlrGQ + repackage-signing-l10n-pt-PT-macosx64-nightly/opt: FqivsVu8TO-IlmcvV4Jx-w + repackage-signing-l10n-pt-PT-win32-nightly/opt: LvdCpEuQTWq4ec-sVo7gXQ + repackage-signing-l10n-pt-PT-win64-nightly/opt: ZgMBksMqRMe_WeWhFWj_qA + repackage-signing-l10n-rm-linux-nightly/opt: BPshY3BXTmSC_aaaMSQpDQ + repackage-signing-l10n-rm-linux64-nightly/opt: PtiYBGGPRXeA82FdLOgiTg + repackage-signing-l10n-rm-macosx64-nightly/opt: HbABCQT1TWSry_IY5xyFqw + repackage-signing-l10n-rm-win32-nightly/opt: e75INMJCRzSlFYIEtc6RTQ + repackage-signing-l10n-rm-win64-nightly/opt: SDD7N3RDRSSDGkuWUtj1ug + repackage-signing-l10n-ro-linux-nightly/opt: BMkD1FdQTV6dKZYjKSZd0Q + repackage-signing-l10n-ro-linux64-nightly/opt: GoVt7km5SrGXatroWD13HA + repackage-signing-l10n-ro-macosx64-nightly/opt: XWuogkFhR4WHNVSMsL1EkA + repackage-signing-l10n-ro-win32-nightly/opt: Vu-GcguRSlm4FvNvAMECmQ + repackage-signing-l10n-ro-win64-nightly/opt: FByAvd_vSl-U_nJFybknIg + repackage-signing-l10n-ru-linux-nightly/opt: dsTYv72eTmaI2t9x1OtKjQ + repackage-signing-l10n-ru-linux64-nightly/opt: OSWy94YKQ1qhmSuh3B9BZA + repackage-signing-l10n-ru-macosx64-nightly/opt: MwFsHXQzRtKuMlDxyxoZaA + repackage-signing-l10n-ru-win32-nightly/opt: fKW6v-JoSNOnXp8bzFgMvA + repackage-signing-l10n-ru-win64-nightly/opt: Z2Ho3ejeQ8CTtO_2eVmnUw + repackage-signing-l10n-si-linux-nightly/opt: PaksFHgeSv2LZYQ0YhVUyw + repackage-signing-l10n-si-linux64-nightly/opt: S4-FC9FTRGeGAotq5_glvg + repackage-signing-l10n-si-macosx64-nightly/opt: G9VFPjEfTESGR3AT_XyHjA + repackage-signing-l10n-si-win32-nightly/opt: OnY6eoabT8eIp5Row3r9ig + repackage-signing-l10n-si-win64-nightly/opt: Cl7o0DCPSSq7kYBhDkkuyg + repackage-signing-l10n-sk-linux-nightly/opt: IlMxj92ZTJO3LE902Zh4Og + repackage-signing-l10n-sk-linux64-nightly/opt: FG4SfiAiRVef4pqv68rxrw + repackage-signing-l10n-sk-macosx64-nightly/opt: b-j1KNGMSE-Y70SoxIYdyQ + repackage-signing-l10n-sk-win32-nightly/opt: ZuXtme5kTLi5a_oJ6Lq9tg + repackage-signing-l10n-sk-win64-nightly/opt: ORLqNhKZTVmcIbGRJufb-Q + repackage-signing-l10n-sl-linux-nightly/opt: UZImpl0sRcSjiQ3jB0Ha3w + repackage-signing-l10n-sl-linux64-nightly/opt: CB0gqr-FTLiLwIFfYeq4TA + repackage-signing-l10n-sl-macosx64-nightly/opt: KKgxkMk9Rfi0RmSdjgfH1Q + repackage-signing-l10n-sl-win32-nightly/opt: cRthbStnSsysXqmuYIHbcw + repackage-signing-l10n-sl-win64-nightly/opt: BcdA2qP6TF2B5P5aV7OgDg + repackage-signing-l10n-son-linux-nightly/opt: e4iMtl1TQkakm83goL1tfQ + repackage-signing-l10n-son-linux64-nightly/opt: Pd58HHvJS2O4G0486Kqd7Q + repackage-signing-l10n-son-macosx64-nightly/opt: Aug81CVyQIyQQAHXvUZPpA + repackage-signing-l10n-son-win32-nightly/opt: aC-ve3ZUQkiPz_hwpJaboA + repackage-signing-l10n-son-win64-nightly/opt: RI-9o39QRfCRR8szkUlfVg + repackage-signing-l10n-sq-linux-nightly/opt: MLx3FTboTviFaqk1cw-jLQ + repackage-signing-l10n-sq-linux64-nightly/opt: HAcbdb_qSkm0hRJ8BnG1sQ + repackage-signing-l10n-sq-macosx64-nightly/opt: dqdQNHXXRxuVLGIKkxJLkw + repackage-signing-l10n-sq-win32-nightly/opt: XuEGjvNGSqiGPcM-DDE6dg + repackage-signing-l10n-sq-win64-nightly/opt: fbM3JchbRUmJw2dIZTXpxA + repackage-signing-l10n-sr-linux-nightly/opt: IQserNFITOyzXGKqhIXr3g + repackage-signing-l10n-sr-linux64-nightly/opt: RaNHvZ9TRTOOvZEo5N0orw + repackage-signing-l10n-sr-macosx64-nightly/opt: er_hc5gWSYq_DGbTLoSl4A + repackage-signing-l10n-sr-win32-nightly/opt: EPwJGLqjScyFPTy5M4PWSg + repackage-signing-l10n-sr-win64-nightly/opt: CgVXhU0pSOuZs0Cw4xYF-A + repackage-signing-l10n-sv-SE-linux-nightly/opt: Qj23vdxRTJ6H9Wj5jE3H7g + repackage-signing-l10n-sv-SE-linux64-nightly/opt: JQHXtHaMR_G3LgvO_vXnyA + repackage-signing-l10n-sv-SE-macosx64-nightly/opt: aexDsKYfRkuy_m54BJGJjQ + repackage-signing-l10n-sv-SE-win32-nightly/opt: fGQWB7TBRzWAYrTxCwGu9g + repackage-signing-l10n-sv-SE-win64-nightly/opt: aON70cR-QaSDFr8NZbo2LQ + repackage-signing-l10n-ta-linux-nightly/opt: VwwL-qsQTHWaNNxQoM5tGw + repackage-signing-l10n-ta-linux64-nightly/opt: OohKPshiT4WalOOF5HmNoQ + repackage-signing-l10n-ta-macosx64-nightly/opt: e18y95xwRNmG7m3O69I1OA + repackage-signing-l10n-ta-win32-nightly/opt: fCbrPmsKQ-25D4xgWyxgAw + repackage-signing-l10n-ta-win64-nightly/opt: QbNe3s1DR9aGOK8yc8WSCw + repackage-signing-l10n-te-linux-nightly/opt: ONIGk6PsRfKA2VA3pXBwZg + repackage-signing-l10n-te-linux64-nightly/opt: EpI_Vuz_Rcyyq0Rb6kFF5w + repackage-signing-l10n-te-macosx64-nightly/opt: IaTXFijUQNiZkCVHc3f_Tw + repackage-signing-l10n-te-win32-nightly/opt: a2fPHiHzTwCEU4wSRYclVQ + repackage-signing-l10n-te-win64-nightly/opt: MF5AajKMSRylw6phV7WE1g + repackage-signing-l10n-th-linux-nightly/opt: P3X9HvNmRja_ZYc8gtqg1Q + repackage-signing-l10n-th-linux64-nightly/opt: ffihSgezS9-ISkssvI2iew + repackage-signing-l10n-th-macosx64-nightly/opt: MPsEEWgKTo-zS-o4sxpG4Q + repackage-signing-l10n-th-win32-nightly/opt: K2qf3zKPQ1mdapLK5_DAbw + repackage-signing-l10n-th-win64-nightly/opt: CyC0JD95TXm26806U27b1A + repackage-signing-l10n-tr-linux-nightly/opt: HR9Fl2LGRa-0W_P24T6fRw + repackage-signing-l10n-tr-linux64-nightly/opt: SD13YpX3TUG3Lw1gsjb8zQ + repackage-signing-l10n-tr-macosx64-nightly/opt: QUb0MdbkTpyahsH1slF-DQ + repackage-signing-l10n-tr-win32-nightly/opt: VpUaHXCETO-DOW3Y-vkNyg + repackage-signing-l10n-tr-win64-nightly/opt: dLHPdVp7QmCU-jKlqZd3Hg + repackage-signing-l10n-uk-linux-nightly/opt: V2vDmIK-S8GgjSXMR6YbzQ + repackage-signing-l10n-uk-linux64-nightly/opt: Dav8-GQHTqiFV3aSZ9sMCg + repackage-signing-l10n-uk-macosx64-nightly/opt: Lnvq6TVoQA63u_aLCQ93zw + repackage-signing-l10n-uk-win32-nightly/opt: TEqTzmZUQbi1W6tVkloVsA + repackage-signing-l10n-uk-win64-nightly/opt: Ash05TvXQCqBgdx19un9gw + repackage-signing-l10n-ur-linux-nightly/opt: OvpD5KfFSF-qpk4m4aLmoA + repackage-signing-l10n-ur-linux64-nightly/opt: DUgCh61WSvy0DGFfHSkhLw + repackage-signing-l10n-ur-macosx64-nightly/opt: SlvzjZlsQgm_LvXCVVnUxw + repackage-signing-l10n-ur-win32-nightly/opt: VirVsGi2RKq128rWrvqqcA + repackage-signing-l10n-ur-win64-nightly/opt: KZE9oP_ARECt_pU9Q2pSyQ + repackage-signing-l10n-uz-linux-nightly/opt: NHaDTIGWQZqeUE1LrRaQDg + repackage-signing-l10n-uz-linux64-nightly/opt: Kq9XVvc_RwW0NetwehWDBg + repackage-signing-l10n-uz-macosx64-nightly/opt: ZfTiJQksTmyoXl0vDB8blg + repackage-signing-l10n-uz-win32-nightly/opt: SsNjefr8RJqViE_dbyFYdA + repackage-signing-l10n-uz-win64-nightly/opt: HCOlO3s-QOGysmnC48Q9UQ + repackage-signing-l10n-vi-linux-nightly/opt: N4-T5TruSzG5q3EcRglUCg + repackage-signing-l10n-vi-linux64-nightly/opt: fhUonR6GRkCwQgbCcbDH3w + repackage-signing-l10n-vi-macosx64-nightly/opt: Q3SD4lTZTzami965wJCO5Q + repackage-signing-l10n-vi-win32-nightly/opt: NRX5qZWrR_2KxjGXD0VGEQ + repackage-signing-l10n-vi-win64-nightly/opt: OpcvBdhZSoGBemViPKcJ1A + repackage-signing-l10n-xh-linux-nightly/opt: UN4MADOSTMqaox1_H0_a8A + repackage-signing-l10n-xh-linux64-nightly/opt: JtzE-iVGRJSwGhPNad3odg + repackage-signing-l10n-xh-macosx64-nightly/opt: AmKafOKCQOaw9PqKVXohKg + repackage-signing-l10n-xh-win32-nightly/opt: CXwPEeK3TUqt0fd3cd409g + repackage-signing-l10n-xh-win64-nightly/opt: dEVC2BDgTAy8-fYNk6yM9w + repackage-signing-l10n-zh-CN-linux-nightly/opt: WKcWbFPQQIy3twadRiIqdQ + repackage-signing-l10n-zh-CN-linux64-nightly/opt: SP56bmc3TuCvKDj7h4DMmA + repackage-signing-l10n-zh-CN-macosx64-nightly/opt: OjpGG6IlR7mU12jE_gVg7A + repackage-signing-l10n-zh-CN-win32-nightly/opt: b8ZMM5XfQkqusBjZTdjLCg + repackage-signing-l10n-zh-CN-win64-nightly/opt: G8tCfMYORW2qfTQ06aDt0Q + repackage-signing-l10n-zh-TW-linux-nightly/opt: LXr2D7loStyP0BYA3tdw4w + repackage-signing-l10n-zh-TW-linux64-nightly/opt: eI9lnZGWRGekEfmfOACYaQ + repackage-signing-l10n-zh-TW-macosx64-nightly/opt: E012hTBQSeOGE0eLxkGXXA + repackage-signing-l10n-zh-TW-win32-nightly/opt: SOqmmY0RSKm4_siOzGkfiQ + repackage-signing-l10n-zh-TW-win64-nightly/opt: Kg9aPh0-SbGebCvimwkobA + repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA + repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w + repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g + repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg + repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA + repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg + repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ + repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ + repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg + repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw + repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng + repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ + repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ + repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew + repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA + repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA + repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg + repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g + sign-and-push-langpacks-build-linux64-nightly/opt: eaD9V5rGTPWzcuSEZ3bLPA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-1/opt: a24KhywDQ6mh9QU4UDk4Rg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-10/opt: fFqVBOrCTkipeq5M8TtSAw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-11/opt: cKQHrbwFSqqpkz416tWVaw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-12/opt: Gn_npyL0Qf2QU4Xhg839qQ + sign-and-push-langpacks-nightly-l10n-linux64-nightly-13/opt: cimO5c1EQeu4KwyYCZqJwA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-14/opt: Khtkrd61SUSkPgRk4ZQ4yA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-15/opt: CJtVogO-Qfq8ChnctKfn9Q + sign-and-push-langpacks-nightly-l10n-linux64-nightly-16/opt: R2BR6es_SxKvWYPccHiv6Q + sign-and-push-langpacks-nightly-l10n-linux64-nightly-17/opt: F4N2Sp4QT4y5fqMlYOCxOw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-18/opt: AZNVXcQIRMy4FlhnjzV2wg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-19/opt: J_VsRHwTQ5qynYWQSFIYKA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-2/opt: eTj_XfimQGKOz5fmoRSGPA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-20/opt: HdsfXxN4Rg2-tQnQaJDJKQ + sign-and-push-langpacks-nightly-l10n-linux64-nightly-3/opt: Uk8sjpwhStq4lN9ggzH2ug + sign-and-push-langpacks-nightly-l10n-linux64-nightly-4/opt: HI35ki7VRzelLpUkeGU_Ww + sign-and-push-langpacks-nightly-l10n-linux64-nightly-5/opt: NCk4vTypQ6SKbfCdZckSAg + sign-and-push-langpacks-nightly-l10n-linux64-nightly-6/opt: Wktbx4SfQOeokiqZ9vr7LA + sign-and-push-langpacks-nightly-l10n-linux64-nightly-7/opt: PUC6Jc87QXGdbLJ9TlUpiw + sign-and-push-langpacks-nightly-l10n-linux64-nightly-8/opt: Nw7kDGAfTd6fFSELoqE91w + sign-and-push-langpacks-nightly-l10n-linux64-nightly-9/opt: C8P_CfWoSVGZe22KodyEYw + sign-and-push-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: BM2fI2BeTFehU3TZVqbM8g + source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA + source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA + source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A + static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ + static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ + static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ + static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg + static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g + static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A + test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A + test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ + test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A + test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA + test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA + test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA + test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog + test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A + test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg + test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w + test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ + test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA + test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ + test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw + test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ + test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w + test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A + test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg + test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA + test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA + test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g + test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow + test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg + test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ + test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q + test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ + test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w + test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ + test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w + test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA + test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA + test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q + test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA + test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw + test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA + test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA + test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA + test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig + test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw + test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw + test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA + test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ + test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g + test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw + test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA + test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA + test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ + test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw + test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw + test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow + test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA + test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw + test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w + test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg + test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig + test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw + test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA + test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg + test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA + test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg + test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA + test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q + test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA + test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg + test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw + test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA + test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ + test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw + test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg + test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg + test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ + test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g + test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g + test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg + test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A + test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew + test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw + test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ + test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg + test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg + test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw + test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg + test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A + test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg + test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA + test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ + test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw + test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg + test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw + test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg + test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg + test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA + test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg + test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg + test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA + test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ + test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA + test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag + test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg + test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg + test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg + test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q + test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg + test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw + test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw + test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q + test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA + test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q + test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg + test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ + test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A + test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw + test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg + test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g + test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA + test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg + test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA + test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw + test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg + test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w + test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q + test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA + test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw + test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA + test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA + test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A + test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw + test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA + test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g + test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ + test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ + test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg + test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw + test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw + test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA + test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg + test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg + test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg + test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ + test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw + test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw + test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg + test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw + test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw + test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw + test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w + test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA + test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA + test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA + test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ + test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg + test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA + test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ + test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA + test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ + test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A + test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A + test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g + test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog + test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg + test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg + test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ + test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ + test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw + test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg + test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew + test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg + test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA + test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw + test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg + test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg + test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug + test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q + test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ + test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ + test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q + test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q + test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw + test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA + test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA + test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw + test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg + test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA + test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w + test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw + test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw + test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA + test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ + test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg + test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA + test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g + test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA + test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ + test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw + test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw + test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w + test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA + test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g + test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA + test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg + test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg + test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA + test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg + test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig + test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ + test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A + test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ + test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA + test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA + test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg + test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow + test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww + test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA + test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ + test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug + test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ + test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw + test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw + test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg + test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg + test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A + test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw + test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA + test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ + test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA + test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g + test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw + test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ + test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg + test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg + test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g + test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw + test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q + test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A + test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A + test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A + test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ + test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ + test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ + test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ + test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg + test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA + test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ + test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw + test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w + test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ + test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ + test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg + test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw + test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ + test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA + test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q + test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw + test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww + test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA + test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw + test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw + test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ + test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q + test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg + test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ + test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q + test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA + test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ + test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA + test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw + test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ + test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A + test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw + test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA + test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ + test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg + test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA + test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g + test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg + test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig + test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA + test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg + test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ + test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw + test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w + test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q + test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ + test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg + test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ + test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ + test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w + test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg + test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ + test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA + test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg + test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw + test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w + test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg + test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg + test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg + test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ + test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q + test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow + test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A + test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw + test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw + test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw + test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw + test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg + test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ + test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ + test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ + test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g + test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA + test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ + test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw + test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA + test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg + test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw + test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw + test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA + test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ + test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ + test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q + test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g + test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ + test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw + test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw + test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A + test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ + test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA + test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA + test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w + test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw + test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg + test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw + test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw + test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w + test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q + test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A + test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ + test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA + test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A + test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg + test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q + test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ + test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw + test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA + test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ + test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg + test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw + test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA + test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ + test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA + test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg + test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ + test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw + test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw + test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA + test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ + test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg + test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw + test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig + test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA + test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A + test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q + test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ + test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q + test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ + test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg + test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg + test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g + test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw + test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ + test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A + test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g + test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg + test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA + test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ + test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ + test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A + test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug + test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw + test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw + test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A + test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA + test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ + test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw + test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw + test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw + test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ + test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w + test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg + test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g + test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg + test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA + test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A + test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w + test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA + test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg + test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg + test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ + test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA + test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA + test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g + test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg + test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw + test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg + test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw + test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw + test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA + test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A + test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ + test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g + test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A + test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q + test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg + test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA + test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg + test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g + test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw + test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg + test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g + test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg + test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA + test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg + test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ + test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA + test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg + test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ + test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ + test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA + test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A + test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w + test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg + test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ + test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA + test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag + test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ + test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA + test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ + test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ + test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q + test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg + test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA + test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw + test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA + test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw + test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g + test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg + test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w + test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA + test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w + test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw + test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ + test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw + test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw + test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q + test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg + test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A + test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ + test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag + test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg + test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg + test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ + test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q + test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g + test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA + test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ + test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg + test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw + test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q + test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA + test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg + test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw + test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A + test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg + test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog + test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw + test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ + test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA + test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw + test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA + test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ + test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw + test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw + test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw + test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA + test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog + test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA + test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA + test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw + test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w + test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w + test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ + test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw + test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ + test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ + test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA + test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A + test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw + test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw + test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw + test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A + test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w + test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g + test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q + test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg + test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg + test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA + test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag + test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA + test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA + test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q + test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w + test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ + test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg + test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q + test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA + test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg + test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw + test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg + test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA + test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A + test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ + test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q + test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw + test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ + test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA + test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw + test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw + test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw + test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw + test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ + test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ + test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA + test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ + test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA + test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g + test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g + test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw + test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw + test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw + test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w + test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA + test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg + test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ + test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ + test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ + test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw + test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA + test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg + test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w + test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg + test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ + test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw + test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ + test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg + test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA + test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ + test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg + test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA + test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g + test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw + test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ + test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw + test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw + test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg + test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw + test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw + test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A + test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A + test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ + test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg + test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg + test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw + test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg + test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA + test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw + test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow + test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ + test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g + test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA + test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA + test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw + test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg + test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg + test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ + test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw + test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A + test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ + test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg + test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw + test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw + test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ + test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ + test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA + test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA + test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg + test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g + test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA + test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg + test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA + test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA + test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ + test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw + test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A + test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg + test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag + test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw + test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw + test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ + test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q + test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg + test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA + test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g + test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw + test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA + test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g + test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg + test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw + test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA + test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w + test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw + test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA + test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw + test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ + test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ + test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ + test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA + test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg + test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg + test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A + test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A + test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg + test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw + test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w + test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g + test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ + test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA + test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A + test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA + test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw + test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA + test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA + test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA + test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A + test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w + test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw + test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA + test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg + test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA + test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q + test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w + test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q + test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA + test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw + test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg + test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug + test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g + test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw + test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg + test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w + test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw + test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ + test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg + test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg + test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA + test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ + test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q + test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg + test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA + test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ + test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw + test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg + test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w + test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw + test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w + test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg + test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q + test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA + test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw + test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ + test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q + test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg + test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ + test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA + test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw + test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA + test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ + test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw + test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ + test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q + test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA + test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ + test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ + test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw + test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA + test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ + test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A + test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw + test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ + test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg + test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw + test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg + test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg + test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ + test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ + test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ + test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg + test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw + test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA + test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A + test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ + test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w + test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw + test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg + test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg + test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ + test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw + test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA + test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A + test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg + test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w + test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw + test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw + test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw + test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ + test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q + test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w + test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg + test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA + test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ + test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg + test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ + test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ + test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA + test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ + test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw + test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w + test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA + test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg + test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw + test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw + test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ + test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw + test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w + test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g + test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg + test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA + test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA + test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA + test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA + test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng + test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw + test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg + test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw + test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow + test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ + test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A + test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg + test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw + test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q + test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw + test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA + test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw + test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ + test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw + test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw + test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q + test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ + test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw + test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA + test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ + test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w + test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g + test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw + test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg + test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA + test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A + test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ + test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA + test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA + test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w + test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA + test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA + test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg + test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g + test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog + test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew + test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg + test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw + test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w + test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g + test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug + test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw + test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w + test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ + test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w + test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA + test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ + test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ + test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q + test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q + test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA + test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ + test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw + test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg + test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w + test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ + test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg + test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw + test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ + test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw + test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA + test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw + test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q + test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA + test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw + test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA + test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g + test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q + test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA + test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng + test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA + test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ + test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg + test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ + test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg + test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ + test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw + test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ + test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ + test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ + test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg + test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw + test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg + test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw + test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g + test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg + test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g + test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ + test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA + test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg + test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg + test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg + test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ + test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg + test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ + test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw + test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw + test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g + test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA + test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg + test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA + test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg + test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA + test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q + test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ + test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw + test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA + test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA + test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ + test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q + test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w + test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug + test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw + test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ + test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ + test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg + test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw + test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg + test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ + test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w + test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g + test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg + test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ + test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA + test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig + test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ + test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg + test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw + test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg + test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A + test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ + test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A + test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg + test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg + test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA + test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw + test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g + test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q + test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A + test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg + test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ + test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og + test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg + test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA + test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA + test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w + test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA + test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw + test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w + test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ + test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw + test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow + test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ + test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA + test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw + test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ + test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ + test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw + test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g + test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg + test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw + test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A + test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw + test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA + test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ + test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ + test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ + test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A + test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ + test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g + test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA + test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ + test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog + test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q + test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ + test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg + test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q + test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw + test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA + test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ + test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw + test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg + test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA + test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw + test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ + test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ + test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q + test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw + test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ + test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w + test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg + test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg + test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw + test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA + test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw + test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ + test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw + test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w + test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g + test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew + test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA + test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q + test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ + test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA + test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg + test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug + test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA + test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg + test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ + test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA + test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ + test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg + test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg + test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w + test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA + test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA + test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA + test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q + test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ + test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ + test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA + test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ + test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g + test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA + test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ + test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw + test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw + test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A + test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ + test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA + test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw + test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw + test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ + test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw + test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w + test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA + test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ + test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw + test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ + test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg + test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw + test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA + test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA + test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q + test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q + test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg + test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA + test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A + test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg + test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A + test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ + test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q + test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w + test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw + test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA + test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw + test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ + test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ + test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ + test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w + test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w + test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ + test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ + test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg + test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw + test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ + test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ + test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w + test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg + test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA + test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA + test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ + test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg + test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA + test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA + test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA + test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ + test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ + test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA + test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ + test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA + test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw + test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg + test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw + test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA + test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw + test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA + test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A + test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg + test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA + test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg + test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA + test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w + test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw + test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA + test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA + test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA + test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA + test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ + test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA + test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw + test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw + test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg + test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ + test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ + test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA + test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA + test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ + test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA + test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg + test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg + test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w + test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA + test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg + test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw + test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw + test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ + test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g + test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw + test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA + test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA + test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw + test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg + test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg + test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q + test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg + test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q + test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A + test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw + test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q + test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw + test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg + test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A + test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA + test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q + test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg + test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA + test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og + test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg + test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ + test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw + test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ + test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg + test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg + test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA + test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q + test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g + test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA + test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg + test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ + test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw + test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA + test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q + test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg + test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w + test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA + test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ + test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g + test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w + test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A + test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg + test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg + test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg + test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA + test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ + test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q + test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw + test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg + test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw + test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA + test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg + test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg + test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ + test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg + test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg + test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w + test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw + test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA + test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w + test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw + test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q + test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA + test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ + test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg + test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ + test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg + test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g + test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g + test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w + test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw + test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw + test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g + test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw + test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw + test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA + test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg + test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ + test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A + test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg + test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA + test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ + test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw + test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw + test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw + test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g + test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ + test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA + test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw + test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw + test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww + test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA + test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w + test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A + test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA + test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg + test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg + test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg + test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA + test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg + test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ + test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw + test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw + test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ + test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA + test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA + test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA + test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A + test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w + test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA + test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA + test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA + test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ + test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw + test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ + test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ + test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q + test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA + test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw + test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA + test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw + test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg + test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg + test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg + test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog + test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ + test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A + test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg + test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng + test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA + test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA + test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw + test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw + test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg + test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw + test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg + test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw + test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ + test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw + test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw + test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA + test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA + test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw + test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg + test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ + test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw + test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg + test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w + test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA + test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ + test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA + test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ + test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA + test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q + test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q + test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw + test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ + test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg + test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ + test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ + test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA + test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA + test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg + test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ + test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw + test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA + test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w + test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA + test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA + test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw + test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ + test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA + test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ + test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A + test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw + test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ + test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ + test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA + test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw + test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ + test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA + test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng + test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg + test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg + test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw + test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw + test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g + test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA + test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg + test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA + test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew + test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q + test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA + test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ + test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ + test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ + test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw + test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng + test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q + test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA + test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw + test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ + test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g + test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw + test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag + test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw + test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ + test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w + test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ + test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng + test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w + test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ + test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg + test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ + test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ + test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg + test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA + test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w + test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw + test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA + test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA + test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA + test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw + test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA + test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A + test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ + test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA + test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q + test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g + test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA + test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ + test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A + test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA + test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ + test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw + test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w + test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw + test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg + test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A + test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA + test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw + test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A + test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ + test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q + test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg + test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q + test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA + test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw + test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg + test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA + test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg + test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA + test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw + test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ + test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw + test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q + test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA + test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g + test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ + test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA + test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw + test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew + test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ + test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w + test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw + test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q + test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA + test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g + test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg + test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ + test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg + test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ + test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg + test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg + test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg + test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg + test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ + test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA + test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg + test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA + test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g + test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg + test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g + test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ + test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg + test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg + test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw + test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw + test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA + test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ + test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA + test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ + test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA + test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA + test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA + test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q + test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ + test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA + test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q + test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw + test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw + test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg + test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ + test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA + test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q + test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw + test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg + test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ + test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg + test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ + test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA + test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg + test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w + test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ + test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g + test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg + test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA + test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w + test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw + test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w + test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg + test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw + test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g + test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w + test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw + test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ + test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q + test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w + test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ + test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A + test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w + test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg + test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ + test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q + test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg + test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g + test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ + test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg + test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ + test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg + test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg + test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw + test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig + test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ + test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q + test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg + test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg + test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w + test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg + test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og + toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w + toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw + toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA + toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ + toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA + toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw + toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA + toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA + toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q + toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w + toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw + toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw + toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA + toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ + toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w + toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg + toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ + toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w + toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw + toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ + toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw + toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ + toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w + toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA + toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ + toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA + toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw + toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA + toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA + toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg + toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg + toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ + toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A + toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA + toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg + upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg + upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg + upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA + upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA + upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA + upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg + upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ + upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA + upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA + upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w + valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg +filters: + - target_tasks_method +head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91 +hg_branch: default +level: "3" +message: " " +moz_build_date: "20181011200118" +next_version: 63.0b15 +optimize_target_tasks: true +owner: ryanvm@gmail.com +project: mozilla-beta +pushdate: 1539288078 +pushlog_id: "9972" +release_enable_emefree: true +release_enable_partners: true +release_eta: null +release_history: + Darwin_x86_64-gcc3-u-i386-x86_64: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja-JP-mac: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + Linux_x86_64-gcc3: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + WINNT_x86_64-msvc: + ach: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + af: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + an: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ar: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + as: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ast: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + az: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + be: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bg: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-BD: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bn-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + br: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + bs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ca: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cak: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cs: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + cy: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + da: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + de: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + dsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + el: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-CA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-GB: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-US: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + en-ZA: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eo: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-AR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-CL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-ES: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + es-MX: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + et: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + eu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fa: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ff: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + fy-NL: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ga-IE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gd: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + gu-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + he: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hi-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hsb: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hu: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + hy-AM: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ia: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + id: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + is: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + it: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ja: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ka: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kab: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + km: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + kn: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ko: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lij: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lt: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + lv: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mai: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ml: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + mr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ms: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + my: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nb-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ne-NP: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + nn-NO: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + oc: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + or: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pa-IN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-BR: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + pt-PT: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + rm: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ro: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ru: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + si: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sl: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + son: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sq: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + sv-SE: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ta: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + te: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + th: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + tr: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uk: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + ur: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + uz: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + vi: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + xh: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-CN: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox + zh-TW: + target-63.0b11.partial.mar: + buildid: "20181001131022" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b11 + product: Firefox + target-63.0b12.partial.mar: + buildid: "20181004174654" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar + previousBuildNumber: "2" + previousVersion: 63.0b12 + product: Firefox + target-63.0b13.partial.mar: + buildid: "20181008155858" + mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar + previousBuildNumber: "1" + previousVersion: 63.0b13 + product: Firefox +release_partner_build_number: 1 +release_partner_config: + release-eme-free-repack: + mozilla-EME-free: + mozilla-EME-free: + locales: + - ach + - af + - an + - ar + - as + - ast + - az + - be + - bg + - bn-BD + - bn-IN + - br + - bs + - ca + - cak + - cs + - cy + - da + - de + - dsb + - el + - en-GB + - en-US + - en-ZA + - eo + - es-AR + - es-CL + - es-ES + - es-MX + - et + - eu + - fa + - ff + - fi + - fr + - fy-NL + - ga-IE + - gd + - gl + - gn + - gu-IN + - he + - hi-IN + - hr + - hsb + - hu + - hy-AM + - id + - is + - it + - ja + - ja-JP-mac + - ka + - kab + - kk + - km + - kn + - ko + - lij + - lt + - lv + - mai + - mk + - ml + - mr + - ms + - my + - nb-NO + - nl + - nn-NO + - or + - pa-IN + - pl + - pt-BR + - pt-PT + - rm + - ro + - ru + - si + - sk + - sl + - son + - sq + - sr + - sv-SE + - ta + - te + - th + - tr + - uk + - ur + - uz + - vi + - xh + - zh-CN + - zh-TW + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + release-partner-repack: + acer: + acer-002: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + aol: + aol: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_de: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_desktop: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_huffington: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + aol_uk: + locales: + - en-GB + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + chipde: + chipde: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-003: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-004: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-005: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-006: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-007: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-008: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + cliqz-control: + locales: + - de + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + firefox: + firefox-election-edition: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake: + funnelcake134: + locales: + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + funnelcake137: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource: + ironsource-google: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-google-aura: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - id + - it + - ja + - ko + - pa-IN + - pl + - pt-BR + - ru + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yahoo-aura: + locales: + - en-US + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + ironsource-yandex: + locales: + - en-US + - tr + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mailru: + mailru: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + okru: + locales: + - az + - en-US + - hy-AM + - kk + - ro + - ru + - tr + - uk + - uz + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mozillaonline: + baidu: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + kingsoft: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + mainOther: + locales: + - en-US + - zh-CN + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + upload_to_candidates: "true" + mainWinFull: + locales: + - en-US + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + mainWinStubFallback: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + others: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qihoo: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + tencent: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + xbsafe: + locales: + - zh-CN + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + zol: + locales: + - zh-CN + platforms: + - win32-shippable + upload_to_candidates: "true" + ntt: + ntt: + locales: + - en-US + - ja + - ja-JP-mac + platforms: + - macosx64-shippable + - win32-shippable + - win64-shippable + playanext: + playanext-wt: + locales: + - de + - en-GB + - en-US + - es-ES + - fr + - it + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + playanext-wt-us: + locales: + - en-US + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + qwant: + qwant-001: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + qwant-002: + locales: + - ca + - cy + - de + - en-GB + - en-US + - es-ES + - fr + - gd + - it + platforms: + - linux-shippable + - linux64-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + seznam: + seznam: + locales: + - cs + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + softonic: + softonic: + locales: + - de + - en-US + - es-ES + - fr + - it + - pl + - pt-BR + - ru + platforms: + - win32-shippable + - win64-shippable + sweetlabs: + sweetlabs-b-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-b-r-oem3: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem1: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + sweetlabs-r-oem2: + locales: + - de + - en-GB + - en-US + - fr + platforms: + - win32-shippable + - win64-shippable + upload_to_candidates: "true" + toshiba: + toshiba-001-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-001-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-b2b-JP: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-B-US: + locales: + - en-US + platforms: + - win32-shippable + toshiba-download-MX: + locales: + - es-MX + platforms: + - win32-shippable + toshiba-download-US: + locales: + - en-US + platforms: + - win32-shippable + unitedinternet: + 1und1: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + 1und1_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + gmx_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + mail.com_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + web.de_notb: + locales: + - de + - en-US + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + wildtangent: + wildtangent: + locales: + - en-US + platforms: + - win32-shippable + upload_to_candidates: "true" + yandex: + yandex-drp: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-planB: + locales: + - ru + platforms: + - win32-shippable + - win64-shippable + yandex-portals: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ru-mz: + locales: + - ru + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-gezginler: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-tr-tamindir: + locales: + - tr + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable + yandex-ua: + locales: + - ru + - uk + platforms: + - linux-shippable + - macosx64-shippable + - win32-shippable + - win64-shippable +release_partners: null +release_product: firefox +release_type: "beta" +target_tasks_method: ship_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 63.0b14 +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-ship-firefox.yml b/taskcluster/test/params/mb-ship-firefox.yml new file mode 100644 index 0000000000..f2b47bf8fd --- /dev/null +++ b/taskcluster/test/params/mb-ship-firefox.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: 60.0b1 +version: 60.0b1 +next_version: 60.0b2 +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-beta +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: ship_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "beta" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mb-ship-geckoview.yml b/taskcluster/test/params/mb-ship-geckoview.yml new file mode 100644 index 0000000000..4640bf611e --- /dev/null +++ b/taskcluster/test/params/mb-ship-geckoview.yml @@ -0,0 +1,3822 @@ +--- +app_version: 75.0b1 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1582796996 +build_number: 1 +do_not_optimize: [] +existing_tasks: + artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA + build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA + build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q + build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw + build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA + build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw + build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA + build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg + build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg + build-android-api-16/opt: M5qSN82KTm--V3TrDJponw + build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg + build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA + build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww + build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ + build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA + build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q + build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ + build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A + build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ + build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA + build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A + build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA + build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA + build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA + build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ + build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ + build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg + build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A + build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg + build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ + build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ + build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g + build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg + build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A + build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ + build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ + build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ + build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg + build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ + build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg + build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA + build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw + build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ + build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw + build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ + build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw + build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ + build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw + build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew + build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg + build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g + build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA + build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g + build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A + build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg + build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg + build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ + build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g + build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw + build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ + build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA + build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA + build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw + build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g + build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA + build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA + build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA + build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg + build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw + build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA + build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ + build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w + build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ + build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg + build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A + build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw + build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA + build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA + build-linux/opt: BdawADUPSemriSIoDXxsog + build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q + build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg + build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg + build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw + build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ + build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg + build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ + build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA + build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA + build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg + build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A + build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw + build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ + build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q + build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g + build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ + build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg + build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw + build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA + build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg + build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag + build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA + build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ + build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ + build-linux64/opt: CnU_i566R5K7uv3abLX7Lg + build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w + build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg + build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw + build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A + build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA + build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw + build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ + build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg + build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ + build-macosx64/opt: cvDxNoAQSomchCCS8gkORA + build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ + build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw + build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ + build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw + build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg + build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg + build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w + build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA + build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg + build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ + build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ + build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw + build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA + build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q + build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw + build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w + build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw + build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg + build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ + build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A + build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w + build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A + build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w + build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ + build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ + build-win32/opt: bH1IItXnRei0TXIIwdSdYA + build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw + build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw + build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ + build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w + build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg + build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ + build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew + build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q + build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw + build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q + build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw + build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA + build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg + build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw + build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg + build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w + build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ + build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg + build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA + build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag + build-win64/debug: M6NAJyEbTdWnWikR0Bok8w + build-win64/opt: O1vuo0zzRRmEs6qAB8VluA + condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ + condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg + condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA + condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw + condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g + condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q + condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A + condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw + diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg + diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ + fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg + fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ + fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA + fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A + fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ + fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew + fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q + fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ + fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw + fetch-cmake: F5kmkERhSiCqvcUDtQCb6A + fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg + fetch-fix-stacks: G606hoRUSxqohchf64oJBw + fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg + fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w + fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg + fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A + fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw + fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ + fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw + fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg + fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q + fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww + fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA + fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg + fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA + fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ + fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA + fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA + fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA + fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ + fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw + fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA + fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA + fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw + fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww + fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA + fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w + fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew + fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog + fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA + fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A + fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA + fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA + fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g + fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ + fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA + fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A + fetch-ninja: cuJolDCYQ3uinL2CwlQviQ + fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA + fetch-octane: dLW609SGSAaOz15ShsFIpw + fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw + fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA + fetch-tup: dMdjMYuLQ5e-2r0piAVT9A + fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg + fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg + fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w + fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q + fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw + fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A + fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA + fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg + fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q + fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q + fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw + fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ + generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A + generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA + generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ + generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g + generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA + generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg + github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ + hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg + hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA + instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ + instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg + instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw + instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ + instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw + instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g + l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ + l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw + l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q + l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w + l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ + packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg + packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ + packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA + packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw + packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A + packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w + packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA + packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg + packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg + packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ + packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q + packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg + packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw + packages-deb7-atk: SHQacTunSMePv5M0Hbho9g + packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ + packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA + packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ + packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg + packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA + packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw + packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw + packages-deb7-git: EE2WtGanS-Oiqiuln372lA + packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg + packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA + packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ + packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ + packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A + packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg + packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA + packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw + packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ + packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A + packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw + packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A + packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA + packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg + packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA + packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A + packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ + packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ + packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ + packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg + repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw + repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg + repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA + repackage-linux64/opt: JBjHCaL6TNWej-riozHffg + repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA + repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw + repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg + repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig + repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg + repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg + repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg + repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw + repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w + repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw + repackage-win32/opt: cGFA0orpTCibP6cwsr06lA + repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg + repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg + repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w + source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA + source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g + source-test-doc-generate: atnQNEOCRrW9diFfjykfmw + source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ + source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ + source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg + source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g + source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow + source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA + source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g + source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ + source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q + source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A + source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA + source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A + source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ + source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ + source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA + source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g + source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ + source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A + source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ + source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg + source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g + source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A + source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g + source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg + source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g + source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw + source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw + source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow + source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw + source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA + source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ + source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA + source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ + source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ + source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q + source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw + source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw + source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA + source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw + source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw + source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw + source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g + source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw + source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ + source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg + source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA + spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw + spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw + spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ + spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA + spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w + spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg + spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg + spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ + spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ + spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw + spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA + spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw + spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA + spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ + spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA + spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw + spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg + spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA + spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ + spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw + spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw + static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA + static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ + test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg + test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw + test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw + test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ + test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w + test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ + test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w + test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw + test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ + test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ + test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g + test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q + test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg + test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g + test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg + test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg + test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A + test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw + test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg + test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA + test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A + test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw + test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w + test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw + test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g + test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw + test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ + test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q + test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw + test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g + test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ + test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg + test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg + test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA + test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w + test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g + test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g + test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ + test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ + test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw + test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g + test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg + test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw + test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w + test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg + test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q + test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA + test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A + test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw + test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw + test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg + test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw + test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw + test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q + test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg + test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ + test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw + test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg + test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg + test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw + test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg + test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw + test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow + test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA + test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA + test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A + test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw + test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg + test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg + test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA + test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A + test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA + test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w + test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw + test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA + test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg + test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw + test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w + test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA + test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g + test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw + test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg + test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw + test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA + test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w + test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow + test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w + test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA + test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA + test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg + test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A + test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw + test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg + test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg + test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ + test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw + test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw + test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng + test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA + test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA + test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw + test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA + test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog + test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg + test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw + test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg + test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew + test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw + test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q + test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg + test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ + test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g + test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA + test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ + test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg + test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg + test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ + test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw + test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q + test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg + test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA + test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw + test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA + test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog + test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A + test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA + test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww + test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA + test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w + test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw + test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg + test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw + test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg + test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g + test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ + test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ + test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ + test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA + test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw + test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ + test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ + test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w + test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA + test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg + test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA + test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q + test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng + test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g + test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ + test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg + test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g + test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA + test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A + test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ + test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg + test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ + test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ + test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw + test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg + test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA + test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg + test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA + test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA + test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg + test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA + test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA + test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ + test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg + test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA + test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw + test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw + test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ + test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg + test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA + test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ + test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ + test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg + test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg + test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA + test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw + test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg + test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA + test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw + test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA + test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A + test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw + test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg + test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g + test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g + test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A + test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA + test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw + test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg + test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg + test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg + test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg + test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg + test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q + test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A + test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q + test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA + test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ + test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ + test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA + test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew + test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA + test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA + test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA + test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ + test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg + test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg + test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA + test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ + test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw + test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA + test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ + test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ + test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA + test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg + test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg + test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw + test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg + test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg + test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw + test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg + test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw + test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA + test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA + test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w + test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA + test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg + test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA + test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ + test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA + test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw + test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw + test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA + test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA + test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw + test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w + test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw + test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w + test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg + test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ + test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw + test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA + test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw + test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA + test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg + test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A + test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ + test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg + test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA + test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ + test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ + test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w + test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw + test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A + test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA + test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q + test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA + test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA + test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow + test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg + test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA + test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g + test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q + test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw + test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ + test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ + test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow + test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw + test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg + test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg + test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA + test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg + test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng + test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg + test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw + test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA + test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig + test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw + test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A + test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw + test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw + test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg + test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg + test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g + test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA + test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA + test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g + test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg + test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ + test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw + test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA + test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q + test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ + test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg + test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA + test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA + test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ + test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q + test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA + test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg + test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA + test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g + test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ + test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg + test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw + test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg + test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q + test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA + test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA + test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA + test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg + test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A + test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA + test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw + test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA + test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw + test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg + test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w + test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA + test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A + test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA + test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA + test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA + test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA + test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg + test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w + test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ + test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA + test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA + test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg + test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ + test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg + test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ + test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg + test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA + test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w + test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA + test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA + test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg + test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ + test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw + test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ + test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA + test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w + test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg + test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ + test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw + test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ + test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg + test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw + test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A + test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA + test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg + test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA + test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw + test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww + test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA + test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ + test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ + test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg + test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA + test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A + test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw + test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg + test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A + test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA + test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ + test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A + test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA + test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg + test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ + test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ + test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g + test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA + test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA + test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g + test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA + test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA + test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw + test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA + test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA + test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA + test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg + test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA + test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg + test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw + test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA + test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ + test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw + test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ + test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q + test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA + test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw + test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw + test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ + test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA + test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g + test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg + test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg + test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg + test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA + test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og + test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ + test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg + test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA + test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA + test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw + test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ + test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ + test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw + test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA + test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw + test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA + test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg + test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ + test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA + test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw + test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ + test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA + test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA + test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA + test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q + test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg + test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw + test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q + test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA + test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA + test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ + test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA + test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g + test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA + test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg + test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg + test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ + test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg + test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q + test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA + test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ + test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA + test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ + test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ + test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg + test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA + test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g + test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg + test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA + test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw + test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw + test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g + test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA + test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q + test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw + test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA + test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA + test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg + test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw + test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw + test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w + test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g + test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ + test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw + test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ + test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw + test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw + test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ + test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA + test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg + test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw + test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA + test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w + test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg + test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw + test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg + test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w + test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A + test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw + test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg + test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw + test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA + test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg + test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A + test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA + test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ + test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg + test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ + test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg + test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA + test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ + test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q + test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g + test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA + test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg + test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA + test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg + test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA + test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA + test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A + test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg + test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg + test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw + test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg + test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ + test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA + test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A + test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ + test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA + test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw + test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ + test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg + test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ + test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw + test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw + test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg + test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA + test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg + test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ + test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g + test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg + test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g + test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w + test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w + test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw + test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA + test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg + test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ + test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w + test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg + test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA + test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A + test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q + test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA + test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg + test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q + test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ + test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ + test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww + test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ + test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg + test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw + test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA + test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ + test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ + test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA + test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA + test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA + test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw + test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA + test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew + test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog + test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw + test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q + test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg + test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w + test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg + test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q + test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw + test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ + test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow + test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w + test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg + test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w + test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ + test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA + test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw + test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw + test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ + test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw + test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA + test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ + test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg + test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw + test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg + test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw + test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw + test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg + test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w + test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ + test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw + test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg + test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg + test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw + test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w + test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA + test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A + test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg + test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA + test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog + test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg + test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw + test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA + test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ + test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA + test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA + test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw + test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA + test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q + test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw + test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q + test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw + test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ + test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g + test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw + test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg + test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw + test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw + test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A + test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA + test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg + test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ + test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg + test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg + test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng + test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg + test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA + test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg + test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ + test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug + test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg + test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA + test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg + test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g + test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA + test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w + test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg + test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA + test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A + test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ + test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg + test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg + test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ + test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA + test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ + test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA + test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew + test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA + test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA + test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q + test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ + test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw + test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ + test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA + test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA + test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ + test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A + test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw + test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w + test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg + test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA + test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ + test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig + test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg + test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA + test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g + test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ + test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ + test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag + test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA + test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w + test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA + test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg + test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ + test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA + test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA + test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw + test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw + test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw + test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw + test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg + test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ + test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg + test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w + test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ + test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg + test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA + test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg + test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw + test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw + test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg + test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg + test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw + test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w + test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug + test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ + test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ + test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw + test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A + test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g + test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg + test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw + test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ + test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A + test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A + test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw + test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA + test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ + test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A + test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw + test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q + test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg + test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A + test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g + test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA + test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w + test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA + test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g + test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ + test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA + test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA + test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w + test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w + test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg + test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg + test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg + test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw + test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA + test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA + test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g + test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q + test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw + test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og + test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg + test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw + test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA + test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog + test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw + test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA + test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag + test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg + test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog + test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA + test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g + test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g + test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ + test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw + test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw + test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg + test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA + test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg + test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ + test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ + test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw + test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA + test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA + test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ + test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw + test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA + test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ + test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw + test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg + test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw + test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g + test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ + test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A + test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg + test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q + test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g + test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw + test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw + test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ + test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw + test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw + test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw + test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA + test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag + test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg + test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg + test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q + test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg + test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw + test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw + test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA + test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw + test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A + test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw + test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA + test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w + test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ + test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw + test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w + test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw + test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A + test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw + test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew + test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg + test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw + test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw + test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q + test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg + test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA + test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA + test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ + test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw + test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA + test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ + test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ + test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw + test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g + test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA + test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A + test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A + test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA + test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA + test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q + test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw + test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw + test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA + test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw + test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ + test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w + test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ + test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg + test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ + test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w + test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg + test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw + test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g + test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg + test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw + test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w + test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA + test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ + test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA + test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw + test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ + test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA + test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw + test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA + test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg + test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ + test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q + test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA + test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw + test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA + test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw + test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA + test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ + test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg + test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg + test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A + test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg + test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw + test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA + test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ + test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg + test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw + test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg + test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg + test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw + test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA + test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw + test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg + test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q + test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ + test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA + test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ + test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g + test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg + test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA + test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w + test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw + test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w + test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ + test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ + test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA + test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ + test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w + test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw + test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A + test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg + test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q + test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw + test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw + test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw + test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg + test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ + test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ + test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw + test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g + test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A + test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw + test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ + test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug + test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw + test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw + test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg + test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw + test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg + test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw + test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA + test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA + test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw + test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog + test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A + test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg + test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA + test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ + test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ + test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg + test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw + test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA + test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ + test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA + test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w + test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA + test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ + test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ + test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ + test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig + test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg + test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A + test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg + test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw + test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA + test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA + test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A + test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w + test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA + test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg + test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw + test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA + test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA + test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ + test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw + test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw + test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w + test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g + test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg + test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ + test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg + test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg + test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw + test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q + test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw + test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA + test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ + test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg + test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w + test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w + test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg + test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw + test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA + test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA + test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw + test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg + test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g + test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ + test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g + test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ + test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ + test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g + test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ + test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw + test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA + test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw + test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA + test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg + test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA + test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA + test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q + test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw + test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg + test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg + test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw + test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg + test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA + test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw + test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w + test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A + test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg + test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ + test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ + test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg + test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw + test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q + test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g + test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw + test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ + test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg + test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg + test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA + test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q + test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w + test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ + test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA + test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ + test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg + test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw + test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA + test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA + test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg + test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA + test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA + test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA + test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A + test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg + test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g + test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ + test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng + test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag + test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ + test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg + test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw + test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg + test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA + test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw + test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw + test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg + test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg + test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw + test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w + test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q + test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA + test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg + test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA + test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA + test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA + test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg + test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw + test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q + test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw + test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big + test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ + test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ + test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA + test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w + test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA + test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA + test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ + test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ + test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA + test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw + test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw + test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A + test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg + test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg + test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg + test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg + test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg + test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w + test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA + test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w + test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA + test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ + test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ + test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA + test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA + test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q + test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig + test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA + test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA + test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw + test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA + test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA + test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA + test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A + test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw + test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g + test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ + test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw + test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg + test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw + test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg + test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA + test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A + test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A + test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA + test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA + test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A + test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g + test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ + test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw + test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA + test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ + test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg + test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ + test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ + test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ + test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg + test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A + test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA + test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw + test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A + test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw + test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow + test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg + test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw + test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A + test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng + test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw + test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ + test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w + test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A + test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ + test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA + test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA + test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg + test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw + test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg + test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g + test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw + test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A + test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w + test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww + test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ + test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA + test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q + test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg + test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w + test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ + test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q + test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ + test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew + test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ + test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA + test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w + test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA + test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug + test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg + test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q + test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A + test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw + test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA + test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w + test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw + test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q + test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ + test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw + test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA + test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q + test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w + test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw + test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w + test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw + test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg + test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw + test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g + test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w + test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw + test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w + test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg + test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A + test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA + test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw + test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA + test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g + test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw + test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q + test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw + test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ + test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA + test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q + test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g + test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA + test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q + test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA + test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w + test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA + test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA + test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg + test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA + test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ + test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA + test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ + test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A + test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg + test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ + test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA + test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ + test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw + test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw + test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ + test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg + test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg + test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg + test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw + test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA + test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug + test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ + test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug + test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA + test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA + test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw + test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w + test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ + test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q + test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A + test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w + test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug + test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog + test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw + test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw + test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA + test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ + test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA + test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw + test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg + test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew + test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww + test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw + test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw + test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ + test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg + test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA + test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w + test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ + test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ + test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ + test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw + test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw + test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg + test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg + test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw + test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ + test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA + test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A + test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q + test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng + test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA + test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w + test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw + test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg + test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ + test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ + test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw + test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA + test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA + test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ + test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww + test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA + test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg + test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w + test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA + test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ + test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ + test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg + test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg + test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw + test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw + test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw + test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg + test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw + test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA + test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw + test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w + test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw + test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw + test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA + test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w + test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw + test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA + test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA + test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew + test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw + test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw + test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg + test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A + test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw + test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A + test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ + test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw + test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw + test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA + test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg + test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig + test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA + test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ + test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg + test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg + test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA + test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ + test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g + test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ + test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ + test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA + test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ + test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw + test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg + test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ + test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ + test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA + test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg + test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ + test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ + test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA + test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw + test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA + test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw + test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA + test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA + test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg + test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA + test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw + test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw + test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA + test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ + test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w + test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g + test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA + test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w + test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A + test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w + test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ + test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ + test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w + test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg + test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew + test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg + test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg + test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw + test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA + test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA + test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg + test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw + test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw + test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA + test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ + test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw + test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA + test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA + test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw + test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g + test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw + test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw + test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w + test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw + test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg + test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g + test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ + test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q + test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ + test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA + test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w + test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg + test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA + test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA + test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA + test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA + test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ + test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ + test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng + test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA + test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA + test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ + test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg + test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ + test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw + test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg + test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg + test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw + test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg + test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q + test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q + test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q + test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA + test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA + test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q + test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg + test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA + test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ + test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg + test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ + test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ + test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ + test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA + test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw + test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg + test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA + test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A + test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA + test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw + test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw + test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ + test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw + test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A + test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w + test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA + test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ + test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw + test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ + test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA + test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng + test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ + test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q + test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg + test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw + test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ + test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw + test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g + test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ + test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA + test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ + test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q + test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA + test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg + test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw + test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg + test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA + test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw + test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw + test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ + test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw + test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ + test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw + test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw + test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg + test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw + test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw + test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg + test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q + test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA + test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g + test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g + test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w + test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A + test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ + test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w + test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w + test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w + test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw + test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw + test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ + test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA + test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig + test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ + test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg + test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g + test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ + test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw + test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ + test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA + test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg + test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw + test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ + test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q + test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA + test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q + test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg + test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w + test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg + test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA + test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw + test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA + test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA + test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw + test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ + test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg + test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA + test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw + test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ + test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q + test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA + test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ + test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ + test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A + test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg + test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw + test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw + test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg + test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg + test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g + test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw + test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A + test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw + test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw + test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA + test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ + test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg + test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw + test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ + test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ + test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A + test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A + test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g + test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w + test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA + test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg + test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ + test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg + test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ + test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw + test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ + test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w + test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw + test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ + test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg + test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw + test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ + test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg + test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA + test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ + test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg + test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw + test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw + test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA + test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA + test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw + test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ + test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA + test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA + test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw + test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ + test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw + test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw + test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw + test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA + test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA + test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg + test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA + test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA + test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w + test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q + test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA + test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ + test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA + test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA + test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g + test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw + test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg + test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA + test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg + test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA + test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q + test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw + test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ + test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw + test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw + test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA + test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g + test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q + test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw + test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ + test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg + test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw + test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg + test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ + test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ + test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw + test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ + test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA + test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA + test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw + test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow + test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ + test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q + test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA + test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w + test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg + test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg + test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ + test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w + test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA + test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ + test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ + test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ + test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA + test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw + test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A + test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw + test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w + test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A + test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA + test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ + test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg + test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow + test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug + test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g + test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw + test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA + test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw + test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg + test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg + test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw + test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA + test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A + test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog + test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ + test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ + test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg + test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg + test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g + test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g + test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw + test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ + test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw + test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A + test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g + test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A + test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q + test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ + test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ + test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg + test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ + test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w + test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig + test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg + test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA + test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ + test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw + test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA + test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg + test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA + test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ + test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg + test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ + test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ + test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg + test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg + test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA + test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA + test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA + test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A + test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ + test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw + test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA + test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ + test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA + test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg + test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A + test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA + test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g + test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg + test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw + test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig + test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA + test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA + test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ + test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg + test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw + test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA + test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A + test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg + test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA + test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q + test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw + test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA + test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A + test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ + test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA + test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg + test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw + test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ + test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw + test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA + test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ + test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw + test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA + test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA + test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww + test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw + test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w + test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ + test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA + test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA + test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA + test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA + test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q + test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw + test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw + test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q + test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg + test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A + test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ + test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg + test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ + test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw + test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA + test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA + test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w + test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA + test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow + test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA + test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw + test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ + test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg + test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ + test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ + test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ + test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw + test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw + test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug + test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q + test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g + test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA + test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg + test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA + test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ + test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA + test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w + test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA + test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w + test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA + test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg + test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g + test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg + test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ + test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig + test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA + test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA + test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw + test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA + test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw + test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA + test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ + test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ + test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g + test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg + test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ + test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A + test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA + test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw + test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg + test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ + test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw + test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w + test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg + test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw + test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ + test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew + test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA + test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA + test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg + test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg + test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw + test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg + test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ + test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w + test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w + test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w + test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg + test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg + test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA + test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw + test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA + test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw + test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg + test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ + test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug + test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag + test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA + test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA + test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ + test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A + test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg + test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A + test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA + test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA + test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw + test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ + test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw + test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ + test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA + test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A + test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw + test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw + test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA + test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ + test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA + test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw + test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg + test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg + test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q + test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w + test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA + test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw + test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw + test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ + test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ + test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg + test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g + test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA + test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA + test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ + test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw + test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg + test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg + test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ + test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg + test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw + test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw + test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA + test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ + test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ + test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ + test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g + test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg + test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw + test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw + test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA + test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw + test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw + test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A + test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA + test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw + test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw + test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig + test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ + test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ + test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg + test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA + test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A + test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg + test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg + test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA + test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g + test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew + test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw + test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA + test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w + test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ + test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg + test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA + test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A + test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw + test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ + test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q + test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ + test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng + test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA + test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg + test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg + test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw + test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ + test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw + test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ + test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg + test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw + test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ + test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg + test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA + test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw + test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw + test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw + test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw + test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA + test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA + test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw + test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA + test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg + test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw + test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg + test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw + test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw + test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA + test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw + test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog + test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ + test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw + test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ + test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw + test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw + test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw + test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw + test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA + test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q + test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA + test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ + test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA + test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg + test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w + test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA + test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw + test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw + test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw + test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA + test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw + test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA + test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg + test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ + test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ + test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g + test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA + test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA + test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw + test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA + test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ + test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w + test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg + test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q + test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw + test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA + test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ + test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA + test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg + test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw + test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg + test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ + test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ + test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA + test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ + test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw + test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw + test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw + test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg + test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ + test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g + test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g + test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA + test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg + test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg + test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ + test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q + test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g + test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw + test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA + test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag + test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ + test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg + test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA + test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A + test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw + test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw + test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg + test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA + test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA + test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w + test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA + test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q + test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA + test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA + test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w + test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw + test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ + test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A + test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA + test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A + test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A + test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw + test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g + test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw + test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA + test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA + test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q + test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg + test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q + test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A + test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w + test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA + test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA + test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ + test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow + test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog + test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw + test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA + test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw + test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w + test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA + test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg + test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA + test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA + test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ + test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ + test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug + test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA + test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw + test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg + test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g + test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw + test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og + test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA + test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA + test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA + test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg + test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ + test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw + test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw + test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw + test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q + test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q + test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg + test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA + test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w + test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw + test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ + test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q + test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ + test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ + test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w + test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w + test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw + test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA + test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA + test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA + test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA + test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA + test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA + test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg + test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ + test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q + test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww + test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w + test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ + test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ + test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA + test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA + test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA + test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ + test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg + test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A + test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg + test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw + test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg + test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg + test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA + test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw + test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw + test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ + test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA + test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw + test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ + test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA + test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg + test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ + test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw + test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q + test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g + test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ + test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A + test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA + test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA + test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA + test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ + test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg + test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A + test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg + test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ + test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw + test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ + test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ + toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w + toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ + toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w + toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA + toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA + toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA + toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg + toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA + toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ + toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q + toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA + toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg + toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A + toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w + toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw + toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ + toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw + toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw + toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg + toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg + toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ + toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ + toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw + toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA + toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA + toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ + toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ + toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw + toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A + toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA + toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA + toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA + toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw + toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w + toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA + toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg + toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA + toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ + toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w + toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ + toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg + toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA + toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw + toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg + toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA + toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg + toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw + toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA + toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw + toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw + toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw + toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g + toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g + toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g + toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg + toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g + toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA + toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA + toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg + toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ + toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw + toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g + toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ + toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA + toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g + toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw + toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g + toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg + toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA + toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w + toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA + toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw + toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA + toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ + toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ + toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q + toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ + toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ + toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ + toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA + toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw + toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ + toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw + upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q + upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ + upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA + upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw + upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw + upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg + valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w + webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA + webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw + webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA + webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw + webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg + webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA + webrender-linux-debug: I70EWbeASBqeYezqCFKzEw + webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ + webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA + webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg + webrender-windows: OTEwx1MtTnmi7bxuE9hYIw + webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg + webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA + webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-beta +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20200227094956" +next_version: 75.0b2 +optimize_target_tasks: true +owner: cron@noreply.mozilla.org +phabricator_diff: null +project: mozilla-beta +pushdate: 1582796996 +pushlog_id: "37162" +release_enable_emefree: false +release_enable_partners: false +release_eta: "" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: [] +release_product: null +release_type: beta +required_signoffs: [] +signoff_urls: {} +target_tasks_method: ship_geckoview +tasks_for: cron +try_mode: null +try_options: null +try_task_config: {} +version: 75.0b1 diff --git a/taskcluster/test/params/mc-desktop-nightly.yml b/taskcluster/test/params/mc-desktop-nightly.yml new file mode 100644 index 0000000000..8616c7477f --- /dev/null +++ b/taskcluster/test/params/mc-desktop-nightly.yml @@ -0,0 +1,6545 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1509272580 +build_number: 1 +app_version: 60.0a1 +version: 60.0a1 +next_version: null +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: 66f9b72b87297adf712b14be58df13c2333bb3a9 +head_repository: https://hg.mozilla.org/mozilla-central +head_rev: 66f9b72b87297adf712b14be58df13c2333bb3a9 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20171029102300" +optimize_target_tasks: true +owner: nobody@noreply.mozilla.org +project: mozilla-central +pushdate: 0 +pushlog_id: "-1" +release_eta: "" +release_history: + Darwin_x86_64-gcc3-u-i386-x86_64: + ach: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar + af: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar + an: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar + ar: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar + as: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar + ast: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar + az: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar + be: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar + bg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar + bn-BD: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar + bn-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar + br: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar + bs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar + ca: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar + cak: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar + cs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar + cy: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar + da: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar + de: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar + dsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar + el: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar + en-GB: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar + en-US: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar + en-ZA: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar + eo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar + es-AR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar + target.partial-2.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar + es-CL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar + target.partial-2.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar + es-ES: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar + es-MX: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar + et: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar + eu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar + fa: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar + ff: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar + fi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar + fr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar + fy-NL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar + ga-IE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar + gd: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar + gl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar + gn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar + gu-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar + he: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar + hi-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar + hr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar + hsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar + hu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar + hy-AM: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar + ia: + target.partial-1.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar + target.partial-2.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar + id: + target.partial-1.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar + target.partial-2.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar + is: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar + it: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar + ja-JP-mac: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar + ka: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar + kab: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar + kk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar + km: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar + kn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar + ko: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar + lij: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar + lo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar + lt: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar + ltg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar + lv: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar + mai: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar + mk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar + ml: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar + mr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar + ms: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar + my: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar + nb-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar + ne-NP: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar + nl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar + nn-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar + or: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar + pa-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar + pl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar + pt-BR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar + pt-PT: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar + rm: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar + ro: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar + ru: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar + si: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar + sk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar + sl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar + son: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar + sq: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar + sr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar + sv-SE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar + ta: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar + te: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar + th: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar + tl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar + tr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar + uk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar + ur: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar + uz: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar + vi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar + xh: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar + zh-CN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar + zh-TW: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar + Linux_x86-gcc3: + ach: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar + af: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar + an: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar + ar: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar + as: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar + ast: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar + az: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar + be: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar + bg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar + bn-BD: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar + bn-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar + br: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar + bs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar + ca: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar + cak: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar + cs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar + cy: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar + da: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar + de: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar + dsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar + el: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar + en-GB: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar + en-US: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar + en-ZA: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar + eo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar + es-AR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar + es-CL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar + es-ES: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar + es-MX: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar + et: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar + eu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar + fa: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar + ff: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar + fi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar + fr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar + fy-NL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar + ga-IE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar + gd: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar + gl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar + gn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar + gu-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar + he: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar + hi-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar + hr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar + hsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar + hu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar + hy-AM: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar + ia: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar + id: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar + is: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar + it: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar + ja: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar + ka: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar + kab: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar + kk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar + km: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar + kn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar + ko: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar + lij: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar + lo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar + lt: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar + ltg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar + lv: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar + mai: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar + mk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar + ml: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar + mr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar + ms: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar + my: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar + nb-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar + ne-NP: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar + nl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar + nn-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar + or: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar + pa-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar + pl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar + pt-BR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar + pt-PT: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar + rm: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar + ro: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar + ru: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar + si: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar + sk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar + sl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar + son: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar + sq: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar + sr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar + sv-SE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar + ta: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar + te: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar + th: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar + tl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar + tr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar + uk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar + ur: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar + uz: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar + vi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar + xh: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar + zh-CN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar + zh-TW: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar + Linux_x86_64-gcc3: + ach: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar + af: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar + an: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar + ar: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar + as: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar + ast: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar + az: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar + be: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar + bg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar + bn-BD: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar + bn-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar + br: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar + bs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar + ca: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar + cak: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar + cs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar + cy: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar + da: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar + de: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar + dsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar + el: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar + en-GB: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar + en-US: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar + en-ZA: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar + eo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar + es-AR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar + es-CL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar + es-ES: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar + es-MX: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar + et: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar + eu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar + fa: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar + ff: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar + fi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar + fr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar + fy-NL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar + ga-IE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar + gd: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar + gl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar + gn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar + gu-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar + he: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar + hi-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar + hr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar + hsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar + hu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar + hy-AM: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar + ia: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar + id: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar + is: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar + it: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar + ja: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar + ka: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar + kab: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar + kk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar + km: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar + kn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar + ko: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar + lij: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar + lo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar + lt: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar + ltg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar + lv: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar + mai: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar + mk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar + ml: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar + mr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar + ms: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar + my: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar + nb-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar + ne-NP: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar + nl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar + nn-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar + or: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar + pa-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar + pl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar + pt-BR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar + pt-PT: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar + rm: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar + ro: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar + ru: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar + si: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar + sk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar + sl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar + son: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar + sq: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar + sr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar + sv-SE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar + ta: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar + te: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar + th: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar + tl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar + tr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar + uk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar + ur: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar + uz: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar + vi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar + xh: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar + zh-CN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar + zh-TW: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar + WINNT_x86-msvc: + ach: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar + af: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar + an: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar + ar: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar + as: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar + ast: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar + az: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar + be: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar + bg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar + bn-BD: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar + bn-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar + br: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar + bs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar + ca: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar + cak: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar + cs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar + cy: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar + da: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar + de: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar + dsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar + el: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar + en-GB: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar + en-US: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar + en-ZA: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar + eo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar + es-AR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar + es-CL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar + es-ES: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar + es-MX: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar + et: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar + eu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar + fa: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar + ff: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar + fi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar + fr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar + fy-NL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar + ga-IE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar + gd: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar + gl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar + gn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar + gu-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar + he: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar + hi-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar + hr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar + hsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar + hu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar + hy-AM: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar + ia: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar + id: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar + is: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar + it: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar + ja: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar + ka: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar + kab: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar + kk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar + km: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar + kn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar + target.partial-3.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar + target.partial-4.mar: + buildid: "20171026221945" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar + ko: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar + lij: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar + lo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar + lt: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar + ltg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar + lv: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar + mai: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar + mk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar + ml: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar + mr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar + ms: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar + my: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar + nb-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar + ne-NP: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar + nl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar + nn-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar + or: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar + pa-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar + pl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar + pt-BR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar + pt-PT: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar + rm: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar + ro: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar + ru: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar + si: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar + sk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar + sl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar + son: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar + sq: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar + sr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar + sv-SE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar + ta: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar + te: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar + th: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar + tl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar + tr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar + uk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar + ur: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar + uz: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar + vi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar + xh: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar + zh-CN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar + zh-TW: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar + WINNT_x86_64-msvc: + ach: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar + af: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar + an: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar + ar: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar + as: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar + ast: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar + az: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar + be: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar + bg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar + bn-BD: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar + bn-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar + br: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar + bs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar + ca: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar + cak: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar + cs: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar + cy: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar + da: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar + de: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar + dsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar + el: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar + en-GB: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar + en-US: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar + en-ZA: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar + eo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar + es-AR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar + es-CL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar + es-ES: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar + es-MX: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar + et: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar + eu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar + fa: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar + ff: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar + fi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar + fr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar + fy-NL: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar + ga-IE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar + gd: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar + gl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar + gn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar + gu-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar + he: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar + hi-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar + hr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar + hsb: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar + hu: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar + hy-AM: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar + ia: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar + id: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar + is: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar + it: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar + ja: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar + ka: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar + kab: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar + kk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar + km: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar + kn: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar + ko: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar + lij: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar + lo: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar + lt: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar + ltg: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar + lv: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar + mai: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar + mk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar + ml: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar + mr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar + ms: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar + my: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar + nb-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar + ne-NP: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar + nl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar + nn-NO: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar + or: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar + pa-IN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar + pl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar + pt-BR: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar + pt-PT: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar + rm: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar + ro: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar + ru: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar + si: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar + sk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar + sl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar + son: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar + sq: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar + sr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar + sv-SE: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar + ta: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar + te: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar + th: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar + tl: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar + tr: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar + uk: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar + ur: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar + uz: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar + vi: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar + xh: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar + zh-CN: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar + zh-TW: + target.partial-1.mar: + buildid: "20171028220326" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar + target.partial-2.mar: + buildid: "20171028100423" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar + target.partial-3.mar: + buildid: "20171027220059" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar + target.partial-4.mar: + buildid: "20171027100103" + mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +target_tasks_method: nightly_desktop +tasks_for: cron +try_mode: null +try_options: null +try_task_config: {} +release_type: "nightly" +release_product: null +required_signoffs: [] +signoff_urls: {} +phabricator_diff: diff --git a/taskcluster/test/params/mc-onpush.yml b/taskcluster/test/params/mc-onpush.yml new file mode 100644 index 0000000000..0e2315d356 --- /dev/null +++ b/taskcluster/test/params/mc-onpush.yml @@ -0,0 +1,41 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1509302065 +build_number: 1 +app_version: 60.0a1 +version: 60.0a1 +next_version: null +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: c83100c88242aba3593102b99ece7f8073f93177 +head_repository: https://hg.mozilla.org/mozilla-central +head_rev: c83100c88242aba3593102b99ece7f8073f93177 +hg_branch: default +level: "3" +message: " " +moz_build_date: "20171029183425" +optimize_target_tasks: true +owner: ffxbld@noreply.mozilla.org +project: mozilla-central +pushdate: 1509302065 +pushlog_id: "32768" +release_eta: "" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +target_tasks_method: default +tasks_for: hg-push +try_mode: null +try_options: null +try_task_config: {} +release_type: "nightly" +release_product: null +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +test_manifest_loader: default diff --git a/taskcluster/test/params/mc-ship-geckoview.yml b/taskcluster/test/params/mc-ship-geckoview.yml new file mode 100644 index 0000000000..f90c09ce11 --- /dev/null +++ b/taskcluster/test/params/mc-ship-geckoview.yml @@ -0,0 +1,3822 @@ +--- +app_version: 75.0a1 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1582796996 +build_number: 1 +do_not_optimize: [] +existing_tasks: + artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA + build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA + build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q + build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw + build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA + build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw + build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA + build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg + build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg + build-android-api-16/opt: M5qSN82KTm--V3TrDJponw + build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg + build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA + build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww + build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ + build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA + build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q + build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ + build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A + build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ + build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA + build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A + build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA + build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA + build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA + build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ + build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ + build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg + build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A + build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg + build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ + build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ + build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g + build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg + build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A + build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ + build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ + build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ + build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg + build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ + build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg + build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA + build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw + build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ + build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw + build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ + build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw + build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ + build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw + build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew + build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg + build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g + build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA + build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g + build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A + build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg + build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg + build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ + build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g + build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw + build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ + build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA + build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA + build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw + build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g + build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA + build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA + build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA + build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg + build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw + build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA + build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ + build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w + build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ + build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg + build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A + build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw + build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA + build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA + build-linux/opt: BdawADUPSemriSIoDXxsog + build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q + build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg + build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg + build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw + build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ + build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg + build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ + build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA + build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA + build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg + build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A + build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw + build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ + build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q + build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g + build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ + build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg + build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw + build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA + build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg + build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag + build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA + build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ + build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ + build-linux64/opt: CnU_i566R5K7uv3abLX7Lg + build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w + build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg + build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw + build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A + build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA + build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw + build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ + build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg + build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ + build-macosx64/opt: cvDxNoAQSomchCCS8gkORA + build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ + build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw + build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ + build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw + build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg + build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg + build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w + build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA + build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg + build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ + build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ + build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw + build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA + build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q + build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw + build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w + build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw + build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg + build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ + build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A + build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w + build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A + build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w + build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ + build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ + build-win32/opt: bH1IItXnRei0TXIIwdSdYA + build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw + build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw + build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ + build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w + build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg + build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ + build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew + build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q + build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw + build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q + build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw + build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA + build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg + build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw + build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg + build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w + build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ + build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg + build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA + build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag + build-win64/debug: M6NAJyEbTdWnWikR0Bok8w + build-win64/opt: O1vuo0zzRRmEs6qAB8VluA + condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ + condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg + condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA + condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw + condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g + condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q + condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A + condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw + diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg + diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ + fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg + fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ + fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA + fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A + fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ + fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew + fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q + fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ + fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw + fetch-cmake: F5kmkERhSiCqvcUDtQCb6A + fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg + fetch-fix-stacks: G606hoRUSxqohchf64oJBw + fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg + fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w + fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg + fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A + fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw + fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ + fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw + fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg + fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q + fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww + fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA + fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg + fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA + fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ + fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA + fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA + fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA + fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ + fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw + fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA + fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA + fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw + fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww + fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA + fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w + fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew + fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog + fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA + fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A + fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA + fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA + fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g + fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ + fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA + fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A + fetch-ninja: cuJolDCYQ3uinL2CwlQviQ + fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA + fetch-octane: dLW609SGSAaOz15ShsFIpw + fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw + fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA + fetch-tup: dMdjMYuLQ5e-2r0piAVT9A + fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg + fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg + fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w + fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q + fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw + fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A + fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA + fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg + fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q + fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q + fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw + fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ + generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A + generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA + generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ + generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g + generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA + generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg + github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ + hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg + hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA + instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ + instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg + instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw + instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ + instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw + instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g + l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ + l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw + l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q + l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w + l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ + packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg + packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ + packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA + packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw + packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A + packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w + packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA + packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg + packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg + packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ + packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q + packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg + packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw + packages-deb7-atk: SHQacTunSMePv5M0Hbho9g + packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ + packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA + packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ + packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg + packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA + packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw + packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw + packages-deb7-git: EE2WtGanS-Oiqiuln372lA + packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg + packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA + packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ + packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ + packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A + packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg + packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA + packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw + packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ + packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A + packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw + packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A + packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA + packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg + packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA + packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A + packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ + packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ + packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ + packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg + repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw + repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg + repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA + repackage-linux64/opt: JBjHCaL6TNWej-riozHffg + repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA + repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw + repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg + repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig + repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg + repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg + repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg + repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw + repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w + repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw + repackage-win32/opt: cGFA0orpTCibP6cwsr06lA + repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg + repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg + repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w + source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA + source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g + source-test-doc-generate: atnQNEOCRrW9diFfjykfmw + source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ + source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ + source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg + source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g + source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow + source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA + source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g + source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ + source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q + source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A + source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA + source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A + source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ + source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ + source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA + source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g + source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ + source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A + source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ + source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg + source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g + source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A + source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g + source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg + source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g + source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw + source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw + source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow + source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw + source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA + source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ + source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA + source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ + source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ + source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q + source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw + source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw + source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA + source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw + source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw + source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw + source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g + source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw + source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ + source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg + source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA + spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw + spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw + spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ + spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA + spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w + spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg + spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg + spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ + spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ + spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw + spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA + spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw + spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA + spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ + spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA + spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw + spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg + spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA + spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ + spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw + spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw + static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA + static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ + test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg + test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw + test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw + test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ + test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w + test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ + test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w + test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw + test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ + test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ + test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g + test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q + test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg + test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g + test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg + test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg + test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A + test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw + test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg + test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA + test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A + test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw + test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w + test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw + test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g + test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw + test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ + test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q + test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw + test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g + test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ + test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg + test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg + test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA + test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w + test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g + test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g + test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ + test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ + test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw + test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g + test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg + test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw + test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w + test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg + test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q + test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA + test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A + test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw + test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw + test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg + test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw + test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw + test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q + test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg + test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ + test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw + test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg + test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg + test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw + test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg + test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw + test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow + test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA + test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA + test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A + test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw + test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg + test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg + test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA + test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A + test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA + test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w + test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw + test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA + test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg + test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw + test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w + test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA + test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g + test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw + test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg + test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw + test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA + test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w + test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow + test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w + test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA + test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA + test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg + test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A + test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw + test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg + test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg + test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ + test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw + test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw + test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng + test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA + test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA + test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw + test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA + test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog + test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg + test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw + test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg + test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew + test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw + test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q + test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg + test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ + test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g + test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA + test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ + test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg + test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg + test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ + test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw + test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q + test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg + test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA + test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw + test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA + test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog + test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A + test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA + test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww + test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA + test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w + test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw + test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg + test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw + test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg + test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g + test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ + test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ + test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ + test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA + test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw + test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ + test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ + test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w + test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA + test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg + test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA + test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q + test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng + test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g + test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ + test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg + test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g + test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA + test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A + test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ + test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg + test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ + test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ + test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw + test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg + test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA + test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg + test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA + test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA + test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg + test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA + test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA + test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ + test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg + test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA + test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw + test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw + test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ + test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg + test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA + test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ + test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ + test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg + test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg + test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA + test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw + test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg + test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA + test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw + test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA + test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A + test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw + test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg + test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g + test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g + test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A + test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA + test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw + test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg + test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg + test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg + test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg + test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg + test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q + test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A + test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q + test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA + test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ + test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ + test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA + test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew + test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA + test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA + test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA + test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ + test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg + test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg + test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA + test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ + test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw + test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA + test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ + test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ + test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA + test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg + test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg + test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw + test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg + test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg + test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw + test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg + test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw + test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA + test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA + test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w + test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA + test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg + test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA + test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ + test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA + test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw + test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw + test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA + test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA + test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw + test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w + test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw + test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w + test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg + test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ + test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw + test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA + test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw + test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA + test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg + test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A + test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ + test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg + test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA + test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ + test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ + test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w + test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw + test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A + test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA + test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q + test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA + test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA + test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow + test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg + test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA + test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g + test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q + test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw + test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ + test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ + test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow + test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw + test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg + test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg + test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA + test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg + test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng + test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg + test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw + test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA + test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig + test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw + test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A + test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw + test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw + test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg + test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg + test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g + test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA + test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA + test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g + test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg + test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ + test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw + test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA + test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q + test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ + test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg + test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA + test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA + test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ + test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q + test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA + test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg + test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA + test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g + test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ + test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg + test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw + test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg + test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q + test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA + test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA + test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA + test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg + test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A + test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA + test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw + test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA + test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw + test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg + test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w + test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA + test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A + test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA + test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA + test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA + test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA + test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg + test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w + test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ + test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA + test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA + test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg + test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ + test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg + test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ + test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg + test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA + test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w + test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA + test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA + test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg + test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ + test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw + test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ + test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA + test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w + test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg + test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ + test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw + test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ + test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg + test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw + test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A + test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA + test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg + test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA + test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw + test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww + test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA + test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ + test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ + test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg + test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA + test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A + test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw + test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg + test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A + test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA + test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ + test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A + test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA + test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg + test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ + test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ + test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g + test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA + test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA + test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g + test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA + test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA + test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw + test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA + test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA + test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA + test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg + test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA + test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg + test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw + test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA + test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ + test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw + test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ + test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q + test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA + test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw + test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw + test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ + test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA + test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g + test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg + test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg + test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg + test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA + test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og + test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ + test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg + test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA + test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA + test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw + test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ + test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ + test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw + test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA + test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw + test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA + test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg + test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ + test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA + test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw + test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ + test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA + test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA + test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA + test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q + test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg + test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw + test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q + test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA + test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA + test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ + test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA + test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g + test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA + test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg + test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg + test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ + test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg + test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q + test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA + test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ + test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA + test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ + test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ + test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg + test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA + test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g + test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg + test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA + test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw + test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw + test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g + test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA + test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q + test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw + test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA + test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA + test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg + test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw + test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw + test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w + test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g + test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ + test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw + test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ + test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw + test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw + test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ + test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA + test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg + test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw + test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA + test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w + test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg + test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw + test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg + test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w + test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A + test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw + test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg + test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw + test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA + test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg + test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A + test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA + test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ + test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg + test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ + test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg + test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA + test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ + test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q + test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g + test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA + test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg + test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA + test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg + test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA + test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA + test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A + test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg + test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg + test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw + test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg + test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ + test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA + test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A + test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ + test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA + test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw + test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ + test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg + test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ + test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw + test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw + test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg + test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA + test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg + test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ + test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g + test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg + test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g + test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w + test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w + test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw + test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA + test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg + test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ + test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w + test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg + test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA + test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A + test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q + test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA + test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg + test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q + test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ + test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ + test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww + test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ + test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg + test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw + test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA + test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ + test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ + test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA + test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA + test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA + test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw + test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA + test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew + test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog + test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw + test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q + test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg + test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w + test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg + test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q + test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw + test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ + test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow + test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w + test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg + test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w + test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ + test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA + test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw + test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw + test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ + test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw + test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA + test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ + test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg + test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw + test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg + test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw + test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw + test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg + test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w + test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ + test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw + test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg + test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg + test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw + test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w + test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA + test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A + test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg + test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA + test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog + test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg + test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw + test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA + test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ + test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA + test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA + test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw + test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA + test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q + test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw + test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q + test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw + test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ + test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g + test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw + test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg + test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw + test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw + test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A + test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA + test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg + test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ + test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg + test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg + test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng + test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg + test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA + test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg + test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ + test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug + test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg + test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA + test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg + test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g + test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA + test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w + test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg + test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA + test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A + test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ + test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg + test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg + test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ + test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA + test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ + test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA + test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew + test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA + test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA + test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q + test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ + test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw + test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ + test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA + test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA + test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ + test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A + test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw + test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w + test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg + test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA + test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ + test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig + test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg + test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA + test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g + test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ + test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ + test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag + test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA + test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w + test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA + test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg + test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ + test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA + test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA + test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw + test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw + test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw + test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw + test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg + test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ + test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg + test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w + test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ + test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg + test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA + test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg + test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw + test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw + test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg + test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg + test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw + test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w + test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug + test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ + test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ + test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw + test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A + test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g + test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg + test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw + test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ + test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A + test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A + test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw + test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA + test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ + test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A + test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw + test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q + test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg + test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A + test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g + test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA + test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w + test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA + test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g + test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ + test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA + test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA + test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w + test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w + test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg + test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg + test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg + test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw + test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA + test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA + test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g + test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q + test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw + test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og + test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg + test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw + test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA + test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog + test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw + test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA + test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag + test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg + test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog + test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA + test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g + test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g + test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ + test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw + test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw + test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg + test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA + test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg + test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ + test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ + test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw + test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA + test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA + test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ + test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw + test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA + test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ + test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw + test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg + test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw + test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g + test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ + test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A + test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg + test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q + test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g + test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw + test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw + test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ + test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw + test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw + test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw + test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA + test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag + test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg + test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg + test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q + test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg + test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw + test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw + test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA + test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw + test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A + test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw + test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA + test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w + test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ + test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw + test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w + test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw + test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A + test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw + test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew + test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg + test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw + test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw + test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q + test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg + test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA + test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA + test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ + test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw + test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA + test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ + test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ + test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw + test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g + test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA + test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A + test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A + test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA + test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA + test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q + test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw + test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw + test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA + test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw + test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ + test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w + test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ + test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg + test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ + test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w + test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg + test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw + test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g + test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg + test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw + test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w + test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA + test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ + test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA + test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw + test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ + test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA + test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw + test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA + test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg + test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ + test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q + test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA + test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw + test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA + test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw + test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA + test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ + test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg + test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg + test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A + test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg + test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw + test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA + test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ + test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg + test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw + test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg + test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg + test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw + test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA + test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw + test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg + test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q + test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ + test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA + test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ + test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g + test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg + test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA + test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w + test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw + test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w + test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ + test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ + test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA + test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ + test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w + test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw + test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A + test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg + test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q + test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw + test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw + test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw + test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg + test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ + test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ + test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw + test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g + test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A + test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw + test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ + test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug + test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw + test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw + test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg + test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw + test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg + test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw + test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA + test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA + test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw + test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog + test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A + test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg + test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA + test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ + test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ + test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg + test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw + test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA + test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ + test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA + test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w + test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA + test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ + test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ + test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ + test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig + test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg + test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A + test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg + test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw + test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA + test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA + test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A + test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w + test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA + test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg + test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw + test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA + test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA + test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ + test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw + test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw + test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w + test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g + test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg + test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ + test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg + test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg + test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw + test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q + test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw + test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA + test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ + test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg + test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w + test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w + test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg + test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw + test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA + test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA + test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw + test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg + test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g + test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ + test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g + test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ + test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ + test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g + test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ + test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw + test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA + test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw + test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA + test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg + test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA + test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA + test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q + test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw + test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg + test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg + test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw + test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg + test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA + test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw + test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w + test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A + test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg + test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ + test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ + test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg + test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw + test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q + test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g + test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw + test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ + test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg + test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg + test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA + test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q + test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w + test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ + test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA + test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ + test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg + test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw + test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA + test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA + test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg + test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA + test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA + test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA + test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A + test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg + test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g + test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ + test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng + test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag + test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ + test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg + test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw + test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg + test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA + test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw + test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw + test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg + test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg + test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw + test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w + test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q + test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA + test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg + test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA + test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA + test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA + test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg + test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw + test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q + test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw + test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big + test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ + test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ + test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA + test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w + test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA + test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA + test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ + test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ + test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA + test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw + test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw + test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A + test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg + test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg + test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg + test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg + test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg + test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w + test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA + test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w + test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA + test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ + test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ + test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA + test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA + test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q + test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig + test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA + test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA + test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw + test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA + test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA + test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA + test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A + test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw + test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g + test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ + test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw + test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg + test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw + test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg + test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA + test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A + test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A + test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA + test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA + test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A + test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g + test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ + test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw + test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA + test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ + test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg + test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ + test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ + test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ + test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg + test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A + test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA + test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw + test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A + test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw + test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow + test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg + test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw + test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A + test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng + test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw + test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ + test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w + test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A + test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ + test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA + test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA + test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg + test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw + test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg + test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g + test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw + test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A + test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w + test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww + test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ + test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA + test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q + test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg + test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w + test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ + test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q + test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ + test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew + test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ + test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA + test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w + test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA + test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug + test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg + test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q + test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A + test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw + test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA + test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w + test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw + test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q + test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ + test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw + test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA + test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q + test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w + test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw + test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w + test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw + test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg + test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw + test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g + test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w + test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw + test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w + test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg + test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A + test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA + test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw + test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA + test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g + test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw + test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q + test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw + test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ + test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA + test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q + test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g + test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA + test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q + test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA + test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w + test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA + test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA + test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg + test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA + test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ + test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA + test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ + test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A + test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg + test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ + test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA + test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ + test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw + test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw + test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ + test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg + test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg + test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg + test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw + test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA + test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug + test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ + test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug + test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA + test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA + test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw + test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w + test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ + test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q + test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A + test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w + test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug + test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog + test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw + test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw + test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA + test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ + test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA + test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw + test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg + test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew + test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww + test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw + test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw + test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ + test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg + test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA + test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w + test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ + test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ + test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ + test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw + test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw + test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg + test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg + test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw + test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ + test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA + test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A + test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q + test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng + test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA + test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w + test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw + test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg + test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ + test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ + test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw + test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA + test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA + test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ + test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww + test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA + test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg + test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w + test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA + test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ + test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ + test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg + test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg + test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw + test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw + test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw + test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg + test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw + test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA + test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw + test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w + test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw + test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw + test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA + test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w + test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw + test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA + test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA + test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew + test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw + test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw + test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg + test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A + test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw + test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A + test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ + test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw + test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw + test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA + test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg + test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig + test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA + test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ + test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg + test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg + test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA + test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ + test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g + test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ + test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ + test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA + test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ + test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw + test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg + test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ + test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ + test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA + test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg + test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ + test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ + test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA + test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw + test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA + test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw + test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA + test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA + test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg + test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA + test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw + test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw + test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA + test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ + test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w + test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g + test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA + test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w + test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A + test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w + test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ + test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ + test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w + test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg + test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew + test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg + test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg + test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw + test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA + test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA + test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg + test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw + test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw + test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA + test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ + test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw + test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA + test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA + test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw + test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g + test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw + test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw + test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w + test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw + test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg + test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g + test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ + test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q + test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ + test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA + test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w + test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg + test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA + test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA + test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA + test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA + test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ + test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ + test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng + test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA + test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA + test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ + test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg + test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ + test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw + test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg + test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg + test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw + test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg + test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q + test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q + test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q + test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA + test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA + test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q + test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg + test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA + test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ + test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg + test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ + test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ + test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ + test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA + test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw + test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg + test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA + test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A + test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA + test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw + test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw + test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ + test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw + test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A + test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w + test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA + test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ + test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw + test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ + test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA + test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng + test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ + test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q + test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg + test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw + test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ + test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw + test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g + test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ + test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA + test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ + test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q + test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA + test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg + test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw + test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg + test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA + test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw + test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw + test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ + test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw + test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ + test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw + test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw + test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg + test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw + test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw + test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg + test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q + test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA + test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g + test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g + test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w + test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A + test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ + test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w + test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w + test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w + test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw + test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw + test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ + test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA + test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig + test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ + test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg + test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g + test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ + test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw + test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ + test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA + test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg + test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw + test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ + test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q + test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA + test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q + test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg + test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w + test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg + test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA + test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw + test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA + test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA + test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw + test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ + test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg + test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA + test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw + test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ + test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q + test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA + test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ + test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ + test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A + test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg + test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw + test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw + test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg + test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg + test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g + test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw + test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A + test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw + test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw + test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA + test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ + test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg + test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw + test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ + test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ + test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A + test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A + test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g + test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w + test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA + test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg + test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ + test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg + test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ + test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw + test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ + test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w + test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw + test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ + test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg + test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw + test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ + test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg + test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA + test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ + test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg + test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw + test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw + test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA + test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA + test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw + test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ + test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA + test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA + test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw + test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ + test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw + test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw + test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw + test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA + test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA + test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg + test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA + test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA + test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w + test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q + test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA + test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ + test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA + test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA + test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g + test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw + test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg + test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA + test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg + test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA + test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q + test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw + test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ + test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw + test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw + test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA + test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g + test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q + test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw + test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ + test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg + test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw + test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg + test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ + test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ + test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw + test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ + test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA + test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA + test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw + test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow + test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ + test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q + test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA + test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w + test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg + test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg + test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ + test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w + test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA + test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ + test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ + test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ + test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA + test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw + test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A + test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw + test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w + test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A + test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA + test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ + test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg + test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow + test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug + test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g + test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw + test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA + test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw + test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg + test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg + test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw + test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA + test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A + test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog + test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ + test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ + test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg + test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg + test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g + test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g + test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw + test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ + test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw + test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A + test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g + test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A + test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q + test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ + test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ + test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg + test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ + test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w + test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig + test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg + test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA + test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ + test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw + test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA + test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg + test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA + test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ + test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg + test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ + test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ + test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg + test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg + test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA + test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA + test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA + test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A + test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ + test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw + test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA + test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ + test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA + test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg + test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A + test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA + test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g + test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg + test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw + test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig + test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA + test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA + test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ + test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg + test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw + test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA + test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A + test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg + test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA + test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q + test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw + test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA + test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A + test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ + test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA + test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg + test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw + test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ + test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw + test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA + test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ + test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw + test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA + test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA + test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww + test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw + test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w + test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ + test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA + test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA + test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA + test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA + test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q + test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw + test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw + test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q + test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg + test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A + test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ + test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg + test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ + test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw + test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA + test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA + test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w + test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA + test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow + test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA + test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw + test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ + test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg + test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ + test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ + test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ + test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw + test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw + test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug + test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q + test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g + test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA + test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg + test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA + test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ + test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA + test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w + test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA + test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w + test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA + test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg + test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g + test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg + test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ + test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig + test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA + test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA + test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw + test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA + test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw + test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA + test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ + test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ + test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g + test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg + test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ + test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A + test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA + test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw + test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg + test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ + test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw + test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w + test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg + test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw + test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ + test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew + test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA + test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA + test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg + test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg + test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw + test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg + test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ + test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w + test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w + test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w + test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg + test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg + test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA + test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw + test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA + test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw + test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg + test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ + test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug + test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag + test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA + test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA + test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ + test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A + test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg + test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A + test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA + test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA + test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw + test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ + test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw + test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ + test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA + test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A + test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw + test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw + test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA + test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ + test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA + test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw + test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg + test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg + test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q + test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w + test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA + test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw + test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw + test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ + test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ + test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg + test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g + test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA + test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA + test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ + test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw + test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg + test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg + test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ + test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg + test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw + test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw + test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA + test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ + test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ + test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ + test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g + test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg + test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw + test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw + test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA + test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw + test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw + test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A + test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA + test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw + test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw + test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig + test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ + test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ + test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg + test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA + test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A + test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg + test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg + test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA + test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g + test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew + test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw + test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA + test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w + test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ + test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg + test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA + test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A + test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw + test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ + test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q + test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ + test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng + test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA + test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg + test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg + test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw + test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ + test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw + test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ + test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg + test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw + test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ + test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg + test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA + test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw + test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw + test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw + test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw + test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA + test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA + test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw + test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA + test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg + test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw + test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg + test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw + test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw + test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA + test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw + test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog + test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ + test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw + test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ + test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw + test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw + test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw + test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw + test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA + test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q + test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA + test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ + test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA + test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg + test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w + test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA + test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw + test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw + test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw + test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA + test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw + test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA + test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg + test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ + test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ + test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g + test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA + test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA + test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw + test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA + test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ + test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w + test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg + test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q + test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw + test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA + test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ + test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA + test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg + test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw + test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg + test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ + test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ + test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA + test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ + test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw + test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw + test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw + test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg + test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ + test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g + test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g + test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA + test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg + test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg + test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ + test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q + test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g + test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw + test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA + test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag + test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ + test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg + test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA + test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A + test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw + test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw + test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg + test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA + test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA + test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w + test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA + test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q + test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA + test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA + test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w + test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw + test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ + test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A + test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA + test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A + test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A + test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw + test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g + test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw + test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA + test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA + test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q + test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg + test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q + test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A + test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w + test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA + test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA + test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ + test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow + test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog + test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw + test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA + test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw + test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w + test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA + test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg + test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA + test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA + test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ + test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ + test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug + test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA + test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw + test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg + test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g + test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw + test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og + test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA + test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA + test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA + test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg + test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ + test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw + test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw + test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw + test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q + test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q + test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg + test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA + test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w + test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw + test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ + test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q + test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ + test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ + test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w + test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w + test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw + test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA + test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA + test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA + test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA + test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA + test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA + test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg + test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ + test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q + test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww + test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w + test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ + test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ + test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA + test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA + test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA + test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ + test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg + test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A + test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg + test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw + test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg + test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg + test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA + test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw + test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw + test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ + test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA + test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw + test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ + test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA + test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg + test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ + test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw + test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q + test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g + test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ + test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A + test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA + test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA + test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA + test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ + test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg + test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A + test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg + test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ + test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw + test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ + test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ + toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w + toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ + toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w + toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA + toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA + toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA + toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg + toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA + toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ + toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q + toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA + toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg + toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A + toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w + toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw + toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ + toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw + toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw + toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg + toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg + toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ + toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ + toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw + toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA + toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA + toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ + toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ + toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw + toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A + toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA + toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA + toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA + toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw + toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w + toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA + toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg + toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA + toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ + toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w + toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ + toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg + toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA + toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw + toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg + toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA + toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg + toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw + toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA + toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw + toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw + toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw + toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g + toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g + toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g + toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg + toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g + toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA + toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA + toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg + toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ + toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw + toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g + toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ + toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA + toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g + toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw + toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g + toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg + toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA + toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w + toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA + toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw + toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA + toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ + toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ + toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q + toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ + toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ + toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ + toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA + toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw + toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ + toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw + upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q + upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ + upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA + upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw + upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw + upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg + valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w + webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA + webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw + webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA + webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw + webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg + webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA + webrender-linux-debug: I70EWbeASBqeYezqCFKzEw + webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ + webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA + webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg + webrender-windows: OTEwx1MtTnmi7bxuE9hYIw + webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg + webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA + webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg +filters: + - target_tasks_method +head_ref: 9e8d5431c4121a4bd70d440c98b50444aee60dd9 +head_repository: https://hg.mozilla.org/mozilla-central +head_rev: 9e8d5431c4121a4bd70d440c98b50444aee60dd9 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20200227094956" +next_version: null +optimize_target_tasks: true +owner: cron@noreply.mozilla.org +phabricator_diff: null +project: mozilla-central +pushdate: 1582796996 +pushlog_id: "37162" +release_enable_emefree: false +release_enable_partners: false +release_eta: "" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: [] +release_product: null +release_type: nightly +required_signoffs: [] +signoff_urls: {} +target_tasks_method: ship_geckoview +tasks_for: cron +try_mode: null +try_options: null +try_task_config: {} +version: 75.0a1 diff --git a/taskcluster/test/params/me-promote-firefox.yml b/taskcluster/test/params/me-promote-firefox.yml new file mode 100644 index 0000000000..b25b6e8aff --- /dev/null +++ b/taskcluster/test/params/me-promote-firefox.yml @@ -0,0 +1,40 @@ +--- +app_version: 60.0.1 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1526441057 +build_number: 1 +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +head_repository: https://hg.mozilla.org/releases/mozilla-esr60 +head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +hg_branch: default +level: "3" +message: " " +moz_build_date: "20180516032417" +next_version: 60.0.2 +optimize_target_tasks: true +owner: nthomas@mozilla.com +project: mozilla-esr60 +pushdate: 1526441057 +pushlog_id: "35" +release_enable_emefree: false +release_enable_partners: false +release_eta: "2018-05-16T13:00:00+00:00" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: null +release_product: firefox +release_type: "esr60" +target_tasks_method: promote_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 60.0.1esr +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/me-push-firefox.yml b/taskcluster/test/params/me-push-firefox.yml new file mode 100644 index 0000000000..b88012e274 --- /dev/null +++ b/taskcluster/test/params/me-push-firefox.yml @@ -0,0 +1,41 @@ +--- +app_version: 60.0.1 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1526441057 +build_number: 1 +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +head_repository: https://hg.mozilla.org/releases/mozilla-esr60 +head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +hg_branch: default +level: "3" +message: " " +moz_build_date: "20180516032417" +next_version: 60.0.2 +optimize_target_tasks: true +owner: nthomas@mozilla.com +project: mozilla-esr60 +pushdate: 1526441057 +pushlog_id: "35" +release_enable_emefree: false +release_enable_partners: false +release_eta: "2018-05-16T13:00:00+00:00" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: null +release_product: firefox +release_type: "esr60" +target_tasks_method: push_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 60.0.1esr +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/me-ship-firefox.yml b/taskcluster/test/params/me-ship-firefox.yml new file mode 100644 index 0000000000..c891736340 --- /dev/null +++ b/taskcluster/test/params/me-ship-firefox.yml @@ -0,0 +1,40 @@ +--- +app_version: 60.0.1 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1526441057 +build_number: 1 +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +head_repository: https://hg.mozilla.org/releases/mozilla-esr60 +head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff +hg_branch: default +level: "3" +message: " " +moz_build_date: "20180516032417" +next_version: 60.0.2 +optimize_target_tasks: true +owner: nthomas@mozilla.com +project: mozilla-esr60 +pushdate: 1526441057 +pushlog_id: "35" +release_enable_emefree: false +release_enable_partners: false +release_eta: "2018-05-16T13:00:00+00:00" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: null +release_product: firefox +release_type: "esr60" +target_tasks_method: ship_desktop +try_mode: null +try_options: null +try_task_config: {} +version: 60.0.1esr +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mr-onpush-geckoview.yml b/taskcluster/test/params/mr-onpush-geckoview.yml new file mode 100644 index 0000000000..f7ae1913ba --- /dev/null +++ b/taskcluster/test/params/mr-onpush-geckoview.yml @@ -0,0 +1,41 @@ +--- +app_version: 62.0.3 +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1539294145 +build_number: 1 +do_not_optimize: [] +existing_tasks: {} +filters: + - target_tasks_method +head_ref: d66bd740b59ffdcb800dc225cf29fc383d5e1a2b +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: d66bd740b59ffdcb800dc225cf29fc383d5e1a2b +hg_branch: GECKOVIEW_62_RELBRANCH +level: "3" +message: " " +moz_build_date: "20181011214225" +next_version: null +optimize_target_tasks: true +owner: nchen@mozilla.com +project: mozilla-release +pushdate: 1539294145 +pushlog_id: "1814" +release_enable_emefree: false +release_enable_partners: false +release_eta: "" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: [] +release_product: null +release_type: "release" +target_tasks_method: mozilla_release_tasks +try_mode: null +try_options: null +try_task_config: {} +version: 62.0.3 +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/mr-onpush.yml b/taskcluster/test/params/mr-onpush.yml new file mode 100644 index 0000000000..69f5b55516 --- /dev/null +++ b/taskcluster/test/params/mr-onpush.yml @@ -0,0 +1,43 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: null +filters: + - target_tasks_method +head_ref: 196059cada7070ab1e35db83a22b60389bd0c794 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 196059cada7070ab1e35db83a22b60389bd0c794 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: false +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "" +release_history: {} +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +# target_task_labels: [] +target_tasks_method: mozilla_release_tasks +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release" +release_product: null +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: hg-push +test_manifest_loader: default diff --git a/taskcluster/test/params/mr-promote-firefox-rc.yml b/taskcluster/test/params/mr-promote-firefox-rc.yml new file mode 100644 index 0000000000..afa4a85f94 --- /dev/null +++ b/taskcluster/test/params/mr-promote-firefox-rc.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: null +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: promote_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release-rc" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mr-promote-firefox.yml b/taskcluster/test/params/mr-promote-firefox.yml new file mode 100644 index 0000000000..f26ae56c0b --- /dev/null +++ b/taskcluster/test/params/mr-promote-firefox.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: null +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: promote_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mr-push-firefox.yml b/taskcluster/test/params/mr-push-firefox.yml new file mode 100644 index 0000000000..7df2ac3f04 --- /dev/null +++ b/taskcluster/test/params/mr-push-firefox.yml @@ -0,0 +1,110 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: 60.0.1 +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: push_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action +test_manifest_loader: default diff --git a/taskcluster/test/params/mr-ship-firefox-rc.yml b/taskcluster/test/params/mr-ship-firefox-rc.yml new file mode 100644 index 0000000000..edf2a3b2a3 --- /dev/null +++ b/taskcluster/test/params/mr-ship-firefox-rc.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: 60.0.1 +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: ship_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release-rc" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mr-ship-firefox.yml b/taskcluster/test/params/mr-ship-firefox.yml new file mode 100644 index 0000000000..8614699f26 --- /dev/null +++ b/taskcluster/test/params/mr-ship-firefox.yml @@ -0,0 +1,109 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509164545 +build_number: 1 +app_version: "60.0" +version: "60.0" +next_version: 60.0.1 +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: " " +# morph_templates: {} +moz_build_date: "20171028042225" +optimize_target_tasks: true +owner: xquan@mozilla.com +project: mozilla-release +pushdate: 1509164545 +pushlog_id: "8069" +release_eta: "2018-01-31T00:30:00+00:00" +release_history: {} +release_enable_partners: true +release_partners: null +release_partner_build_number: 1 +release_partner_config: + { + "release-eme-free-repack": + { + "mozilla-EME-free": + { + "mozilla-EME-free": + { + "s3cfg": "/builds/release-s3cfg", + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "mozilla-EMEfree", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "mozilla-EMEfree", + }, + }, + }, + "release-partner-repack": + { + "partner2": + { + "partner2": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner2", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "locales": ["en-US"], + "dist_id": "partner2", + }, + }, + "partner1": + { + "partner1": + { + "dist_version": "1.0", + "bucket": "net-mozaws-prod-delivery-firefox", + "platforms": + [ + "linux-shippable", + "linux64-shippable", + "macosx64-shippable", + "win32-shippable", + "win64-shippable", + ], + "aus": "partner1", + "output_dir": "%(platform)s-EME-free/%(locale)s", + "upload_to_candidates": "true", + "locales": ["de", "en-US"], + "dist_id": "partner1", + }, + }, + }, + } +release_enable_emefree: true +# target_task_labels: [] +target_tasks_method: ship_desktop +do_not_optimize: [] +try_mode: null +try_task_config: {} +existing_tasks: {} +try_options: +release_type: "release" +release_product: firefox +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: action diff --git a/taskcluster/test/params/mr-ship-geckoview.yml b/taskcluster/test/params/mr-ship-geckoview.yml new file mode 100644 index 0000000000..9b9a7c51b0 --- /dev/null +++ b/taskcluster/test/params/mr-ship-geckoview.yml @@ -0,0 +1,3822 @@ +--- +app_version: "75.0" +base_repository: https://hg.mozilla.org/mozilla-unified +build_date: 1582796996 +build_number: 1 +do_not_optimize: [] +existing_tasks: + artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA + build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA + build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q + build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw + build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA + build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw + build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA + build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg + build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg + build-android-api-16/opt: M5qSN82KTm--V3TrDJponw + build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg + build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA + build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww + build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ + build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA + build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q + build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ + build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A + build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ + build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA + build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A + build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA + build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA + build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA + build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ + build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ + build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg + build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A + build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg + build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ + build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ + build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g + build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg + build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A + build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ + build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ + build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ + build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg + build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ + build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg + build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA + build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw + build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ + build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw + build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ + build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw + build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ + build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw + build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew + build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg + build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g + build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA + build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g + build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A + build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg + build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg + build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ + build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g + build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw + build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ + build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA + build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA + build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw + build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g + build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA + build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA + build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA + build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg + build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw + build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA + build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ + build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w + build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ + build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg + build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A + build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw + build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA + build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA + build-linux/opt: BdawADUPSemriSIoDXxsog + build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q + build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg + build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg + build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw + build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ + build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg + build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ + build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA + build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA + build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg + build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A + build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw + build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ + build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q + build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g + build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ + build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg + build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw + build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA + build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg + build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag + build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA + build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ + build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ + build-linux64/opt: CnU_i566R5K7uv3abLX7Lg + build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w + build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg + build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw + build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A + build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA + build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw + build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ + build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg + build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ + build-macosx64/opt: cvDxNoAQSomchCCS8gkORA + build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ + build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw + build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ + build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw + build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg + build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg + build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w + build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA + build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg + build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ + build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ + build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw + build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA + build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q + build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw + build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w + build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw + build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg + build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ + build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A + build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w + build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A + build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w + build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ + build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ + build-win32/opt: bH1IItXnRei0TXIIwdSdYA + build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw + build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw + build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ + build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w + build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg + build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ + build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew + build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q + build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw + build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q + build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw + build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA + build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg + build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw + build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg + build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w + build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ + build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg + build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA + build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag + build-win64/debug: M6NAJyEbTdWnWikR0Bok8w + build-win64/opt: O1vuo0zzRRmEs6qAB8VluA + condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ + condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg + condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA + condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw + condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g + condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q + condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A + condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw + diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg + diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ + fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg + fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ + fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA + fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A + fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ + fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew + fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q + fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ + fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw + fetch-cmake: F5kmkERhSiCqvcUDtQCb6A + fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg + fetch-fix-stacks: G606hoRUSxqohchf64oJBw + fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg + fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w + fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg + fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A + fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw + fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ + fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw + fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg + fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q + fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww + fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA + fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg + fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA + fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ + fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA + fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA + fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA + fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ + fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw + fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA + fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA + fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw + fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww + fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA + fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w + fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew + fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog + fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA + fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A + fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA + fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA + fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g + fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ + fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA + fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A + fetch-ninja: cuJolDCYQ3uinL2CwlQviQ + fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA + fetch-octane: dLW609SGSAaOz15ShsFIpw + fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw + fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA + fetch-tup: dMdjMYuLQ5e-2r0piAVT9A + fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg + fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg + fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w + fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q + fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw + fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A + fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA + fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg + fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q + fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q + fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw + fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ + generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A + generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA + generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ + generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g + generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA + generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg + github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ + hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg + hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA + instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ + instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg + instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw + instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ + instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw + instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g + l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ + l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw + l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q + l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w + l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ + packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg + packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ + packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA + packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw + packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A + packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w + packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA + packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg + packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg + packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ + packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q + packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg + packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw + packages-deb7-atk: SHQacTunSMePv5M0Hbho9g + packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ + packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA + packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ + packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg + packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA + packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw + packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw + packages-deb7-git: EE2WtGanS-Oiqiuln372lA + packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg + packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA + packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ + packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ + packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A + packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg + packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA + packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw + packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ + packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A + packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw + packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A + packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA + packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg + packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA + packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A + packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ + packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ + packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ + packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg + repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw + repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg + repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA + repackage-linux64/opt: JBjHCaL6TNWej-riozHffg + repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA + repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw + repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg + repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig + repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg + repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg + repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg + repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw + repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w + repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw + repackage-win32/opt: cGFA0orpTCibP6cwsr06lA + repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg + repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg + repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w + source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA + source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g + source-test-doc-generate: atnQNEOCRrW9diFfjykfmw + source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ + source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ + source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg + source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g + source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow + source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA + source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g + source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ + source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q + source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A + source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA + source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A + source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ + source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ + source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA + source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g + source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ + source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A + source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ + source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg + source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g + source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A + source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g + source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg + source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g + source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw + source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw + source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow + source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw + source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA + source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ + source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA + source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ + source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ + source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q + source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw + source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw + source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA + source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw + source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw + source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw + source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g + source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw + source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ + source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg + source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA + spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw + spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw + spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ + spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA + spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w + spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg + spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg + spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ + spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ + spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw + spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA + spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw + spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA + spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ + spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA + spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw + spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg + spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA + spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ + spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw + spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw + static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA + static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ + test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA + test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg + test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ + test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw + test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw + test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ + test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w + test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw + test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ + test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA + test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ + test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg + test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww + test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w + test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw + test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ + test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ + test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ + test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g + test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg + test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw + test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw + test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ + test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ + test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw + test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q + test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg + test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g + test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA + test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ + test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw + test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg + test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg + test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A + test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw + test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg + test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA + test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A + test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw + test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w + test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw + test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g + test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw + test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ + test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q + test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw + test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g + test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ + test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg + test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg + test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg + test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA + test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw + test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg + test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w + test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g + test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g + test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ + test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ + test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw + test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g + test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg + test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw + test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w + test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg + test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q + test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA + test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A + test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw + test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw + test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw + test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg + test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw + test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A + test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw + test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q + test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg + test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ + test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw + test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg + test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg + test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw + test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg + test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw + test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ + test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A + test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg + test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow + test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA + test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA + test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A + test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw + test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg + test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg + test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA + test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A + test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA + test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w + test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw + test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA + test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg + test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw + test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w + test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA + test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g + test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw + test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg + test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw + test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA + test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w + test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow + test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w + test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ + test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA + test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA + test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg + test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A + test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow + test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw + test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg + test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg + test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ + test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw + test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw + test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng + test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA + test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA + test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw + test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA + test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog + test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg + test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw + test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg + test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew + test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw + test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q + test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg + test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ + test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g + test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA + test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ + test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg + test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A + test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg + test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ + test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg + test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ + test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw + test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q + test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg + test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA + test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw + test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA + test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog + test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A + test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA + test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww + test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA + test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w + test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q + test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw + test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg + test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw + test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg + test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw + test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g + test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ + test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ + test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ + test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA + test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw + test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ + test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ + test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w + test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA + test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA + test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg + test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA + test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA + test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q + test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng + test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w + test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw + test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg + test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g + test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ + test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA + test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ + test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ + test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg + test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g + test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA + test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A + test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ + test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg + test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ + test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ + test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw + test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg + test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA + test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg + test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA + test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA + test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg + test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA + test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA + test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ + test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg + test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA + test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw + test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw + test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ + test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg + test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA + test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ + test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ + test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg + test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg + test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA + test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw + test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg + test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA + test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw + test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA + test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A + test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw + test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg + test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g + test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g + test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A + test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA + test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw + test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ + test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg + test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg + test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg + test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg + test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA + test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q + test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg + test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q + test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA + test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A + test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q + test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww + test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA + test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ + test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ + test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA + test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew + test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA + test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA + test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA + test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ + test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg + test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg + test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA + test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ + test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw + test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA + test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ + test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ + test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA + test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA + test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg + test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg + test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw + test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg + test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg + test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw + test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg + test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw + test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA + test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA + test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w + test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ + test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA + test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg + test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA + test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng + test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg + test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg + test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ + test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA + test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw + test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw + test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA + test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA + test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw + test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w + test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw + test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w + test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg + test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ + test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw + test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA + test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw + test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA + test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg + test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A + test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ + test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg + test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA + test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ + test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ + test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w + test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw + test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A + test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA + test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q + test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA + test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA + test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow + test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg + test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA + test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q + test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA + test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g + test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q + test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw + test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw + test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ + test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw + test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ + test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ + test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow + test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw + test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg + test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg + test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA + test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg + test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng + test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg + test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw + test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA + test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig + test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw + test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A + test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw + test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw + test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg + test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg + test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g + test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ + test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ + test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA + test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ + test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA + test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA + test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g + test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg + test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ + test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw + test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA + test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q + test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ + test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg + test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA + test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA + test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig + test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ + test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg + test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q + test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA + test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg + test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ + test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA + test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g + test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ + test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg + test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw + test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg + test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q + test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA + test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA + test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg + test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ + test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA + test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg + test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A + test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA + test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw + test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA + test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw + test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg + test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w + test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA + test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A + test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA + test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA + test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA + test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA + test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g + test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ + test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA + test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg + test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w + test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ + test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA + test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA + test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg + test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ + test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ + test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w + test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg + test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ + test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg + test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA + test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg + test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w + test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA + test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA + test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg + test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ + test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw + test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ + test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ + test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA + test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w + test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg + test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A + test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA + test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ + test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw + test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q + test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A + test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ + test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw + test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ + test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg + test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw + test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A + test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA + test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg + test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA + test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw + test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww + test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA + test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ + test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ + test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg + test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA + test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q + test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A + test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg + test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA + test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ + test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw + test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA + test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw + test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg + test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A + test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A + test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg + test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA + test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ + test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A + test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA + test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg + test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ + test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ + test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g + test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA + test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA + test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g + test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA + test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA + test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw + test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA + test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA + test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA + test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg + test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA + test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg + test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw + test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA + test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ + test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw + test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ + test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q + test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA + test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw + test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw + test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ + test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA + test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g + test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg + test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg + test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg + test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA + test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og + test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ + test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg + test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA + test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA + test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw + test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ + test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ + test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw + test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA + test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw + test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA + test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg + test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g + test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g + test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ + test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA + test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw + test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ + test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA + test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA + test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA + test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q + test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg + test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw + test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q + test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA + test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA + test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ + test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA + test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g + test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA + test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg + test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg + test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ + test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg + test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q + test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA + test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ + test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA + test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ + test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ + test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg + test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA + test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g + test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg + test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA + test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw + test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw + test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g + test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA + test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q + test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw + test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA + test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg + test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA + test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg + test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw + test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw + test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w + test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g + test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ + test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw + test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ + test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw + test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw + test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ + test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA + test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg + test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw + test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA + test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w + test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg + test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw + test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg + test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w + test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA + test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ + test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A + test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg + test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw + test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg + test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg + test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw + test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw + test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA + test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg + test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A + test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA + test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ + test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg + test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ + test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg + test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA + test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ + test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q + test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g + test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA + test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg + test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA + test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg + test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA + test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA + test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A + test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg + test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ + test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg + test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw + test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA + test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg + test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ + test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA + test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A + test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ + test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA + test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw + test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ + test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg + test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ + test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg + test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ + test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw + test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw + test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg + test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA + test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg + test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ + test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g + test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg + test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g + test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w + test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w + test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw + test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA + test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg + test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ + test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w + test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg + test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA + test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A + test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q + test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA + test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg + test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q + test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ + test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ + test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww + test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ + test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg + test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw + test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ + test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA + test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ + test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ + test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA + test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA + test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA + test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w + test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw + test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ + test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw + test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA + test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA + test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew + test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog + test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw + test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q + test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg + test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w + test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg + test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q + test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw + test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ + test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow + test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w + test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg + test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w + test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ + test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA + test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw + test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw + test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ + test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw + test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA + test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ + test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg + test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw + test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg + test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw + test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw + test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg + test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w + test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ + test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw + test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg + test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg + test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw + test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w + test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA + test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A + test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg + test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA + test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog + test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg + test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw + test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA + test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ + test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA + test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA + test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw + test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA + test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q + test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw + test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q + test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw + test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ + test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g + test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw + test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg + test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw + test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw + test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A + test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA + test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg + test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ + test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg + test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg + test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng + test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg + test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA + test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg + test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ + test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug + test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg + test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA + test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg + test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g + test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA + test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g + test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ + test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w + test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg + test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA + test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA + test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w + test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q + test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw + test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog + test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA + test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA + test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew + test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA + test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A + test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ + test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg + test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg + test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ + test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA + test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ + test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA + test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g + test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew + test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA + test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA + test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q + test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ + test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw + test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ + test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA + test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA + test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ + test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q + test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A + test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw + test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ + test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ + test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA + test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw + test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA + test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg + test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA + test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw + test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA + test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g + test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg + test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog + test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ + test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg + test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA + test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw + test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w + test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg + test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA + test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ + test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig + test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg + test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA + test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g + test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ + test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ + test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag + test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA + test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w + test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA + test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg + test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ + test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA + test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw + test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA + test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw + test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ + test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw + test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw + test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw + test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg + test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ + test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg + test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w + test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ + test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ + test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg + test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA + test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg + test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA + test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw + test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw + test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg + test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg + test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw + test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w + test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug + test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA + test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g + test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ + test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ + test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw + test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A + test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g + test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg + test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw + test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ + test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A + test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A + test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw + test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA + test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ + test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A + test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw + test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q + test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg + test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A + test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g + test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA + test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w + test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA + test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g + test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ + test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA + test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA + test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w + test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w + test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg + test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg + test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg + test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw + test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA + test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA + test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g + test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q + test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw + test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og + test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg + test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw + test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA + test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog + test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw + test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA + test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag + test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg + test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog + test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA + test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g + test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g + test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ + test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw + test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw + test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg + test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA + test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg + test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ + test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ + test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw + test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng + test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA + test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA + test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw + test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw + test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA + test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA + test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ + test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ + test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw + test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA + test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ + test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ + test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw + test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg + test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw + test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g + test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ + test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A + test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg + test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q + test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g + test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw + test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw + test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ + test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw + test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw + test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw + test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA + test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag + test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg + test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg + test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q + test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg + test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw + test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw + test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA + test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw + test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A + test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw + test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA + test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w + test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ + test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw + test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w + test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ + test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw + test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A + test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw + test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew + test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg + test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw + test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw + test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q + test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg + test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA + test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA + test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ + test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw + test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA + test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ + test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ + test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw + test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g + test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA + test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A + test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A + test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA + test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA + test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q + test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw + test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw + test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA + test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw + test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ + test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w + test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ + test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg + test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ + test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w + test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg + test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw + test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g + test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg + test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw + test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w + test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA + test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ + test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA + test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw + test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ + test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA + test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw + test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA + test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg + test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ + test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q + test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA + test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw + test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA + test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw + test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA + test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ + test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg + test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg + test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A + test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg + test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw + test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA + test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ + test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg + test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw + test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg + test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg + test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw + test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA + test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw + test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg + test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q + test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ + test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA + test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ + test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g + test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg + test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA + test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w + test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw + test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w + test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ + test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ + test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA + test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ + test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w + test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw + test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A + test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg + test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q + test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw + test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw + test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw + test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg + test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ + test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ + test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw + test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g + test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A + test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw + test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ + test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug + test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw + test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw + test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg + test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw + test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg + test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw + test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA + test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA + test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw + test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog + test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A + test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg + test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA + test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ + test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ + test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg + test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw + test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA + test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ + test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA + test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w + test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA + test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ + test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ + test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ + test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig + test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw + test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA + test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg + test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A + test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg + test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw + test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA + test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA + test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A + test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w + test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA + test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg + test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q + test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw + test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q + test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw + test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA + test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA + test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ + test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw + test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw + test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w + test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g + test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w + test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg + test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ + test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg + test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg + test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg + test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw + test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w + test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg + test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw + test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g + test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA + test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q + test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw + test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg + test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA + test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q + test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw + test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA + test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ + test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg + test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w + test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w + test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg + test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw + test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw + test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA + test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA + test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw + test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg + test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g + test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ + test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g + test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ + test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ + test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g + test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA + test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ + test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg + test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g + test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ + test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw + test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ + test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w + test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw + test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw + test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg + test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA + test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw + test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw + test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA + test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg + test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA + test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA + test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q + test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw + test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg + test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg + test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw + test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg + test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA + test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw + test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w + test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A + test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg + test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ + test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ + test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg + test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw + test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q + test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g + test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA + test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA + test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw + test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw + test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ + test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg + test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg + test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA + test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q + test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w + test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ + test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw + test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow + test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw + test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA + test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ + test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg + test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw + test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA + test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA + test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg + test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA + test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA + test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA + test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A + test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg + test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g + test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ + test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng + test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw + test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag + test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ + test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g + test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg + test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw + test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg + test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA + test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw + test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw + test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg + test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg + test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw + test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w + test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q + test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA + test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg + test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA + test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw + test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA + test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA + test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg + test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw + test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q + test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw + test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big + test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ + test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ + test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA + test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w + test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA + test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA + test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ + test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ + test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA + test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw + test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw + test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A + test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg + test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg + test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg + test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg + test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg + test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w + test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA + test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w + test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q + test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w + test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA + test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ + test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg + test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA + test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ + test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA + test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q + test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ + test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA + test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA + test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q + test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig + test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA + test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA + test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw + test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA + test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA + test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA + test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA + test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A + test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw + test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw + test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g + test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ + test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw + test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg + test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw + test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg + test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA + test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A + test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A + test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA + test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA + test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A + test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA + test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g + test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ + test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw + test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA + test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ + test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg + test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ + test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ + test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ + test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg + test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A + test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA + test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw + test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A + test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw + test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow + test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg + test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw + test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A + test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng + test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw + test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ + test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w + test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A + test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ + test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA + test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg + test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA + test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg + test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw + test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw + test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg + test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g + test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw + test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A + test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w + test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww + test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ + test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA + test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q + test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg + test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w + test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ + test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q + test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ + test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew + test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ + test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA + test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w + test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w + test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA + test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug + test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg + test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q + test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A + test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw + test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA + test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w + test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw + test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q + test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ + test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA + test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw + test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA + test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q + test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w + test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw + test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w + test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw + test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg + test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw + test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g + test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ + test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w + test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw + test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w + test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg + test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A + test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA + test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ + test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA + test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw + test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA + test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g + test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw + test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q + test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw + test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ + test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ + test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA + test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q + test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g + test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA + test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw + test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q + test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA + test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w + test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA + test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA + test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg + test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA + test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ + test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA + test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg + test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ + test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A + test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg + test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ + test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA + test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ + test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw + test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw + test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA + test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ + test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg + test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg + test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg + test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw + test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA + test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug + test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ + test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug + test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA + test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA + test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw + test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w + test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ + test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q + test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A + test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w + test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug + test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog + test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw + test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw + test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA + test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ + test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA + test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw + test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw + test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA + test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg + test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew + test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww + test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw + test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A + test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ + test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw + test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ + test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg + test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA + test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w + test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ + test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ + test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ + test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw + test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw + test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg + test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg + test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw + test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ + test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA + test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A + test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q + test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng + test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA + test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w + test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw + test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg + test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ + test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ + test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw + test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA + test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA + test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ + test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww + test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA + test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg + test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w + test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA + test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ + test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ + test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg + test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg + test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw + test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw + test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw + test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg + test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw + test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA + test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw + test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w + test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw + test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw + test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA + test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w + test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw + test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA + test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA + test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew + test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw + test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw + test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg + test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A + test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw + test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g + test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw + test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A + test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA + test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ + test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw + test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw + test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA + test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg + test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig + test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA + test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ + test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg + test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg + test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA + test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ + test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g + test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ + test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ + test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA + test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ + test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw + test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg + test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ + test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ + test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA + test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg + test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ + test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ + test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA + test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw + test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA + test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw + test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA + test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA + test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg + test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA + test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw + test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw + test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA + test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ + test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w + test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA + test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA + test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg + test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg + test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg + test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g + test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA + test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w + test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g + test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg + test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ + test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A + test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w + test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ + test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ + test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w + test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg + test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew + test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg + test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ + test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg + test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw + test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ + test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA + test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA + test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg + test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw + test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw + test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA + test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ + test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg + test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA + test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg + test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ + test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA + test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg + test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA + test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA + test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ + test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw + test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA + test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA + test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw + test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g + test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw + test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw + test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w + test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA + test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw + test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg + test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g + test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ + test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q + test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ + test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA + test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w + test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg + test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA + test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ + test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA + test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw + test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg + test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w + test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q + test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw + test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag + test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q + test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw + test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng + test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ + test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA + test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA + test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ + test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ + test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng + test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA + test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA + test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ + test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg + test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ + test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw + test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg + test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg + test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw + test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg + test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q + test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q + test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A + test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA + test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg + test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q + test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA + test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA + test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q + test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg + test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA + test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ + test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg + test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ + test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ + test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ + test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q + test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ + test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg + test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA + test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw + test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg + test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA + test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A + test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg + test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA + test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA + test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw + test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw + test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ + test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw + test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A + test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w + test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA + test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ + test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg + test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ + test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw + test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw + test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ + test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA + test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng + test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ + test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q + test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg + test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw + test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ + test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw + test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g + test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ + test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw + test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA + test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ + test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q + test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg + test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A + test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q + test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA + test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg + test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw + test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg + test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ + test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ + test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg + test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA + test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw + test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw + test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ + test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw + test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ + test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw + test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw + test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg + test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg + test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw + test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw + test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg + test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q + test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA + test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g + test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g + test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w + test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A + test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ + test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ + test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w + test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw + test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg + test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA + test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA + test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw + test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ + test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w + test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w + test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w + test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw + test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g + test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw + test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ + test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA + test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig + test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ + test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg + test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g + test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ + test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw + test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ + test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA + test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg + test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw + test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ + test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q + test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA + test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q + test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg + test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w + test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg + test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA + test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA + test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw + test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA + test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA + test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA + test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw + test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ + test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg + test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA + test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw + test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ + test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q + test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA + test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ + test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ + test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A + test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg + test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw + test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw + test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg + test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg + test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q + test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g + test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw + test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A + test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw + test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw + test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg + test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw + test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw + test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA + test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ + test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg + test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw + test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ + test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ + test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A + test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A + test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g + test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w + test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA + test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg + test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA + test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A + test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA + test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w + test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ + test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg + test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ + test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg + test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA + test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg + test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig + test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ + test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw + test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ + test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w + test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw + test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ + test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg + test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw + test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ + test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg + test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA + test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ + test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow + test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA + test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw + test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg + test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg + test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw + test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw + test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA + test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA + test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw + test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ + test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA + test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA + test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw + test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ + test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw + test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw + test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw + test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA + test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA + test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg + test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA + test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA + test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w + test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q + test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA + test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ + test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA + test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA + test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g + test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw + test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg + test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA + test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg + test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA + test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q + test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw + test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ + test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw + test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw + test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA + test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g + test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q + test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw + test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ + test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg + test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw + test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg + test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ + test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ + test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw + test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ + test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA + test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA + test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw + test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow + test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ + test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q + test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA + test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w + test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g + test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg + test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg + test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ + test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w + test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA + test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg + test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg + test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ + test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ + test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ + test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA + test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw + test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A + test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw + test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w + test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A + test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA + test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ + test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg + test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow + test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug + test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g + test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw + test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA + test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw + test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg + test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg + test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw + test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA + test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw + test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A + test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw + test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog + test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ + test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ + test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg + test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg + test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g + test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g + test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw + test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ + test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw + test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A + test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g + test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A + test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q + test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ + test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ + test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg + test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ + test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w + test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig + test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg + test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA + test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ + test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw + test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA + test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg + test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA + test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ + test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg + test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ + test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ + test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg + test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg + test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA + test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA + test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA + test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A + test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ + test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw + test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA + test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ + test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA + test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg + test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A + test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA + test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g + test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg + test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw + test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig + test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA + test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA + test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ + test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg + test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw + test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA + test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A + test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg + test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA + test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q + test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw + test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA + test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A + test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ + test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA + test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg + test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw + test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ + test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw + test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA + test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ + test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw + test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA + test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA + test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww + test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw + test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w + test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ + test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA + test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA + test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA + test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA + test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q + test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw + test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw + test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q + test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg + test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A + test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ + test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg + test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ + test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw + test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA + test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA + test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w + test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA + test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow + test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA + test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw + test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw + test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ + test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg + test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ + test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ + test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ + test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw + test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw + test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug + test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q + test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g + test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA + test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg + test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA + test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ + test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA + test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w + test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA + test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w + test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA + test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg + test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g + test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg + test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ + test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig + test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA + test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA + test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ + test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw + test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA + test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw + test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA + test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ + test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ + test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g + test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg + test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ + test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ + test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A + test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA + test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw + test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg + test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ + test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw + test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w + test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg + test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw + test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ + test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew + test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA + test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA + test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg + test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q + test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg + test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw + test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg + test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ + test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w + test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w + test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w + test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg + test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw + test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg + test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA + test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw + test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw + test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA + test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw + test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg + test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ + test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug + test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag + test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA + test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA + test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA + test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ + test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A + test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg + test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA + test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A + test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA + test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA + test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw + test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ + test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw + test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ + test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA + test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ + test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g + test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A + test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw + test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw + test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA + test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ + test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA + test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw + test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg + test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg + test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ + test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q + test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w + test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA + test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw + test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw + test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ + test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ + test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg + test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g + test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA + test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g + test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA + test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ + test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg + test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ + test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw + test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA + test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ + test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ + test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw + test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg + test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg + test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ + test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg + test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw + test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw + test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw + test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA + test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ + test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ + test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ + test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g + test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg + test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw + test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw + test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA + test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw + test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw + test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A + test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA + test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw + test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw + test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig + test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ + test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ + test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg + test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA + test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A + test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg + test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg + test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA + test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g + test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew + test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ + test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw + test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA + test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w + test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ + test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw + test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ + test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg + test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA + test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A + test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw + test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ + test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ + test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q + test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ + test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng + test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA + test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg + test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg + test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw + test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g + test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw + test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A + test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ + test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw + test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg + test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw + test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ + test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg + test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ + test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w + test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA + test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw + test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw + test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ + test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg + test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw + test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ + test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg + test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA + test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw + test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw + test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw + test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw + test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA + test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA + test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw + test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA + test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg + test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA + test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ + test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg + test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw + test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg + test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw + test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw + test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA + test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw + test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog + test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ + test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw + test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ + test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw + test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw + test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw + test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw + test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA + test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q + test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA + test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ + test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA + test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg + test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w + test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA + test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw + test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw + test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw + test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA + test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw + test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA + test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg + test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ + test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ + test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g + test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA + test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA + test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ + test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw + test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA + test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ + test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg + test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w + test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg + test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q + test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw + test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA + test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ + test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA + test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg + test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw + test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg + test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ + test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ + test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA + test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ + test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw + test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw + test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw + test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg + test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ + test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g + test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g + test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA + test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg + test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg + test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ + test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q + test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw + test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g + test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw + test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA + test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag + test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ + test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg + test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA + test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A + test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw + test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw + test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg + test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA + test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA + test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w + test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA + test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q + test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA + test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA + test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w + test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw + test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ + test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A + test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA + test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A + test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A + test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw + test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g + test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw + test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA + test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA + test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q + test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg + test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q + test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A + test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w + test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA + test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA + test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ + test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow + test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog + test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw + test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA + test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw + test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w + test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA + test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg + test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA + test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA + test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ + test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ + test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug + test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA + test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw + test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg + test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g + test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw + test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og + test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA + test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA + test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA + test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg + test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ + test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw + test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw + test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw + test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q + test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q + test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg + test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA + test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w + test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw + test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ + test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q + test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ + test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ + test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w + test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w + test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw + test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA + test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA + test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA + test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA + test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA + test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA + test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg + test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ + test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q + test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww + test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w + test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ + test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ + test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA + test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA + test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA + test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ + test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg + test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A + test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg + test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw + test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg + test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg + test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA + test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw + test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw + test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ + test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA + test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw + test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ + test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA + test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg + test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ + test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw + test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q + test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g + test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ + test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A + test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA + test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA + test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA + test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ + test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg + test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A + test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg + test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ + test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw + test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ + test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ + toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w + toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ + toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w + toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA + toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA + toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA + toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg + toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA + toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ + toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q + toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA + toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg + toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A + toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w + toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw + toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ + toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw + toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw + toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg + toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg + toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ + toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ + toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw + toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA + toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA + toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ + toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ + toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw + toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A + toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA + toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA + toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA + toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw + toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w + toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA + toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg + toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA + toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ + toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w + toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ + toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg + toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA + toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw + toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg + toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA + toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg + toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw + toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA + toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw + toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw + toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw + toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g + toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g + toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g + toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg + toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g + toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA + toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA + toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg + toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ + toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw + toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g + toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ + toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA + toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g + toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw + toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g + toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg + toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA + toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w + toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA + toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw + toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA + toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ + toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ + toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q + toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ + toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ + toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ + toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA + toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw + toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ + toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw + upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q + upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ + upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA + upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw + upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw + upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg + valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w + webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA + webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw + webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA + webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw + webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg + webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA + webrender-linux-debug: I70EWbeASBqeYezqCFKzEw + webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ + webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA + webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg + webrender-windows: OTEwx1MtTnmi7bxuE9hYIw + webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg + webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA + webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg +filters: + - target_tasks_method +head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846 +head_repository: https://hg.mozilla.org/releases/mozilla-release +head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846 +hg_branch: default +level: "3" +message: "" +moz_build_date: "20200227094956" +next_version: null +optimize_target_tasks: true +owner: cron@noreply.mozilla.org +phabricator_diff: null +project: mozilla-release +pushdate: 1582796996 +pushlog_id: "37162" +release_enable_emefree: false +release_enable_partners: false +release_eta: "" +release_history: {} +release_partner_build_number: 1 +release_partner_config: {} +release_partners: [] +release_product: null +release_type: release +required_signoffs: [] +signoff_urls: {} +target_tasks_method: ship_geckoview +tasks_for: cron +try_mode: null +try_options: null +try_task_config: {} +version: "75.0" diff --git a/taskcluster/test/params/try.yml b/taskcluster/test/params/try.yml new file mode 100644 index 0000000000..7fddf517f3 --- /dev/null +++ b/taskcluster/test/params/try.yml @@ -0,0 +1,59 @@ +--- +base_repository: https://hg.mozilla.org/mozilla-central +build_date: 1509479809 +build_number: 1 +app_version: 60.0a1 +version: 60.0a1 +next_version: null +do_not_optimize: [] +enable_always_target: true +existing_tasks: {} +filters: + - target_tasks_method +head_ref: 482ccd66d49e0e4a0d260ca872f770df4983ccea +head_repository: https://hg.mozilla.org/try +head_rev: 482ccd66d49e0e4a0d260ca872f770df4983ccea +hg_branch: default +level: "1" +message: "try: -b do -p linux64 -u none" +moz_build_date: "20171031195649" +optimize_target_tasks: false +owner: sfink@mozilla.com +project: try +pushdate: 1509479809 +pushlog_id: "232079" +release_history: {} +release_eta: "" +release_enable_partners: false +release_partners: [] +release_partner_build_number: 1 +release_partner_config: null +release_enable_emefree: false +target_tasks_method: try_tasks +try_mode: try_option_syntax +try_options: + artifact: false + build_types: do + env: null + include_nightly: false + interactive: false + jobs: null + raptor: null + raptor_trigger_tests: null + no_retry: false + notifications: null + platforms: linux64 + profile: false + tag: null + talos: none + talos_trigger_tests: 1 + taskcluster_worker: false + trigger_tests: 1 + unittests: none +try_task_config: {} +release_type: "nightly" +release_product: null +required_signoffs: [] +signoff_urls: {} +phabricator_diff: +tasks_for: hg-push diff --git a/taskcluster/test/python.ini b/taskcluster/test/python.ini new file mode 100644 index 0000000000..637f250af2 --- /dev/null +++ b/taskcluster/test/python.ini @@ -0,0 +1,8 @@ +[DEFAULT] +subsuite = ci + +[test_autoland.py] +[test_autoland_backstop.py] +[test_generate_params.py] +[test_mach_try_auto.py] +[test_mozilla_central.py] diff --git a/taskcluster/test/test_autoland.py b/taskcluster/test/test_autoland.py new file mode 100644 index 0000000000..05d181620a --- /dev/null +++ b/taskcluster/test/test_autoland.py @@ -0,0 +1,48 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import pytest +from mozunit import main + +pytestmark = pytest.mark.slow +PARAMS = { + "head_repository": "https://hg.mozilla.org/integration/autoland", + "project": "autoland", + # These ensure this isn't considered a backstop. The pushdate must + # be slightly higher than the one in data/pushes.json, and + # pushlog_id must not be a multiple of 10. + "pushdate": 1593029536, + "pushlog_id": "2", +} + + +def test_generate_graph(optimized_task_graph): + """Simply tests that generating the graph does not fail.""" + assert len(optimized_task_graph.tasks) > 0 + + +@pytest.mark.parametrize( + "func", + ( + pytest.param( + lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"], + id="no fuzzing builds", + ), + pytest.param( + lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"], + id="no ccov builds", + ), + ), +) +def test_tasks_are_not_scheduled( + optimized_task_graph, filter_tasks, print_dependents, func +): + """Ensure the specified tasks are not scheduled on autoland.""" + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + for t in tasks: + print_dependents(optimized_task_graph, t) + assert tasks == [] + + +if __name__ == "__main__": + main() diff --git a/taskcluster/test/test_autoland_backstop.py b/taskcluster/test/test_autoland_backstop.py new file mode 100644 index 0000000000..55ea11ca4d --- /dev/null +++ b/taskcluster/test/test_autoland_backstop.py @@ -0,0 +1,56 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import pytest +from mozunit import main + +pytestmark = pytest.mark.slow +PARAMS = { + "backstop": True, + "head_repository": "https://hg.mozilla.org/integration/autoland", + "project": "autoland", +} + + +def test_generate_graph(optimized_task_graph): + """Simply tests that generating the graph does not fail.""" + assert len(optimized_task_graph.tasks) > 0 + + +@pytest.mark.parametrize( + "func,min_expected", + ( + pytest.param( + lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"], + 5, + id="fuzzing builds", + ), + ), +) +def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected): + """Ensure the specified tasks are scheduled on mozilla-central.""" + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + assert len(tasks) >= min_expected + + +@pytest.mark.parametrize( + "func", + ( + pytest.param( + lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"], + id="no ccov builds", + ), + ), +) +def test_tasks_are_not_scheduled( + optimized_task_graph, filter_tasks, print_dependents, func +): + """Ensure the specified tasks are not scheduled on autoland.""" + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + for t in tasks: + print_dependents(optimized_task_graph, t) + assert tasks == [] + + +if __name__ == "__main__": + main() diff --git a/taskcluster/test/test_generate_params.py b/taskcluster/test/test_generate_params.py new file mode 100644 index 0000000000..87f1fe341c --- /dev/null +++ b/taskcluster/test/test_generate_params.py @@ -0,0 +1,57 @@ +import json +import os +import subprocess + +import pytest +from gecko_taskgraph import GECKO +from mozunit import main +from taskgraph.taskgraph import TaskGraph + +pytestmark = pytest.mark.slow +PARAMS_DIR = os.path.join(GECKO, "taskcluster", "test", "params") + + +@pytest.fixture(scope="module") +def get_graph_from_spec(tmpdir_factory): + outdir = tmpdir_factory.mktemp("graphs") + + # Use a mach subprocess to leverage the auto parallelization of + # parameters when specifying a directory. + cmd = [ + "./mach", + "taskgraph", + "morphed", + "--json", + f"--parameters={PARAMS_DIR}", + f"--output-file={outdir}/graph.json", + ] + subprocess.run(cmd, cwd=GECKO) + assert len(outdir.listdir()) > 0 + + def inner(param_spec): + outfile = f"{outdir}/graph_{param_spec}.json" + with open(outfile) as fh: + output = fh.read() + try: + return TaskGraph.from_json(json.loads(output))[1] + except ValueError: + return output + + return inner + + +@pytest.mark.parametrize( + "param_spec", [os.path.splitext(p)[0] for p in os.listdir(PARAMS_DIR)] +) +def test_generate_graphs(get_graph_from_spec, param_spec): + ret = get_graph_from_spec(param_spec) + if isinstance(ret, str): + print(ret) + pytest.fail("An exception was raised during graph generation!") + + assert isinstance(ret, TaskGraph) + assert len(ret.tasks) > 0 + + +if __name__ == "__main__": + main() diff --git a/taskcluster/test/test_mach_try_auto.py b/taskcluster/test/test_mach_try_auto.py new file mode 100644 index 0000000000..f26110b57f --- /dev/null +++ b/taskcluster/test/test_mach_try_auto.py @@ -0,0 +1,113 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import pytest +from gecko_taskgraph.util.bugbug import push_schedules +from gecko_taskgraph.util.chunking import BugbugLoader +from mozunit import main +from tryselect.selectors.auto import TRY_AUTO_PARAMETERS + +pytestmark = pytest.mark.slow +PARAMS = TRY_AUTO_PARAMETERS.copy() +PARAMS.update( + { + "head_repository": "https://hg.mozilla.org/try", + "project": "try", + "target_kind": "test", + # These ensure this isn't considered a backstop. The pushdate must + # be slightly higher than the one in data/pushes.json, and + # pushlog_id must not be a multiple of 10. + "pushdate": 1593029536, + "pushlog_id": "2", + } +) + + +def test_generate_graph(optimized_task_graph): + """Simply tests that generating the graph does not fail.""" + assert len(optimized_task_graph.tasks) > 0 + + +def test_only_important_manifests(params, full_task_graph, filter_tasks): + data = push_schedules(params["project"], params["head_rev"]) + important_manifests = { + m + for m, c in data.get("groups", {}).items() + if c >= BugbugLoader.CONFIDENCE_THRESHOLD + } + + # Ensure we don't schedule unimportant manifests. + for task in filter_tasks(full_task_graph, lambda t: t.kind == "test"): + attr = task.attributes.get + + if "test_manifests" in task.attributes: + unimportant = [ + t for t in attr("test_manifests") if t not in important_manifests + ] + + # Manifest scheduling is disabled for mochitest-ally. + if attr("unittest_suite") == "mochitest-a11y": + assert len(unimportant) > 0 + else: + assert unimportant == [] + + +@pytest.mark.parametrize( + "func,min_expected", + ( + pytest.param( + lambda t: ( + t.kind == "test" + and t.attributes["unittest_suite"] == "mochitest-browser-chrome" + ), + 5, + id="mochitest-browser-chrome", + ), + ), +) +def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected): + """Ensure the specified tasks are scheduled on mozilla-central.""" + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + assert len(tasks) >= min_expected + + +@pytest.mark.parametrize( + "func", + ( + pytest.param( + lambda t: t.kind == "build" + and "shippable" in t.attributes["build_platform"], + id="no shippable builds", + ), + pytest.param( + lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"], + id="no fuzzing builds", + ), + pytest.param( + lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"], + id="no ccov builds", + ), + # We should only assert that we have no signed builds on platforms that don't run + # xpcshell tests. + pytest.param( + lambda t: t.kind == "build-signing", + id="no build-signing", + marks=pytest.mark.xfail(reason="some xpcshell tests require signed builds"), + ), + pytest.param( + lambda t: t.kind == "upload-symbols", + id="no upload-symbols", + ), + ), +) +def test_tasks_are_not_scheduled( + optimized_task_graph, filter_tasks, print_dependents, func +): + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + for t in tasks: + print_dependents(optimized_task_graph, t) + assert tasks == [] + + +if __name__ == "__main__": + main() diff --git a/taskcluster/test/test_mozilla_central.py b/taskcluster/test/test_mozilla_central.py new file mode 100644 index 0000000000..696a108db6 --- /dev/null +++ b/taskcluster/test/test_mozilla_central.py @@ -0,0 +1,69 @@ +# Any copyright is dedicated to the public domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +import pytest +from mozunit import main + +pytestmark = pytest.mark.slow +PARAMS = { + "head_repository": "https://hg.mozilla.org/mozilla-central", + "project": "central", +} + + +def test_generate_graph(optimized_task_graph): + """Simply tests that generating the graph does not fail.""" + assert len(optimized_task_graph.tasks) > 0 + + +@pytest.mark.parametrize( + "func,min_expected", + ( + pytest.param( + lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"], + 5, + id="fuzzing builds", + ), + ), +) +def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected): + """Ensure the specified tasks are scheduled on mozilla-central.""" + tasks = [t.label for t in filter_tasks(optimized_task_graph, func)] + print(tasks) + assert len(tasks) >= min_expected + + +def test_test_setting(full_task_graph, filter_tasks): + """Verify that all test tasks' ``test-setting`` object conforms to the schema.""" + from gecko_taskgraph.transforms.test.other import test_setting_description_schema + from taskgraph.util.schema import validate_schema + + tasks = filter_tasks(full_task_graph, lambda t: t.kind == "test") + + failures = [] + for task in tasks: + try: + validate_schema( + test_setting_description_schema, + dict(task.task["extra"]["test-setting"]), + task.label, + ) + except Exception as e: + failures.append(e) + + if failures: + more = None + # Only display a few failures at once. + if len(failures) > 10: + more = len(failures) - 10 + failures = failures[:10] + + failstr = "\n\n" + "\n\n".join(str(e) for e in failures) + if more: + failstr += "\n\n" + f"... and {more} more" + + pytest.fail(f"Task validation errors:{failstr}") + + +if __name__ == "__main__": + main() -- cgit v1.2.3